3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Oracle Cloud] Kubernetes クラスタを Quick Create したときの構成を確認してみた

Last updated at Posted at 2020-05-17

はじめに

Oracle Cloud では、Kubernetes マネージドサービスの Oracle Container Engine for Kubernetes (略してOKE) が提供されています。OKE は Quick Createで簡単に Kubernetes クラスタを構成できるので、使い始めのユーザー体験が良いです。Oracle によってマネージされた Kubernetes クラスタを簡単に使い始められます。

Quick Createで簡単に使い始められるのは良いですが、実際どんなリソースがどのように構成されているのでしょうか、気になったので自分が興味のある範囲でリソースを調査した結果を残しておきます。

構成図

Quick Createで作成されたときの、OCI 上の構成図を載せます。次のような環境が作成されます。

  • VCN : OKE としての VCN。既存の VCN を利用することも可能
  • Subnet : ロードバランサーが稼働する Public Subnet と、Node が稼働する Private Subnet
  • Node : コンテナが稼働する Node は、指定した数分自動構成

1589682176427.png

OKE Quick Create

OCI のメニューから、OKE を選択します。

1586675854806.png

Cluster を Create します

1586675881761.png

Quick Create で、Launch Workflow を選びます

1586675912930.png

適当にパラメータを入力します。

screencapture-console-ap-tokyo-1-oraclecloud-containers-clusters-quick-2020-04-12-16_27_41.png

Create を押します。

1586676542199.png

Close を押します。

1586676552511.png

OCI上で自動作成されたリソース確認

Quick Create を使って、OKE クラスタを作成しました。OKE クラスタを含めて、OCI 上で作成されたリソースを確認します。OKE の詳細画面を確認すると、Node を構成するための Node Pools があります。Node Pools は、OKE の中の概念となっていて、Node として動かす Compute Instance を何個動かすのか、Image は何を使うのか、といったものを管理します。Node Pools 上で、Node の数を変更することで、スケールを変えられます。

1586699543352.png

Compute Instance の一覧に、oke-XXX という名前のインスタンスが見えます。Oracle Linux 7.7 で、Private Subnet 上に3個のインスタンスが作成されています。Fault Domain は正しくばらけています。

1589668085938.png

Compute Instance の詳細画面を見ます。Network Security Group は設定されていないので、Security List で ファイアウォール制御されている構成です。手動で Network Security Group を割り当てるのは可能ですが、Node Pool としては設定出来ないのでやめたほうが良さそうです。

1589668015645.png

自動作成された Node の Boot Volume は 47GB固定となっています。これは変更できないと思います。ストレージが必要な場合は、Object Storage や File Storage を使用すると良いでしょう。

1589671601812.png

仮想ネットワークの VCN が新たに作成されています。

1589667898731.png

Private と Public Subnet が1つずつ作成されています。

1589667937784.png

Node の中身を確認

OKE で作成した Node に、SSH が可能です。VCN の Public Subnet に適当に踏み台サーバーを作成して、OKE Node へ SSH ログインしましょう。

[opc@oke-bastion ~]$ ssh opc@10.0.10.3
Oracle Linux Server 7.7
Last login: Sat May 16 22:51:01 2020 from 10.0.20.2
[opc@oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 ~]$

Root ユーザーへスイッチが可能

[opc@oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 ~]$ sudo su -
Last login: Sat May 16 22:51:33 UTC 2020 on pts/0
[root@oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 ~]# exit
logout
[opc@oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 ~]$

ディスクの状況です。Docker のストレージバックエンドとしては、overlayfs2 が使われています。

