This document summarizes a microservices meetup hosted by @mosa_siru. Key points include:
1. @mosa_siru is an engineer at DeNA and CTO of Gunosy.
2. The meetup covered Gunosy's architecture with over 45 GitHub repositories, 30 stacks, 10 Go APIs, and 10 Python batch processes using AWS services like Kinesis, Lambda, SQS and API Gateway.
3. Challenges discussed were managing 30 microservices, ensuring API latency below 50ms across availability zones, and handling 10 requests per second with nginx load balancing across 20 servers.
This document summarizes a microservices meetup hosted by @mosa_siru. Key points include:
1. @mosa_siru is an engineer at DeNA and CTO of Gunosy.
2. The meetup covered Gunosy's architecture with over 45 GitHub repositories, 30 stacks, 10 Go APIs, and 10 Python batch processes using AWS services like Kinesis, Lambda, SQS and API Gateway.
3. Challenges discussed were managing 30 microservices, ensuring API latency below 50ms across availability zones, and handling 10 requests per second with nginx load balancing across 20 servers.
Azure Data Box Family Overview and Microsoft Intelligent Edge StrategyTakeshi Fukuhara
?
2019年2月26日に実施した "Azure を利用したインフラのモダナイズ!Azure File Sync と Azure Data Box 特集セミナー" でのセッション資料。Azure Data Boxファミリー概要と、マイクロソフトのインテリジェントエッジ戦略におけるAzure Data Box Ege/Gatewayの位置づけについての説明。Appendixには、Azure StackとAzure Data Box Edgeの比較スライドあり。
This document provides an overview and summary of key releases and features for Azure Kubernetes Service (AKS) in 2019. It begins with introductions from the author and describes the major AKS releases for 2019, including availability zones, multiple node pools, cluster autoscaler, network policy, and more. It also summarizes major releases for Azure Container Registry and discusses upcoming features on the public roadmap. Other related cloud-native projects from Microsoft are listed as well. The document concludes with the author's perspectives on best practices for AKS at the end of 2019.
12. CNIの責務
https://github.com/containernetworking/cni/blob/master/SPEC.md
“A CNI plugin is responsible for inserting a network interface into the
container network namespace (e.g. one end of a veth pair) and
making any necessary changes on the host (e.g. attaching the other
end of the veth into a bridge).
It should then assign the IP to the interface and setup the routes
consistent with the IP Address Management section by invoking
appropriate IPAM plugin”
28. Azure CNI Plugin
バイナリの置き場所
root@aks-default-40839087-vmss000000:/# ll /opt/cni/bin/
total 136816
drwxr-xr-x 2 root root 4096 Feb 22 00:31 ./
drwxr-xr-x 3 root root 4096 Feb 22 00:31 ../
-rwxr-xr-x 1 root root 27844608 Dec 15 16:13 azure-vnet*
-rwxr-xr-x 1 root root 28065792 Dec 15 16:13 azure-vnet-ipam*
-rwxr-xr-x 1 root root 28065792 Dec 15 16:13 azure-vnet-ipamv6*
-rwxr-xr-x 1 root root 5926912 Dec 15 16:13 azure-vnet-telemetry*
-rwxr-xr-x 1 root root 184 Dec 15 16:17 azure-vnet-telemetry.config*
-rwxr-xr-x 1 root root 4028260 Aug 13 2019 bridge*
-rwxr-xr-x 1 root root 10232415 Aug 13 2019 dhcp*
-rwxr-xr-x 1 root root 2856252 Aug 13 2019 flannel*
-rwxr-xr-x 1 root root 3127363 Aug 13 2019 host-device*
-rwxr-xr-x 1 root root 3036768 Aug 13 2019 host-local*
-rwxr-xr-x 1 root root 3572685 Aug 13 2019 ipvlan*
[snip]
29. (補足)Azure CNI Plugin以外のコンポーネント
Pod – Deployment として動くコンポーネント
% k get deploy --all-namespaces -o name
deployment.apps/flux
deployment.apps/flux-memcached
deployment.apps/helm-operator
deployment.apps/gatekeeper-audit
deployment.apps/gatekeeper-controller
deployment.apps/aks-link
deployment.apps/azure-policy
deployment.apps/azure-policy-webhook
deployment.apps/coredns
deployment.apps/coredns-autoscaler
deployment.apps/metrics-server
deployment.apps/omsagent-rs
[aks-link]
マネージドサービス空間にあるMasterとNode
の間とVPNを張り、kubectl execなど、Master
側からのインバウンド通信を実現する
30. (補足) Azure CNI Plugin以外のコンポーネント
Pod – DaemonSet として動くコンポーネント
% k get ds --all-namespaces -o name
daemonset.apps/azure-cni-networkmonitor
daemonset.apps/azure-ip-masq-agent
daemonset.apps/azure-npm
daemonset.apps/kube-proxy
daemonset.apps/omsagent
daemonset.apps/omsagent-win
[azure-cni-networkmonitor]
ネットワーク定義と現状のチェックを行う
(NATルールなど)
[azure-ip-masq-agent]
iptablesを操作し、IPマスカレード対象/除外ア
ドレス範囲を指定する
[azure-npm]
ネットワークポリシを実現する(ポリシエンジ
ンとしてCalicoも選択可能)
[kube-proxy]
API Serverを継続的にウォッチし、ネットワー
ク関連イベントをNodeに適用する(iptablesへ
のEndpoint追加/削除など)
[Source Code]
azure-cni-networkmonitor https://github.com/Azure/azure-container-networking/tree/master/cnms
azure-npm https://github.com/Azure/azure-container-networking/tree/master/npm
ip-masq-agentとkube-proxyはkubernetes upstream
31. (補足)iptables IP-MASQ-AGENT チェイン
クラスタ内通信はIPマスカレードしない
root@aks-default-40839087-vmss000000:/# iptables -t nat -L IP-MASQ-AGENT
Chain IP-MASQ-AGENT (1 references)
target prot opt source destination
RETURN all -- anywhere 10.0.0.0/8 /* ip-masq-agent: local traffic
is not subject to MASQUERADE */
RETURN all -- anywhere 10.240.0.0/16 /* ip-masq-agent: local traffic
is not subject to MASQUERADE */
RETURN all -- anywhere 10.0.0.0/16 /* ip-masq-agent: local traffic
is not subject to MASQUERADE */
MASQUERADE all -- anywhere anywhere /* ip-masq-agent: outbound
traffic is subject to MASQUERADE (must be last in chain) */
37. ホスト名前空間のIPアドレス
IPv4
root@aks-default-40839087-vmss000000:/# ip -f inet a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
qlen 1000
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default
qlen 1000
inet 10.240.0.4/16 brd 10.240.255.255 scope global eth0
valid_lft forever preferred_lft forever
NodeのプライマリIPアドレス
39. ホスト名前空間のインタフェイス
インタフェイスとリンク
root@aks-default-40839087-vmss000000:/# ip -f link a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default
qlen 1000
link/ether 00:0d:3a:ce:6f:5a brd ff:ff:ff:ff:ff:ff
4: azvbdb1c4944b1@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue
state UP group default qlen 1000
link/ether ea:18:de:a3:29:10 brd ff:ff:ff:ff:ff:ff link-netnsid 0
[snip]
ネットワーク名前空間ID: 0とリン
クしている
43. ホスト名前空間のルート
root@aks-default-40839087-vmss000000:/# ip r
default via 10.240.0.1 dev eth0 proto dhcp src 10.240.0.4 metric 100
10.240.0.0/16 dev eth0 proto kernel scope link src 10.240.0.4
10.240.0.6 dev azva9397a1bc49 proto static
10.240.0.7 dev azv8eed0080cd7 proto static
10.240.0.15 dev azvb8eb335c1b9 proto static
10.240.0.20 dev azv2e65b540f01 proto static
[snip]
10.240.0.78 dev azvf7167fe07b1 proto static
10.240.0.79 dev azv72bac978d69 proto static
10.240.0.83 dev azvb33dc95ce90 proto static
10.240.0.86 dev azvb4f8cd7ad4c proto static
10.240.0.88 dev azvbdb1c4944b1 proto static
10.240.0.104 dev azva76d1269bcf proto static
168.63.129.16 via 10.240.0.1 dev eth0 proto dhcp src 10.240.0.4 metric 100
169.254.169.254 via 10.240.0.1 dev eth0 proto dhcp src 10.240.0.4 metric 100
各Podへの静的L3ルートを
持っている
47. eth0
10.240.0.4/16
azvbdb1c4944b1@if3
ea:18:de:a3:29:10
Proxy ARP 有効
Network namespace: cni-e55890ee-
8a42-f19d-ec95-da325db177c8 (id: 0)
eth0@if4
f6:a9:08:d9:cb:2a
10.240.0.88/16
Network namespace: host
Pod
Other Namespaces
Pod
Other IF
Other IF
Pod
Pod
Pod
ホスト側インタフェイスに
IPアドレスは設定不要
デフォルトルートはリンク
ローカルアドレス169.254.1.1
(すべてのPodで共通)
48. ホスト名前空間のARPキャッシュ
root@aks-default-40839087-vmss000000:/# ip n
10.240.1.29 dev eth0 lladdr 12:34:56:78:9a:bc REACHABLE
10.240.0.44 dev azvdb9fa0de861 lladdr fa:85:b2:1c:3e:f9 REACHABLE
10.240.0.83 dev azvb33dc95ce90 lladdr 8e:09:66:32:69:34 REACHABLE
10.240.0.86 dev azvb4f8cd7ad4c lladdr 92:13:97:a0:64:d9 STALE
10.240.0.206 dev eth0 lladdr 12:34:56:78:9a:bc REACHABLE
10.240.0.53 dev azv3c2e0bf260a lladdr a6:03:58:76:30:b4 REACHABLE
10.240.0.1 dev eth0 lladdr 12:34:56:78:9a:bc REACHABLE
10.240.0.158 dev eth0 lladdr 12:34:56:78:9a:bc REACHABLE
10.240.0.241 dev eth0 lladdr 12:34:56:78:9a:bc STALE
10.240.0.88 dev azvbdb1c4944b1 lladdr f6:a9:08:d9:cb:2a REACHABLE
10.240.0.78 dev azvf7167fe07b1 lladdr 72:bb:37:02:5a:0f REACHABLE
[snip]
Nodeを超える場合、宛先MAC
アドレスはAzure SDNになる