【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践日本マイクロソフト株式会社
コンテナをベースとしたプラットフォーム上でのシステム構築において、システムアーキテクチャの設計、構築、運用を効率的に行うために、Kubernetes をラップしてデプロイや運用機能の付加機能をもつ OpenShift を利用することにしました。インフラ運用負荷を軽減する観点から、マイクロソフトのマネージドサービスである Azure Red Hat OpenShift (ARO) を使ってみました。本プラットフォームにおいて、エンタープライズレベルのシステムを稼働させるのに必要になる開発・運用を含めた全体アーキテクチャの概要、選定したソリューションや実現案を紹介します。
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践日本マイクロソフト株式会社
コンテナをベースとしたプラットフォーム上でのシステム構築において、システムアーキテクチャの設計、構築、運用を効率的に行うために、Kubernetes をラップしてデプロイや運用機能の付加機能をもつ OpenShift を利用することにしました。インフラ運用負荷を軽減する観点から、マイクロソフトのマネージドサービスである Azure Red Hat OpenShift (ARO) を使ってみました。本プラットフォームにおいて、エンタープライズレベルのシステムを稼働させるのに必要になる開発・運用を含めた全体アーキテクチャの概要、選定したソリューションや実現案を紹介します。
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の比較スライドあり。
セル生産方式におけるロボットの活用には様々な問題があるが,その一つとして 3 体以上の物体の組み立てが挙げられる.一般に,複数物体を同時に組み立てる際は,対象の部品をそれぞれロボットアームまたは治具でそれぞれ独立に保持することで組み立てを遂行すると考えられる.ただし,この方法ではロボットアームや治具を部品数と同じ数だけ必要とし,部品数が多いほどコスト面や設置スペースの関係で無駄が多くなる.この課題に対して音𣷓らは組み立て対象物に働く接触力等の解析により,治具等で固定されていない対象物が組み立て作業中に運動しにくい状態となる条件を求めた.すなわち,環境中の非把持対象物のロバスト性を考慮して,組み立て作業条件を検討している.本研究ではこの方策に基づいて,複数物体の組み立て作業を単腕マニピュレータで実行することを目的とする.このとき,対象物のロバスト性を考慮することで,仮組状態の複数物体を同時に扱う手法を提案する.作業対象としてパイプジョイントの組み立てを挙げ,簡易な道具を用いることで単腕マニピュレータで複数物体を同時に把持できることを示す.さらに,作業成功率の向上のために RGB-D カメラを用いた物体の位置検出に基づくロボット制御及び動作計画を実装する.
This paper discusses assembly operations using a single manipulator and a parallel gripper to simultaneously
grasp multiple objects and hold the group of temporarily assembled objects. Multiple robots and jigs generally operate
assembly tasks by constraining the target objects mechanically or geometrically to prevent them from moving. It is
necessary to analyze the physical interaction between the objects for such constraints to achieve the tasks with a single
gripper. In this paper, we focus on assembling pipe joints as an example and discuss constraining the motion of the
objects. Our demonstration shows that a simple tool can facilitate holding multiple objects with a single gripper.
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matchingharmonylab
公開URL:https://arxiv.org/pdf/2404.19174
出典:Guilherme Potje, Felipe Cadar, Andre Araujo, Renato Martins, Erickson R. ascimento: XFeat: Accelerated Features for Lightweight Image Matching, Proceedings of the 2024 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) (2023)
概要:リソース効率に優れた特徴点マッチングのための軽量なアーキテクチャ「XFeat(Accelerated Features)」を提案します。手法は、局所的な特徴点の検出、抽出、マッチングのための畳み込みニューラルネットワークの基本的な設計を再検討します。特に、リソースが限られたデバイス向けに迅速かつ堅牢なアルゴリズムが必要とされるため、解像度を可能な限り高く保ちながら、ネットワークのチャネル数を制限します。さらに、スパース下でのマッチングを選択できる設計となっており、ナビゲーションやARなどのアプリケーションに適しています。XFeatは、高速かつ同等以上の精度を実現し、一般的なラップトップのCPU上でリアルタイムで動作します。
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になる