[root@oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 docker]# df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  7.2G     0  7.2G   0% /dev
tmpfs          tmpfs     7.3G     0  7.3G   0% /dev/shm
tmpfs          tmpfs     7.3G   18M  7.2G   1% /run
tmpfs          tmpfs     7.3G     0  7.3G   0% /sys/fs/cgroup
/dev/sda3      xfs        39G  3.7G   35G  10% /
/dev/sda1      vfat      200M  9.7M  191M   5% /boot/efi
tmpfs          tmpfs     7.3G   12K  7.3G   1% /var/lib/kubelet/pods/763959ae-9bc6-4b2b-87e9-b20d2c1c7a6a/volumes/kubernetes.io~secret/kube-proxy-token-9vxl4
tmpfs          tmpfs     7.3G   12K  7.3G   1% /var/lib/kubelet/pods/216a7cdb-009d-4cd5-a0f4-7e18a9fa6405/volumes/kubernetes.io~secret/flannel-token-tqb42
overlay        overlay    39G  3.7G   35G  10% /u01/data/docker/overlay2/d6fcded8cb7c947bd7dde23f957f7af3b9aecfc4c284d935655cc44ef0d89bcd/merged
overlay        overlay    39G  3.7G   35G  10% /u01/data/docker/overlay2/e9ef83a65cb9aa212ecbb8cce5866b4e199df72785c2b952a4759c46c281f602/merged
shm            tmpfs      64M     0   64M   0% /u01/data/docker/containers/9fcb249e0ca681903395c925b0f5648ecf9a13f5bcefb077e8b09b64b47498e0/mounts/shm
shm            tmpfs      64M     0   64M   0% /u01/data/docker/containers/8ea26e9884e500b576049e5312fd6b455d6b6327f39c944eb07af5fb1a813b1d/mounts/shm
overlay        overlay    39G  3.7G   35G  10% /u01/data/docker/overlay2/2bfb8b4d5596ebc49583f2adb48c0ae41e822dc74e6a8de6492289ebcd22613c/merged
tmpfs          tmpfs     7.3G   12K  7.3G   1% /var/lib/kubelet/pods/b66d0933-a0fb-4bc3-aa1a-d1b1ac27b77c/volumes/kubernetes.io~secret/default-token-gfctg
overlay        overlay    39G  3.7G   35G  10% /u01/data/docker/overlay2/a9b0fbec3860415aa8534533354d1d4053cb21673984f8e674e5b336dede603b/merged
shm            tmpfs      64M     0   64M   0% /u01/data/docker/containers/0e5f96c1da31da549fbf51cf83cd654845907594514ef75db676ef94e4416e0f/mounts/shm
overlay        overlay    39G  3.7G   35G  10% /u01/data/docker/overlay2/e77472ec5bc0a79da61e1be4438952db21ab72402b1df5e81e94e20e6ece53a6/merged
overlay        overlay    39G  3.7G   35G  10% /u01/data/docker/overlay2/3e5470604e1bd5e59fa6701e91611dc94bc9763ab60d06a47fb2e9f32d6edb67/merged
tmpfs          tmpfs     7.3G   12K  7.3G   1% /var/lib/kubelet/pods/9fad1f74-3b01-43c3-a5eb-fb7bbae22dd6/volumes/kubernetes.io~secret/coredns-token-8grdq
overlay        overlay    39G  3.7G   35G  10% /u01/data/docker/overlay2/ae1d91c9b5911a6f05be7593d30aba486722e73d3533e7b897e6d9a266d6e279/merged
shm            tmpfs      64M     0   64M   0% /u01/data/docker/containers/6836fec1f0b305fadea39bb745e7b5aa2139593e37c95d717e4cb4b13c7e77ee/mounts/shm
overlay        overlay    39G  3.7G   35G  10% /u01/data/docker/overlay2/ac05e95e3287b6125c07f0ddd489e174b01079e2a16a8cdcd9d40146956ce88a/merged
tmpfs          tmpfs     1.5G     0  1.5G   0% /run/user/1000
tmpfs          tmpfs     1.5G     0  1.5G   0% /run/user/0

ネットワークインターフェースの状態です。cni0 という名前の Linux Bridge や veth が使われています。Docker の標準的な構成に見えますね。
docker0 というインターフェースは、172.17.0.1/16 の固定になっているように見える。OKEを構成したときにパラメータは指定できなさそう。

[root@oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 docker]# ip -d 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 promiscuity 0 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 02:00:17:00:e9:3c brd ff:ff:ff:ff:ff:ff promiscuity 0 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
    inet 10.0.10.3/24 brd 10.0.10.255 scope global dynamic ens3
       valid_lft 81724sec preferred_lft 81724sec
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:5d:21:5e:f0 brd ff:ff:ff:ff:ff:ff promiscuity 0
    bridge forward_delay 1500 hello_time 200 max_age 2000 ageing_time 30000 stp_state 0 priority 32768 vlan_filtering 0 vlan_protocol 802.1Q bridge_id 8000.2:42:5d:21:5e:f0 designated_root 8000.2:42:5d:21:5e:f0 root_port 0 root_path_cost 0 topology_change 0 topology_change_detected 0 hello_timer    0.00 tcn_timer    0.00 topology_change_timer    0.00 gc_timer    5.71 vlan_default_pvid 1 vlan_stats_enabled 0 group_fwd_mask 0 group_address 01:80:c2:00:00:00 mcast_snooping 1 mcast_router 1 mcast_query_use_ifaddr 0 mcast_querier 0 mcast_hash_elasticity 4 mcast_hash_max 512 mcast_last_member_count 2 mcast_startup_query_count 2 mcast_last_member_interval 100 mcast_membership_interval 26000 mcast_querier_interval 25500 mcast_query_interval 12500 mcast_query_response_interval 1000 mcast_startup_query_interval 3125 mcast_stats_enabled 0 mcast_igmp_version 2 mcast_mld_version 1 nf_call_iptables 0 nf_call_ip6tables 0 nf_call_arptables 0 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
