$ oci -v
3.65.0
$ ls -l $HOME/.kube
ls: cannot access '/home/niikawa/.kube': No such file or directory
$ mkdir -p $HOME/.kube
$ oci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1.ap-tokyo-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --file $HOME/.kube/config --region ap-tokyo-1 --token-version 2.0.0 --kube-endpoint PUBLIC_ENDPOINT
Private key passphrase:
New config written to the Kubeconfig file /home/niikawa/.kube/config
$ echo "export KUBECONFIG=$HOME/.kube/config" >> .bash_profile
kubectl コマンドを実行し、クラスタへの接続が成功したことを確認します。
$ kubectl get nodes
Private key passphrase:
NAME STATUS ROLES AGE VERSION
10.0.1.26 Ready node 110m v1.33.1
トラブルシューティング①
クラスタへの接続(oci ce cluster create-kubeconfigコマンド)を行った後、kubectl コマンドで以下のエラーが出力され、タイムアウトとなる。
$ kubectl get nodes
Private key passphrase:
E0829 10:46:46.080259 3167 memcache.go:265] "Unhandled Error" err="couldn't get current server API group list: Get \"https://161.33.155.81:6443/api?timeout=32s\": context deadline exceeded (Client.Timeout exceeded while awaiting headers)"
E0829 10:47:16.081223 3167 memcache.go:265] "Unhandled Error" err="couldn't get current server API group list: Get \"https://161.33.155.81:6443/api?timeout=32s\": dial tcp 161.33.155.81:6443: i/o timeout"
E0829 10:47:46.082455 3167 memcache.go:265] "Unhandled Error" err="couldn't get current server API group list: Get \"https://161.33.155.81:6443/api?timeout=32s\": dial tcp 161.33.155.81:6443: i/o timeout"
E0829 10:48:16.083420 3167 memcache.go:265] "Unhandled Error" err="couldn't get current server API group list: Get \"https://161.33.155.81:6443/api?timeout=32s\": dial tcp 161.33.155.81:6443: i/o timeout"
E0829 10:48:46.084191 3167 memcache.go:265] "Unhandled Error" err="couldn't get current server API group list: Get \"https://161.33.155.81:6443/api?timeout=32s\": dial tcp 161.33.155.81:6443: i/o timeout"
Unable to connect to the server: dial tcp 161.33.155.81:6443: i/o timeout
原因はお使いのPC(アクセス元)からOKE クラスタのKubernetes API endpoint へ通信が許可されていないことです。ハンズオン1 を確認し、セキュリティリストにIngress Rules を追加します。
$ kubectl get nodes
Private key passphrase:
NAME STATUS ROLES AGE VERSION
10.0.1.26 Ready node 14h v1.33.1
$ kubectl get deployment
Private key passphrase:
No resources found in default namespace.
$ kubectl get pods
Private key passphrase:
No resources found in default namespace.
$ kubectl create deployment nginx-deployment --image=nginx
Private key passphrase:
deployment.apps/nginx-deployment created
$ kubectl get deployment
Private key passphrase:
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 0/1 1 0 13s
$ kubectl get pods
Private key passphrase:
NAME READY STATUS RESTARTS AGE
nginx-deployment-6cfb98644c-kgnxn 1/1 Running 0 27s
$ kubectl apply -f nginx-service.yaml
Private key passphrase:
service/nginx-service created
ハンズオン4:動作確認
ロードバランサーのIPアドレスを確認します。
$ kubectl get service nginx-service
Private key passphrase:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-service LoadBalancer 10.96.247.156 150.230.216.172 80:31104/TCP 26s
$ kubectl get deployment
$ kubectl describe deployment nginx-deployment
$ kubectl get pods
$ kubectl describe pod nginx-deployment-xxxxxxxxxx-xxxxx
$ kubectl get service nginx-service
$ kubectl describe service nginx-service