メモ:Tanzu Kubernetes Grid(TKGm) v1.3.0 でkata-container を利用する
自分備忘録用メモ。TKGm v1.3.0 でkata-container を利用出来るかどうかの確認。
前提条件
- TKGm v1.3.0 がデプロイ済
- TKGm on vSphere 環境
Hardware virtualization の有効化
vspheremachines
, vspheremachinetemplates
当たりをちゃんと設定すると、TKGm Workload Cluster 作成時に有効化出来ると思うのですが、kubectl edit
では上手く変更出来なかったため、先ずは利用出来るかどうかの確認として、TKGm Workload Cluster のWorker ノードを一度Power Off し、vCenter からHardware virtualization を有効化 -> Power On しています。パッケージのインストール
Worker ノードにログインし、こちら「How to use Kata Containers and Containerd」を参考にしつつ、パッケージをインストールしていきます。
$ k get nodes
NAME STATUS ROLES AGE VERSION
gibson-control-plane-p8lxj Ready control-plane,master 7d3h v1.20.4+vmware.1
gibson-md-0-7fd85cc74c-l55zd Ready <none> 7d3h v1.20.4+vmware.1
ssh -i .ssh/tkgm-lab capv@xxx.xxx.xxx
sudo su -
$ lsmod |grep kvm
kvm_intel 282624 0
kvm 663552 1 kvm_intel
$ cat /proc/cpuinfo
processor : 0
...(SNIP)...
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xsaves arat md_clear flush_l1d arch_capabilities
...(SNIP)...
power management:
processor : 1
...(SNIP)...
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xsaves arat md_clear flush_l1d arch_capabilities
...(SNIP)...
BRANCH="${BRANCH:-master}"
ARCH=$(arch)
sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/katacontainers:/releases:/${ARCH}:/${BRANCH}/xUbuntu_$(lsb_release -rs)/ /' > /etc/apt/sources.list.d/kata-containers.list"
curl -sL http://download.opensuse.org/repositories/home:/katacontainers:/releases:/${ARCH}:/${BRANCH}/xUbuntu_$(lsb_release -rs)/Release.key | sudo apt-key add -
sudo -E apt-get update
sudo -E apt-get -y install kata-runtime kata-proxy kata-shim
$ kata-runtime version
kata-runtime : 1.13.0-alpha0
commit : <<unknown>>
OCI specs: 1.0.1-dev
containerd の設定ファイルも以下の様に修正します。
$ cat /etc/containerd/config.toml
## template: jinja
# Use config version 2 to enable new configuration fields.
# Config file is parsed as version 1 by default.
version = 2
[plugins]
[plugins."io.containerd.grpc.v1.cri"]
sandbox_image = "projects.registry.vmware.com/tkg/pause:3.2"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runsc]
runtime_type = "io.containerd.runsc.v1"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runsc.options]
TypeUrl = "io.containerd.runsc.v1.options"
ConfigPath = "/etc/containerd/runsc.toml"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.kata]
runtime_type = "io.containerd.kata.v2"
設定が完了したので、containerd をリスタートさせてみます。
systemctl restart containerd
$ systemctl status containerd
● containerd.service - containerd container runtime
Loaded: loaded (/etc/systemd/system/containerd.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/containerd.service.d
└─boot-order.conf, max-tasks.conf, memory-pressure.conf
Active: active (running) since Mon 2021-05-17 12:49:34 UTC; 1s ago
Docs: https://containerd.io
Process: 18022 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)
Main PID: 18023 (containerd)
Tasks: 115
Memory: 277.4M
...(SNIP)...
上手く動いているようです。
RuntimeClass の作成
kata-container を利用するための
RuntimClass
を作成します。$ cat runtimeclass-kata.yaml
apiVersion: node.k8s.io/v1
kind: RuntimeClass
metadata:
name: kata
handler: kata
kubectl apply
します。k apply -f runtimeclass-kata.yaml
RuntimeClass が作成されました。
$ k get runtimeclasses
NAME HANDLER AGE
gvisor runsc 7d2h
kata kata 5s
kata-container を利用する、Pod をデプロイします。
k run kata-pod1 --image=nginx:1.17.10 --dry-run=client -oyaml > kata-pod1.yaml
k run kata-pod2 --image=nginx:1.17.10 --dry-run=client -oyaml > kata-pod2.yaml
vim kata-pod1.yaml
vim kata-pod2.yaml
$ cat kata-pod1.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: kata-pod1
name: kata-pod1
spec:
runtimeClassName: kata
containers:
- image: nginx:1.17.10
name: kata-pod1
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
$ cat kata-pod2.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: kata-pod2
name: kata-pod2
spec:
runtimeClassName: kata
containers:
- image: nginx:1.17.10
name: kata-pod2
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
k apply -f kata-pod1.yaml
k apply -f kata-pod2.yaml
RuntimeClass
としてkata-container を指定したPod はちゃんと動いてはいるようです。$ k get pods
NAME READY STATUS RESTARTS AGE
gvisor-pod 1/1 Running 4 2m27s
kata-pod1 1/1 Running 6 4m53s
kata-pod2 1/1 Running 6 3m17s
Worer ノードで確認
Worker ノードにログインし確認してみます。kata-container を利用し、Pod が稼働しているようです。
$ kata-runtime list
ID PID STATUS BUNDLE CREATED OWNER
7ae0ec37c548dc8d955b0cd3339cc4c9aaa818148002309520ce824be5dbb55c -1 running /run/containerd/io.containerd.runtime.v2.task/k8s.io/7ae0ec37c548dc8d955b0cd3339cc4c9aaa818148002309520ce824be5dbb55c 2021-05-17T13:05:08.779997823Z #0
656b421e467eb37cffdfb99b2f9db9819ae7216f22ee18019535619eef36a92b -1 running /run/containerd/io.containerd.runtime.v2.task/k8s.io/656b421e467eb37cffdfb99b2f9db9819ae7216f22ee18019535619eef36a92b 2021-05-17T13:08:23.345216807Z #0
1523a460771c07a7e87805029dfc0323938ccc4ef57f20fe9ff732494d8bd50d -1 running /run/containerd/io.containerd.runtime.v2.task/k8s.io/1523a460771c07a7e87805029dfc0323938ccc4ef57f20fe9ff732494d8bd50d 2021-05-17T13:03:32.423747066Z #0
fc6786de0d339cfe7fb015ddaede57a2b9b2c1d42859589939f707deac6bebe1 -1 running /run/containerd/io.containerd.runtime.v2.task/k8s.io/fc6786de0d339cfe7fb015ddaede57a2b9b2c1d42859589939f707deac6bebe1 2021-05-17T13:08:08.89359102Z #0
- リンクを取得
- ×
- メール
- 他のアプリ