4: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 8950 qdisc noqueue state UNKNOWN group default
    link/ether 5a:47:be:59:26:8d brd ff:ff:ff:ff:ff:ff promiscuity 0
    vxlan id 1 local 10.0.10.3 dev ens3 srcport 0 0 dstport 14789 nolearning ttl inherit ageing 300 udpcsum noudp6zerocsumtx noudp6zerocsumrx numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
    inet 10.244.2.0/32 scope global flannel.1
       valid_lft forever preferred_lft forever
5: cni0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 8950 qdisc noqueue state UP group default qlen 1000
    link/ether 0e:c2:59:3e:9e:8d brd ff:ff:ff:ff:ff:ff promiscuity 0
    bridge forward_delay 1500 hello_time 200 max_age 2000 ageing_time 30000 stp_state 0 priority 32768 vlan_filtering 0 vlan_protocol 802.1Q bridge_id 8000.e:c2:59:3e:9e:8d designated_root 8000.e:c2:59:3e:9e:8d root_port 0 root_path_cost 0 topology_change 0 topology_change_detected 0 hello_timer    0.00 tcn_timer    0.00 topology_change_timer    0.00 gc_timer  103.65 vlan_default_pvid 1 vlan_stats_enabled 0 group_fwd_mask 0 group_address 01:80:c2:00:00:00 mcast_snooping 1 mcast_router 1 mcast_query_use_ifaddr 0 mcast_querier 0 mcast_hash_elasticity 4 mcast_hash_max 512 mcast_last_member_count 2 mcast_startup_query_count 2 mcast_last_member_interval 100 mcast_membership_interval 26000 mcast_querier_interval 25500 mcast_query_interval 12500 mcast_query_response_interval 1000 mcast_startup_query_interval 3125 mcast_stats_enabled 0 mcast_igmp_version 2 mcast_mld_version 1 nf_call_iptables 0 nf_call_ip6tables 0 nf_call_arptables 0 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
    inet 10.244.2.1/24 scope global cni0
       valid_lft forever preferred_lft forever
6: veth39036caf@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 8950 qdisc noqueue master cni0 state UP group default
    link/ether 3e:81:d2:15:1c:24 brd ff:ff:ff:ff:ff:ff link-netnsid 0 promiscuity 1
    veth
    bridge_slave state forwarding priority 32 cost 2 hairpin on guard off root_block off fastleave off learning on flood on port_id 0x8001 port_no 0x1 designated_port 32769 designated_cost 0 designated_bridge 8000.e:c2:59:3e:9e:8d designated_root 8000.e:c2:59:3e:9e:8d hold_timer    0.00 message_age_timer    0.00 forward_delay_timer    0.00 topology_change_ack 0 config_pending 0 proxy_arp off proxy_arp_wifi off mcast_router 1 mcast_fast_leave off mcast_flood on vlan_tunnel off numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535

Linux Bridge を確認します。brctl コマンドは Default で使えました。cni0docker0 があります。Kubernetes 上の Pod は、これらの技術を使ってネットワーク接続されています。

[root@oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 docker]# brctl show
bridge name     bridge id               STP enabled     interfaces
cni0            8000.0ec2593e9e8d       no              veth39036caf
docker0         8000.02425d215ef0       no

Docker サービスが、Systemd で管理されています。コンテナラインタイムには、containerd を使っているようです。

[root@oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 etc]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-05-16 22:18:40 UTC; 36min ago
     Docs: https://docs.docker.com
 Main PID: 14204 (dockerd)
    Tasks: 13
   Memory: 664.1M
   CGroup: /system.slice/docker.service
           └─14204 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

May 16 22:18:36 oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 dockerd[14204]: time="2020-05-16T22:18:36.094073960Z" level=info msg="Loading containers: done."
May 16 22:18:40 oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 dockerd[14204]: time="2020-05-16T22:18:40.089846132Z" level=warning msg="Not using native diff for overlay2, this may cause degraded perf...er=overlay2
May 16 22:18:40 oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 dockerd[14204]: time="2020-05-16T22:18:40.090261244Z" level=info msg="Docker daemon" commit=76804b7 graphdriver(s)=overlay2 version=18.09.8-ol
May 16 22:18:40 oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 dockerd[14204]: time="2020-05-16T22:18:40.090377885Z" level=info msg="Daemon has completed initialization"
May 16 22:18:40 oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 dockerd[14204]: time="2020-05-16T22:18:40.099292299Z" level=info msg="API listen on /var/run/docker.sock"
May 16 22:18:40 oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 systemd[1]: Started Docker Application Container Engine.
May 16 22:18:57 oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 dockerd[14204]: time="2020-05-16T22:18:57.427602003Z" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/de...TaskDelete"
May 16 22:18:57 oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 dockerd[14204]: time="2020-05-16T22:18:57.428419276Z" level=warning msg="0e1835d40b4236bc14a2867e3a2b0d0c0e77c67a758f21fb5740199c4a015621 cleanup: f...
May 16 22:19:28 oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 dockerd[14204]: time="2020-05-16T22:19:28.387690363Z" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/de...TaskDelete"
May 16 22:19:28 oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 dockerd[14204]: time="2020-05-16T22:19:28.387839650Z" level=warning msg="0d7ae13c6234d19a436432b6635ebce3f7e96a0cb3c34d31ce42bd0d34b9e408 cleanup: f...
Hint: Some lines were ellipsized, use -l to show in full.
[root@oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 etc]#

