Kubernetes メモ
Note
- minikube の起動には、CPU が 2 個以上必要です。
- 2023/10 現在、minikube は containerd には対応していないらしい。ドライバに Docker や Qemu を使うと、CPU の仮想化支援機能やハイパーバイザを気にせずに使用できそうです。
環境作成
Docker
-
Ubuntu Linux
-
古いバージョンの削除 (インストールしていた場合)
-
APT リポジトリの設定
-
関連ツールのインストール
-
GPG key のインストール
-
リポジトリの追加
-
Docker のインストール
-
ユーザ権限の設定
-
自動起動設定
-
-
Kubernetes
-
Debian / Ubuntu
sudo apt-get update sudo apt-get install -y apt-transport-https gnupg2 curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | \ sudo apt-key add - echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | \ sudo tee -a /etc/apt/sources.list.d/kubernetes.list sudo apt-get update sudo apt-get install -y kubectl
kubectl コマンドの補完
-
bash
kubectl completion bash >> $HOME/.bashrc_kuberctl echo 'source $HOME/.bashrc_kuberctl' >> $HOME/.bashrc source $HOME/.bashrc
-
kubectl tabキー
で_get_comp_words_by_ref: command not found
が出るBash の自動補完パッケージが足りないので、追加すれば解消します。
自動補完パッケージインストール後、再ログインすると有効になります。
-
minikube
-
Debian / Ubuntu
動作確認
Hello Minikube
解説は minikube使ってみて、Kubernetesに入門してみた気分になる が分かりやすいです。
-
Start Cluster (結構時間がかかります)
-
hello-minikube のデプロイ
$ kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.10 deployment.apps/hello-minikube createddeployment.apps/hello-minikube created
-
デプロイの確認
-
Pod を確認
-
クラスタイベントの確認
$ kubectl get events LAST SEEN TYPE REASON OBJECT MESSAGE 8m56s Normal Scheduled pod/hello-minikube-5db9b875f7-chxrv Successfully assigned default/hello-minikube-5db9b875f7-chxrv to minikube 8m53s Normal Pulling pod/hello-minikube-5db9b875f7-chxrv Pulling image "k8s.gcr.io/echoserver:1.10" 8m17s Normal Started pod/hello-minikube-5db9b875f7-chxrv Started container echoserver 8m10s Normal Pulled pod/hello-minikube-5db9b875f7-chxrv Successfully pulled image "k8s.gcr.io/echoserver:1.10" in 1m3.811994362s (1m3.812681651s including waiting) 8m9s Normal Created pod/hello-minikube-5db9b875f7-chxrv Created container echoserver 8m56s Normal SuccessfulCreate replicaset/hello-minikube-5db9b875f7 Created pod: hello-minikube-5db9b875f7-chxrv 8m57s Normal ScalingReplicaSet deployment/hello-minikube Scaled up replica set hello-minikube-5db9b875f7 to 1 18m Normal Starting node/minikube Starting kubelet. 18m Normal NodeHasSufficientMemory node/minikube Node minikube status is now: NodeHasSufficientMemory 18m Normal NodeHasNoDiskPressure node/minikube Node minikube status is now: NodeHasNoDiskPressure 18m Normal NodeHasSufficientPID node/minikube Node minikube status is now: NodeHasSufficientPID 18m Normal NodeAllocatableEnforced node/minikube Updated Node Allocatable limit across pods 17m Normal Starting node/minikube 17m Normal RegisteredNode node/minikube Node minikube event: Registered Node minikube in Controller
-
クラスタの設定確認
-
-
サービスの作成
$ kubectl expose deployment hello-minikube --type=LoadBalancer --port=8080 service/hello-minikube exposed
-
サービスの確認
-
デプロイされたコンテナの動作確認
$ curl $(minikube service hello-minikube --url) Hostname: hello-minikube-5db9b875f7-chxrv Pod Information: -no pod information available- Server values: server_version=nginx: 1.13.3 - lua: 10008 Request Information: client_address=10.244.0.1 method=GET real path=/ query= request_version=1.1 request_scheme=http request_uri=http://192.168.49.2:8080/ Request Headers: accept=*/* host=192.168.49.2:30374 user-agent=curl/7.68.0 Request Body: -no body in request-
-
デプロイされたコンテナの動作確認 その2
-
-
クリーンアップ
2048
コンテナイメージ ⇒ Pod の起動 ⇒ サービスの起動、の手順でノードを起動します。
-
Start Cluster (結構時間がかかります)
-
Docker イメージ作成
-
pod の起動
-
サービスの起動
-
pod2048 サービスへの接続方法
$ minikube service list |----------------------|---------------------------|--------------|---------------------------| | NAMESPACE | NAME | TARGET PORT | URL | |----------------------|---------------------------|--------------|---------------------------| | default | kubernetes | No node port | | | default | pod2048 | 80 | http://192.168.49.2:32009 | | kube-system | kube-dns | No node port | | | kubernetes-dashboard | dashboard-metrics-scraper | No node port | | | kubernetes-dashboard | kubernetes-dashboard | No node port | | |----------------------|---------------------------|--------------|---------------------------|
ブラウザで URL 欄の
http://192.168.49.2:32009
を参照すると 2048 が楽しめます。
Kubernets ダッシュボード
-
起動
dashboard コマンドを実行してしばらくすると URL が表示されます。ただ、localhost しかバインドしてないっぽいので、mini kube をインストールした PC に GUI 環境がない場合は SSH トンネル経由でアクセスすることになります。