一足遅れて Kubernetes を学び始める - 04. kubectl -
ストーリー
- 一足遅れて Kubernetes を学び始める - 01. 環境選択編 -
- 一足遅れて Kubernetes を学び始める - 02. Docker For Mac -
- 一足遅れて Kubernetes を学び始める - 03. Raspberry Pi -
- 一足遅れて Kubernetes を学び始める - 04. kubectl -
- 一足遅れて Kubernetes を学び始める - 05. workloads その 1 -
- 一足遅れて Kubernetes を学び始める - 06. workloads その 2 -
- 一足遅れて Kubernetes を学び始める - 07. workloads その 3 -
- 一足遅れて Kubernetes を学び始める - 08. discovery&LB その 1 -
- 一足遅れて Kubernetes を学び始める - 09. discovery&LB その 2 -
- 一足遅れて Kubernetes を学び始める - 10. config&storage その 1 -
- 一足遅れて Kubernetes を学び始める - 11. config&storage その 2 -
- 一足遅れて Kubernetes を学び始める - 12. リソース制限 -
- 一足遅れて Kubernetes を学び始める - 13. ヘルスチェックとコンテナライフサイクル -
- 一足遅れて Kubernetes を学び始める - 14. スケジューリング -
- 一足遅れて Kubernetes を学び始める - 15. セキュリティ -
- 一足遅れて Kubernetes を学び始める - 16. コンポーネント -
前回
一足遅れて Kubernetes を学び始める - 03. Raspberry Pi -では、RaspberryPi の環境に Kubernetes を導入しました。無事、動作確認ができたので、さっそく学習していきたいです。
参考
「Kubernetes 完全ガイド」を読んで進めてみます。ソースコードはこちら。
以前の投稿では、入門 Kubernetesを参考にしていましたが、Kubernetes 完全ガイドの方が網羅的に学べて良かったで、そちらを使いました。
kubectl
Kubectl is a command line interface for running commands against Kubernetes clusters
※ https://kubernetes.io/docs/reference/kubectl/overview/
kubernetes を操作するための CLI です。
よく使うものを私なりに整理し、入門時に最小限覚えておけば良いものをまとめました。
1. apply
pi@raspi001:~ $ cat << EOF > sample-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: sample-pod
spec:
containers:
- name: nginx-container
image: nginx:1.12
EOF
pi@raspi001:~ $ kubectl apply -f sample-pod.yaml
pod/sample-pod created
Kubernetes では、基本的にはマニフェストファイルを作成し、apply
で適用するのが一般的のようです。それは、新規作成だけでなく、更新や削除も同様です。create
やreplace
,delete
といった CLI もありますが、apply
でも同様の操作ができるため、使い分ける必要はあまりありません。apply
で登録したマニュフェストファイルは履歴として保存されています。
※ Kubernetes: kubectl apply の動作
2. set, get
pi@raspi001:~ $ kubectl set image pod sample-pod nginx-container=nginx:1.13
pod/sample-pod image updated
pi@raspi001:~ $ kubectl get pod sample-pod
NAME READY STATUS RESTARTS AGE
sample-pod 1/1 Running 1 13m
kubectl では、どのリソース種類(pod
,service
,etc)で、どのリソース名なのかを教えてあげる必要があります。
また、フィルタリングする機能としてlabel
があります。
# sample-pod-label.yaml
apiVersion: v1
kind: Pod
metadata:
name: sample-pod
labels:
env: prod
app: sample
spec:
containers:
- name: nginx-container
image: nginx:1.12
pi@raspi001:~ $ kubectl get pod -l env=prod
No resources found.
pi@raspi001:~ $ kubectl apply -f sample-pod-label.yaml
pod/sample-pod configured
pi@raspi001:~ $ kubectl get pod -l env=prod
NAME READY STATUS RESTARTS AGE
sample-pod 1/1 Running 0 7m23s
更に詳細の情報が必要な場合は、describe
を使います。
pi@raspi001:~ $ kubectl describe pod sample-pod
Name: sample-pod
...
※ edit
という直接編集する方法もありますが、一時的な対応のみに利用するべきとのことです。
せっかくの宣言的ファイルが意味ないですよね。
余談ですが、service
をsvc
という風に省略できたりします。
※ (備忘)kubectl コマンドでの短縮リソース名
3. debug
pi@raspi001:~ $ kubectl exec -it sample-pod /bin/sh
# exit
pi@raspi001:~ $ kubectl logs sample-pod
pi@raspi001:~ $ kubectl cp sample-pod.yaml sample-pod:/var/sample-pod.yaml
pi@raspi001:~ $ kubectl port-forward sample-pod 8888:80
Forwarding from 127.0.0.1:8888 -> 80
Forwarding from [::1]:8888 -> 80
どれもpod
に対する操作なためリソース種類の指定はありません。どれも開発時に必要が迫られれば使う感じですね。
99. top
こちら、どうしても動作できませんでした... 😥😥
今はそこまで必要としないので、一旦見送ります。
calico
だかflannel
とかが関係しているっぽいのですが、理解が浅いため未解決です。
お片付け
pi@raspi001:~ $ kubectl delete pod sample-pod
pod "sample-pod" deleted
複数の pod を扱っているなら、delete
よりもapply --prune
の方が良いですが、今回は単体 pod なので、直接delete
しました。
おわりに
入門当初は、どれほど覚えなくてはいけないのかと不安になっていたのですが、
蓋を開けてみると、そこまで多くはありませんでした。(まだ知らないものは多いと思いますが)
規則性として、 リソース種類とリソース名を指定する習慣にも徐々に慣れてきました。
面倒なときは、kubectl get all
で全部出すという荒業も覚えました。(笑)
次回はこちらです。
シェアしよう
関連するタグ
- Cloud Native Days Tokyo 2019 -2019年7月22-23日参加レポート
- 一足遅れて Kubernetes を学び始める - 16. コンポーネント -
- 一足遅れて Kubernetes を学び始める - 15. セキュリティ -
- 一足遅れて Kubernetes を学び始める - 14. スケジューリング -
- 【大阪・梅田】Kubernetes Meetup Tokyo 19 大阪サテライト- 2019年5月31日参加レポート
- 一足遅れて Kubernetes を学び始める - 13. ヘルスチェックとコンテナライフサイクル -
- 一足遅れて Kubernetes を学び始める - 12. リソース制限 -
- 一足遅れて Kubernetes を学び始める - 11. config&storage その2 -
- 一足遅れて Kubernetes を学び始める - 10. config&storage その1 -
- 【大阪】BMXUG勉強会 -Kubernates体験&Watson Discovery入門- 2019年3月27日参加レポート
- 一足遅れて Kubernetes を学び始める - 09. discovery&LB その2 -
- 一足遅れて Kubernetes を学び始める - 08. discovery&LB その1 -
- 一足遅れて Kubernetes を学び始める - 07. workloads その3 -
- 一足遅れて Kubernetes を学び始める - 06. workloads その2 -
- 一足遅れて Kubernetes を学び始める - 05. workloads その1 -
- 一足遅れて Kubernetes を学び始める - 03. Raspberry Pi -
- 一足遅れて Kubernetes を学び始める - 02. Docker For Mac -
- 一足遅れて Kubernetes を学び始める - 01. 環境選択編 -