Docker の設定ファイルを確認します。Overlay2 が ストレージドライバとして使われています。

[root@oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 docker]# cat /etc/docker/daemon.json
{
  "storage-driver": "overlay2",
  "ip-masq": false,
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "20m",
    "max-file": "10"
  }
}

kubelet も、Systemd のサービスとして管理されています。

[root@oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 etc]# systemctl status kubelet
● kubelet.service - Kubernetes Kubelet
   Loaded: loaded (/etc/systemd/system/kubelet.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-05-16 22:18:51 UTC; 37min ago
 Main PID: 14497 (kubelet)
    Tasks: 15
   Memory: 44.4M
   CGroup: /system.slice/kubelet.service
           └─14497 /usr/bin/kubelet --authentication-token-webhook --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --client-ca-file=/etc/kubernetes/ca.crt --cluster-dns=10.96.5.5 --cluster-dom...

May 16 22:55:24 oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 kubelet[14497]: I0516 22:55:24.097991   14497 setters.go:73] Using node IP: "10.0.10.3"
May 16 22:55:30 oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 kubelet[14497]: I0516 22:55:30.768791   14497 plugins.go:636] Loaded volume plugin "flexvolume-oracle/oci"
May 16 22:55:30 oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 kubelet[14497]: I0516 22:55:30.841231   14497 plugins.go:636] Loaded volume plugin "flexvolume-oracle/oci"
May 16 22:55:30 oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 kubelet[14497]: I0516 22:55:30.862720   14497 plugins.go:636] Loaded volume plugin "flexvolume-oracle/oci"
May 16 22:55:34 oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 kubelet[14497]: I0516 22:55:34.103304   14497 setters.go:73] Using node IP: "10.0.10.3"
May 16 22:55:44 oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 kubelet[14497]: I0516 22:55:44.109248   14497 setters.go:73] Using node IP: "10.0.10.3"
May 16 22:55:51 oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 kubelet[14497]: I0516 22:55:51.746597   14497 plugins.go:636] Loaded volume plugin "flexvolume-oracle/oci"
May 16 22:55:51 oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 kubelet[14497]: I0516 22:55:51.801801   14497 plugins.go:636] Loaded volume plugin "flexvolume-oracle/oci"
May 16 22:55:51 oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 kubelet[14497]: I0516 22:55:51.824999   14497 plugins.go:636] Loaded volume plugin "flexvolume-oracle/oci"
May 16 22:55:54 oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 kubelet[14497]: I0516 22:55:54.116176   14497 setters.go:73] Using node IP: "10.0.10.3"
[root@oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 etc]#

Linux 上で kubelet のプロセスを確認します。色々なパラメータを指定しているのが見えますね。

[root@oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 etc]# ps aux | grep -i kubelet
root     14497  2.2  0.6 871496 95740 ?        Ssl  22:18   0:49 /usr/bin/kubelet --authentication-token-webhook --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --client-ca-file=/etc/kubernetes/ca.crt --cluster-dns=10.96.5.5 --cluster-domain=cluster.local --cloud-provider=external --enable-controller-attach-detach --kubeconfig=/etc/kubernetes/kubelet.conf --event-qps=0 --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 --hostname-override=10.0.10.3 --node-ip=10.0.10.3 --pod-infra-container-image=ap-tokyo-1.ocir.io/odx-oke/oke-public/pause-amd64:3.1 --node-labels=name=pool1,node-role.kubernetes.io/node=,hostname=oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0,internal_addr=10.0.10.3,displayName=oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0,oke.oraclecloud.com/tenant_agent.version=1.24.1-e5e10ab-130,oke.oraclecloud.com/node.info.private_subnet=true,,oke.oraclecloud.com/node.info.private_worker=true,node.info/compartment.id_prefix=ocid1.tenancy.oc1,node.info/compartment.id_suffix=aaaaaaaaftfptyiomnr5vmsxmrhoqsz7tsgquz3kghjcjy4janm7rfzfaokq,node.info/compartment.name=poc02,,node.info/kubeletVersion=v1.15,node.info.ds_proxymux_client=true --network-plugin=cni --read-only-port=0 --provider-id=ocid1.instance.oc1.ap-tokyo-1.anxhiljrycetm7ycikin6s55o5eqqpk5pjdlnymhz7otf5por7jx7537trga --serialize-image-pulls=false --anonymous-auth=false --authorization-mode=Webhook --tls-cert-file=/var/lib/kubelet/pki/tls.pem --tls-private-key-file=/var/lib/kubelet/pki/tls.key --v=2

