IK.AM

@making's tech note


OrbStackのnative Kubernetesサポート

🗃 {Dev/Infrastructure/Docker/OrbStack}
🏷 Docker 🏷 OrbStack 🏷 Kubernetes 
🗓 Updated at 2023-09-01T05:05:12Z  🗓 Created at 2023-09-01T05:04:18Z   🌎 English Page

OrbStack 0.17からnativeなKubernetesサポートが追加されました。

OrbStack上でkindを立てなくても、すぐにKubernetes (k3s?)が使えます。チェックボックスを入れるだけです。

初期状態は次の通りです。Container RuntimeがDockerな点に注意が必要かもしれません。

$ kubectl cluster-info
Kubernetes control plane is running at https://127.0.0.1:26443
CoreDNS is running at https://127.0.0.1:26443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

$ kubectl get node  -owide
NAME       STATUS   ROLES                  AGE     VERSION        INTERNAL-IP    EXTERNAL-IP   OS-IMAGE   KERNEL-VERSION                        CONTAINER-RUNTIME
orbstack   Ready    control-plane,master   6m13s   v1.27.4+orb1   198.19.249.2   <none>        OrbStack   6.4.13-orbstack-00090-ga4cfdc88d4df   docker://24.0.5

$ kubectl get ns      
NAME              STATUS   AGE
default           Active   66s
kube-system       Active   66s
kube-public       Active   66s
kube-node-lease   Active   66s

$ kubectl get pod -A -owide                                
NAMESPACE     NAME                                     READY   STATUS    RESTARTS   AGE     IP              NODE       NOMINATED NODE   READINESS GATES
kube-system   local-path-provisioner-957fdf8bc-tff28   1/1     Running   0          2m46s   192.168.194.3   orbstack   <none>           <none>
kube-system   coredns-687f7d69ff-65qsk                 1/1     Running   0          2m46s   192.168.194.2   orbstack   <none>           <none>

$ kubectl get svc -A -owide                                
NAMESPACE     NAME         TYPE        CLUSTER-IP        EXTERNAL-IP   PORT(S)                  AGE     SELECTOR
default       kubernetes   ClusterIP   192.168.194.129   <none>        443/TCP                  3m13s   <none>
kube-system   kube-dns     ClusterIP   192.168.194.138   <none>        53/UDP,53/TCP,9153/TCP   3m10s   k8s-app=kube-dns

$ kubectl get storageclass
NAME                   PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local-path (default)   rancher.io/local-path   Delete          WaitForFirstConsumer   false                  73s

kindと違って、Node、Pod、ServiceのIPがRoutableです。

例えば次のようにMacのターミナルから直接CoreDNSにdigで問い合わせすることができます(!)。

$ dig @192.168.194.138 kubernetes.default.svc.cluster.local +short
192.168.194.129

Podを立ててみます。

kubectl run nginx --image=nginx
$ kubectl get pod -owide
NAME    READY   STATUS    RESTARTS   AGE   IP              NODE       NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          9s    192.168.194.4   orbstack   <none>           <none>

このPodにブラウザから直接アクセスできます(!)。

image

GUIからもこのIPにジャンプすることができます。

Serviceを作成してみます。

kubectl expose pod nginx --type=ClusterIP --port=80
$ kubectl get svc nginx -owide
NAME    TYPE        CLUSTER-IP        EXTERNAL-IP   PORT(S)   AGE   SELECTOR
nginx   ClusterIP   192.168.194.192   <none>        80/TCP    13s   run=nginx

このCluster IPもブラウザから直接アクセスできます(!)。。

image

GUIでServiceの情報も見れます。

🔗アイコンをクリックすることで直接ブラウザでアクセスすることもできます。

ClusterIPでもRoutableなのでtype=LoadBalancerにしてExternal IPを使用する必要は必ずしもありませんが、type=LoadBalancerも使用することができます。

kubectl delete svc nginx
kubectl expose pod nginx --type=LoadBalancer --port=80
$ kubectl get svc nginx
NAME    TYPE           CLUSTER-IP        EXTERNAL-IP    PORT(S)        AGE
nginx   LoadBalancer   192.168.194.153   198.19.249.2   80:30755/TCP   7s

External IPでももちろんブラウザでアクセスできます。

image

type=LoadBalancerなServiceを作るとkube-system namespaceに一つKlipper LBのPodができます。

$ kubectl get pod -A -owide
NAMESPACE     NAME                                     READY   STATUS    RESTARTS   AGE     IP              NODE       NOMINATED NODE   READINESS GATES
kube-system   local-path-provisioner-957fdf8bc-tff28   1/1     Running   0          20m     192.168.194.3   orbstack   <none>           <none>
kube-system   coredns-687f7d69ff-65qsk                 1/1     Running   0          20m     192.168.194.2   orbstack   <none>           <none>
default       nginx                                    1/1     Running   0          14m     192.168.194.4   orbstack   <none>           <none>
kube-system   svclb-nginx-967169ac-ppsvd               1/1     Running   0          4m16s   192.168.194.5   orbstack   <none>           <none>

GUIをみるとtype=LoadBalancerのServiceはオレンジ色のアイコンになり、アドレスとして*.k8s.orb.localがマッピングされていることがわかります。

ホスト名でもアクセス可能です。DNSの設定をすることなくIngressの検証を行えそうです。

image

✒️️ Edit  ⏰ History  🗑 Delete