kubelet の 設定ファイルの場所はこちらです。

[root@oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 kubernetes]# ls -la /etc/kubernetes/
total 24
drwxr-xr-x.  2 root root   70 May 16 22:18 .
drwxr-xr-x. 99 root root 8192 May 16 22:18 ..
-rw-r--r--.  1 root root 2054 May 16 22:18 bootstrap-kubelet.conf
-rw-r--r--.  1 root root 1289 May 16 22:18 ca.crt
-rw-------.  1 root root 2206 May 16 22:18 kubelet.conf
[root@oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 kubernetes]#

kubelet.conf の中身をみましょう。

[root@oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 kubernetes]# cat kubelet.conf
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: secret
    server: https://192.29.37.141:6443
  name: default-cluster
contexts:
- context:
    cluster: default-cluster
    namespace: default
    user: default-auth
  name: default-context
current-context: default-context
kind: Config
preferences: {}
users:
- name: default-auth
  user:
    client-certificate: /var/lib/kubelet/pki/kubelet-client-current.pem
    client-key: /var/lib/kubelet/pki/kubelet-client-current.pem

192.29.37.141 が Master Node の IP のようです。Global IP ですね。この Global IP で Whois を見ると、Oracle Corporation が Organization として見えているので、Oracle がマネージしているだろうなというのが確認できます。

1589670215115.png

Node から Master までは ICMP が届きます。かなり高速に通信出来る位置関係にあるようです。

[root@oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 kubernetes]# ping 192.29.37.141
PING 192.29.37.141 (192.29.37.141) 56(84) bytes of data.
64 bytes from 192.29.37.141: icmp_seq=1 ttl=61 time=2.10 ms
64 bytes from 192.29.37.141: icmp_seq=2 ttl=61 time=0.306 ms
64 bytes from 192.29.37.141: icmp_seq=3 ttl=61 time=0.309 ms
64 bytes from 192.29.37.141: icmp_seq=4 ttl=61 time=0.293 ms
64 bytes from 192.29.37.141: icmp_seq=5 ttl=61 time=0.240 ms
64 bytes from 192.29.37.141: icmp_seq=6 ttl=61 time=0.269 ms
64 bytes from 192.29.37.141: icmp_seq=7 ttl=61 time=0.264 ms
64 bytes from 192.29.37.141: icmp_seq=8 ttl=61 time=0.272 ms
64 bytes from 192.29.37.141: icmp_seq=9 ttl=61 time=0.291 ms

Docker としては、次のコンテナイメージが稼働しています

[root@oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-0 ~]# docker ps --size
CONTAINER ID        IMAGE                                                     COMMAND                  CREATED             STATUS              PORTS               NAMES
                                                 SIZE
90269a3a694a        ap-tokyo-1.ocir.io/axoxdievda5j/oke-public-coredns        "/coredns -conf /etc…"   About an hour ago   Up About an hour                        k8s_coredns_coredns-67bb89d7c6-9xr4k_kube-system_9fad1f74-3b01-43c3-a5eb-fb7bbae22dd6_0        0B (virtual 169MB)
6836fec1f0b3        ap-tokyo-1.ocir.io/odx-oke/oke-public/pause-amd64:3.1     "/pause"                 About an hour ago   Up About an hour                        k8s_POD_coredns-67bb89d7c6-9xr4k_kube-system_9fad1f74-3b01-43c3-a5eb-fb7bbae22dd6_0            0B (virtual 742kB)
0b7f52f68302        f0fad859c909                                              "/opt/bin/flanneld -…"   About an hour ago   Up About an hour                        k8s_kube-flannel_kube-flannel-ds-59nrt_kube-system_216a7cdb-009d-4cd5-a0f4-7e18a9fa6405_1      0B (virtual 44.6MB)
c466623f11ab        ap-tokyo-1.ocir.io/axoxdievda5j/oke-public-proxymux-cli   "/bin/proxymux.sh --…"   About an hour ago   Up About an hour                        k8s_proxymux-client_proxymux-client-d46gt_kube-system_b66d0933-a0fb-4bc3-aa1a-d1b1ac27b77c_0   0B (virtual 273MB)
0e5f96c1da31        ap-tokyo-1.ocir.io/odx-oke/oke-public/pause-amd64:3.1     "/pause"                 About an hour ago   Up About an hour                        k8s_POD_proxymux-client-d46gt_kube-system_b66d0933-a0fb-4bc3-aa1a-d1b1ac27b77c_0               0B (virtual 742kB)
7652cb05c286        ap-tokyo-1.ocir.io/axoxdievda5j/oke-public-kube-proxy     "/usr/local/bin/kube…"   About an hour ago   Up About an hour                        k8s_kube-proxy_kube-proxy-qz45b_kube-system_763959ae-9bc6-4b2b-87e9-b20d2c1c7a6a_0             0B (virtual 82.1MB)
8ea26e9884e5        ap-tokyo-1.ocir.io/odx-oke/oke-public/pause-amd64:3.1     "/pause"                 About an hour ago   Up About an hour                        k8s_POD_kube-flannel-ds-59nrt_kube-system_216a7cdb-009d-4cd5-a0f4-7e18a9fa6405_0               0B (virtual 742kB)
9fcb249e0ca6        ap-tokyo-1.ocir.io/odx-oke/oke-public/pause-amd64:3.1     "/pause"                 About an hour ago   Up About an hour                        k8s_POD_kube-proxy-qz45b_kube-system_763959ae-9bc6-4b2b-87e9-b20d2c1c7a6a_0                    0B (virtual 742kB)

Node には kubectl が入っていないようです

Kubernetes のリソースを確認

Kubernetes クラスタとしてのリソースを確認してみましょう。kubectl というコマンドでアクセスするために、Access Cluster を選択します。

1589674618394.png

Launch Cloud Shell を押します。Webブラウザ上で操作できる Liunx 環境が立ち上がります。

1589674652687.png

kubectl で接続するための設定用コマンドをコピーします。

1589674718583.png

Cloud Shell に貼り付け (Ctrl + V で可能) て実行します。

suguru_sug@cloudshell:~ (ap-tokyo-1)$ oci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1.ap-tokyo-1.aaaaaaaaafrdayrvmuydsndcgftgcm3ghbrdmmztmrrdkmrwgcywgzrvme2w --file $HOME/.kube/config --region ap-tokyo-1 --token-version 2.0.0 
New config written to the Kubeconfig file /home/suguru_sug/.kube/config

Version の確認です。

suguru_sug@cloudshell:~ (ap-tokyo-1)$ kubectl version
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.11", GitCommit:"d94a81c724ea8e1ccc9002d89b7fe81d58f89ede", GitTreeState:"clean", BuildDate:"2020-03-12T21:08:59Z", GoVersion:"go1.12.17", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.7", GitCommit:"a5e0d0bbd24669384f7b91897976ca5ab7703033", GitTreeState:"clean", BuildDate:"2020-04-09T21:51:20Z", GoVersion:"go1.12.7 BoringCrypto", Compiler:"gc", Platform:"linux/amd64"}

Node 一覧の確認です。

suguru_sug@cloudshell:~ (ap-tokyo-1)$ kubectl get nodes -o wide
NAME        STATUS   ROLES   AGE    VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                  KERNEL-VERSION                      CONTAINER-RUNTIME
10.0.10.2   Ready    node    120m   v1.15.7   10.0.10.2     <none>        Oracle Linux Server 7.7   4.14.35-1902.300.11.el7uek.x86_64   docker://18.9.8
10.0.10.3   Ready    node    120m   v1.15.7   10.0.10.3     <none>        Oracle Linux Server 7.7   4.14.35-1902.300.11.el7uek.x86_64   docker://18.9.8
10.0.10.4   Ready    node    120m   v1.15.7   10.0.10.4     <none>        Oracle Linux Server 7.7   4.14.35-1902.300.11.el7uek.x86_64   docker://18.9.8

Node の詳細を表示します。
Availbaility Domein の Label が設定されています。複数の Availability Domain 環境では、Node Affinity の指定で使えそうですね。Tokyo Region は 1Availability Domain なので、Fault Domain ごとのラベルを手動で設定するのが良さそうです。

> kubectl describe nodes 10.0.10.2
Name:               10.0.10.2
Roles:              node
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/instance-type=VM.Standard2.1
                    beta.kubernetes.io/os=linux
                    displayName=oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-2
                    failure-domain.beta.kubernetes.io/region=ap-tokyo-1
                    failure-domain.beta.kubernetes.io/zone=AP-TOKYO-1-AD-1
                    hostname=oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-2
                    internal_addr=10.0.10.2
                    kubernetes.io/arch=amd64
                    kubernetes.io/hostname=10.0.10.2
                    kubernetes.io/os=linux
                    name=pool1
                    node-role.kubernetes.io/node=
                    node.info.ds_proxymux_client=true
                    node.info/compartment.id_prefix=ocid1.tenancy.oc1
                    node.info/compartment.id_suffix=aaaaaaaaftfptyiomnr5vmsxmrhoqsz7tsgquz3kghjcjy4janm7rfzfaokq
                    node.info/compartment.name=poc02
                    node.info/kubeletVersion=v1.15
                    oke.oraclecloud.com/node.info.private_subnet=true
                    oke.oraclecloud.com/node.info.private_worker=true
                    oke.oraclecloud.com/tenant_agent.version=1.24.1-e5e10ab-130
Annotations:        alpha.kubernetes.io/provided-node-ip: 10.0.10.2
                    flannel.alpha.coreos.com/backend-data: {"VtepMAC":"72:19:02:f2:49:47"}
                    flannel.alpha.coreos.com/backend-type: vxlan
                    flannel.alpha.coreos.com/kube-subnet-manager: true
                    flannel.alpha.coreos.com/public-ip: 10.0.10.2
                    node.alpha.kubernetes.io/ttl: 0
                    volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp:  Sat, 16 May 2020 22:18:49 +0000
Taints:             <none>
Unschedulable:      false
Lease:
  HolderIdentity:  10.0.10.2
  AcquireTime:     <unset>
  RenewTime:       Sun, 17 May 2020 01:36:20 +0000
Conditions:
  Type             Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
  ----             ------  -----------------                 ------------------                ------                       -------
  MemoryPressure   False   Sun, 17 May 2020 01:36:05 +0000   Sat, 16 May 2020 22:18:49 +0000   KubeletHasSufficientMemory   kubelet has sufficient memory available
  DiskPressure     False   Sun, 17 May 2020 01:36:05 +0000   Sat, 16 May 2020 22:18:49 +0000   KubeletHasNoDiskPressure     kubelet has no disk pressure
  PIDPressure      False   Sun, 17 May 2020 01:36:05 +0000   Sat, 16 May 2020 22:18:49 +0000   KubeletHasSufficientPID      kubelet has sufficient PID available
  Ready            True    Sun, 17 May 2020 01:36:05 +0000   Sat, 16 May 2020 22:19:09 +0000   KubeletReady                 kubelet is posting ready status
Addresses:
  InternalIP:  10.0.10.2
Capacity:
  cpu:                2
  ephemeral-storage:  40223552Ki
  hugepages-1Gi:      0
  hugepages-2Mi:      0
  memory:             15116064Ki
  pods:               110
Allocatable:
  cpu:                2
  ephemeral-storage:  37070025462
  hugepages-1Gi:      0
  hugepages-2Mi:      0
  memory:             15013664Ki
  pods:               110
System Info:
  Machine ID:                 ae205ca4b8404f28903a74c7a9b4e712
  System UUID:                E213110C-565F-4600-85F2-DFD1A3ACEE04
  Boot ID:                    8735189a-f743-46fe-bf70-f2cef4c7292a
  Kernel Version:             4.14.35-1902.300.11.el7uek.x86_64
  OS Image:                   Oracle Linux Server 7.7
  Operating System:           linux
  Architecture:               amd64
  Container Runtime Version:  docker://18.9.8
  Kubelet Version:            v1.15.7
  Kube-Proxy Version:         v1.15.7
PodCIDR:                      10.244.1.0/24
ProviderID:                   ocid1.instance.oc1.ap-tokyo-1.anxhiljrycetm7ycz7gwbezinhxajpvz2ge4o24wygaekwxhggtl4wknqiaa
Non-terminated Pods:          (4 in total)
  Namespace                   Name                        CPU Requests  CPU Limits  Memory Requests  Memory Limits  AGE
  ---------                   ----                        ------------  ----------  ---------------  -------------  ---
  kube-system                 coredns-67bb89d7c6-9qd8w    100m (5%)     0 (0%)      70Mi (0%)        170Mi (1%)     3h16m
  kube-system                 kube-flannel-ds-h4lsr       100m (5%)     1 (50%)     50Mi (0%)        500Mi (3%)     3h17m
  kube-system                 kube-proxy-qrthc            0 (0%)        0 (0%)      0 (0%)           0 (0%)         3h17m
  kube-system                 proxymux-client-7gkpc       50m (2%)      500m (25%)  64Mi (0%)        256Mi (1%)     3h17m
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource           Requests    Limits
  --------           --------    ------
  cpu                250m (12%)  1500m (75%)
  memory             184Mi (1%)  926Mi (6%)
  ephemeral-storage  0 (0%)      0 (0%)
  hugepages-1Gi      0 (0%)      0 (0%)
  hugepages-2Mi      0 (0%)      0 (0%)
Events:              <none>

Kubernetes 上の全リソースを kubectl get all --all-namespaces コマンドで表示してみましょう。Kubernetes として必要なリソースが稼働しているのがわかります。

  • CoreDNS
  • Flannel
> kubectl get all --all-namespaces
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   pod/coredns-67bb89d7c6-9qd8w               1/1     Running   0          3h15m
kube-system   pod/coredns-67bb89d7c6-9xr4k               1/1     Running   0          3h15m
kube-system   pod/coredns-67bb89d7c6-rmmc8               1/1     Running   0          3h22m
kube-system   pod/kube-dns-autoscaler-655fffb489-54cr2   1/1     Running   0          3h22m
kube-system   pod/kube-flannel-ds-59nrt                  1/1     Running   1          3h16m
kube-system   pod/kube-flannel-ds-h4lsr                  1/1     Running   1          3h16m
kube-system   pod/kube-flannel-ds-pbvw2                  1/1     Running   1          3h16m
kube-system   pod/kube-proxy-q688m                       1/1     Running   0          3h16m
kube-system   pod/kube-proxy-qrthc                       1/1     Running   0          3h16m
kube-system   pod/kube-proxy-qz45b                       1/1     Running   0          3h16m
kube-system   pod/proxymux-client-7gkpc                  1/1     Running   0          3h15m
kube-system   pod/proxymux-client-d46gt                  1/1     Running   0          3h15m
kube-system   pod/proxymux-client-lz874                  1/1     Running   0          3h16m

NAMESPACE     NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE
default       service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP                  3h24m
kube-system   service/kube-dns     ClusterIP   10.96.5.5    <none>        53/UDP,53/TCP,9153/TCP   3h22m

NAMESPACE     NAME                                          DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                       AGE
kube-system   daemonset.apps/kube-flannel-ds                3         3         3       3            3           beta.kubernetes.io/arch=amd64       3h22m
kube-system   daemonset.apps/kube-proxy                     3         3         3       3            3           beta.kubernetes.io/os=linux         3h22m
kube-system   daemonset.apps/nvidia-gpu-device-plugin       0         0         0       0            0           <none>                              3h22m
kube-system   daemonset.apps/nvidia-gpu-device-plugin-1-8   0         0         0       0            0           <none>                              3h22m
kube-system   daemonset.apps/proxymux-client                3         3         3       3            3           node.info.ds_proxymux_client=true   3h22m

NAMESPACE     NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
kube-system   deployment.apps/coredns               3/3     3            3           3h22m
kube-system   deployment.apps/kube-dns-autoscaler   1/1     1            1           3h22m

NAMESPACE     NAME                                             DESIRED   CURRENT   READY   AGE
kube-system   replicaset.apps/coredns-67bb89d7c6               3         3         3       3h22m
kube-system   replicaset.apps/kube-dns-autoscaler-655fffb489   1         1         1       3h22m

kube-proxy を確認

プロセスの確認
proxy-mode は何も指定して無いので、現状では iptables が選ばれるようです。
https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/

[root@oke-cywgzrvme2w-n2timtcmvqw-sv75u4uwhqq-2 ~]# ps aux | grep -i kube-proxy
root     14986  0.1  0.2 138996 36560 ?        Ssl  May16   0:41 /usr/local/bin/kube-proxy --config=/var/lib/kube-proxy/config.conf --hostname-override=10.0.10.2

設定値の確認

# cat config.conf
apiVersion: kubeproxy.config.k8s.io/v1alpha1
bindAddress: 0.0.0.0
clientConnection:
  acceptContentTypes: ""
  burst: 10
  contentType: application/vnd.kubernetes.protobuf
  kubeconfig: /var/lib/kube-proxy/kubeconfig.conf
  qps: 5
clusterCIDR: 10.244.0.0/16
configSyncPeriod: 15m0s
conntrack:
  maxPerCore: 32768
  min: 131072
  tcpCloseWaitTimeout: 1h0m0s
  tcpEstablishedTimeout: 24h0m0s
enableProfiling: false
healthzBindAddress: 0.0.0.0:10256
hostnameOverride: ""
iptables:
  masqueradeAll: false
  masqueradeBit: 14
  minSyncPeriod: 0s
  syncPeriod: 30s
ipvs:
  excludeCIDRs: null
  minSyncPeriod: 0s
  scheduler: ""
  strictARP: false
  syncPeriod: 30s
kind: KubeProxyConfiguration
metricsBindAddress: 127.0.0.1:10249
mode: ""
nodePortAddresses: null
oomScoreAdj: -999
portRange: ""
resourceContainer: /kube-proxy
udpIdleTimeout: 4h10m0s
winkernel:
  enableDSR: false
  networkName: ""
  sourceVip: ""
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?