1. suzukihi724

    No comment

    suzukihi724
Changes in body
Source | HTML | Preview
@@ -1,250 +1,250 @@
よく使うkubernetesのkubectlコマンド一覧
##1) podを作成
`kubectl create -f [Pod定義ファイル]`
##2) rc(Replication Controller)を作成
`kubectl create -f [rc定義ファイル]`
rcを作成すると、複数のpodを一括管理できる。また、いくつpodを起動するかを規定し、podが停止すると、自動的に規定数のpodにリカバリしてくれる。
##3) Serviceを作成
`kubectl create -f [Service定義ファイル]`
Pod(コンテナ)を外部と通信させる場合はServiceを定義する。Serviceがプロキシとなり、例えばホストアドレス:Portへのアクセスを、Podの接続先内部アドレス:Portに変換し、相互接続が可能となる。
##4) pod一覧を確認
`kubectl get pod`
```
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
jenkins-lf3br 1/1 Running 0 3d
```
STATUS
Running: 稼働中
Pending: Pod起動待ち
ImageNotReady: dockerイメージ取得中
PullImageError: dockerイメージ取得失敗
CreatingContainer: Pod(コンテナ)起動中
Error: エラー
etc.
`-o wide`
オプションで、各Podの実行ホストIPも表示できる
`-o yaml [pod名]`
オプションで、指定podのyamlを確認できる
`-L [ラベル名]`
オプションで、指定ラベルキーと値も出力
`-l [ラベルフィルタ条件]`
オプションで、指定ラベル条件でフィルタ可能
`-n [NameSpace名]`
オプションで、NameSpaceを指定して実行
`-A`
オプションで、全NameSpaceの結果を取得
##5) rc(Replication Controller)一覧を確認
`kubectl get rc`
ReplicaSetの場合は
`kubectl get rs`
Deploymentの場合は
`kubectl get deploy`
##6) svc(Service)一覧を確認
`kubectl get svc`
##7) podを削除
`kubectl delete pod [Pod名]`
または
`kubectl delete -f [作成時のPod定義ファイル]`
強制的にすぐ削除したい場合は以下オプション
`—grace-period 0 —force`
##8) rc(Replication Controller)を削除
`kubectl delete rc [rc名]`
または
`kubectl delete -f [作成時のyaml定義ファイル]`
※rcで作成されたpodを個別に削除しても、rcがpodを自動再生成するので、rc自体を削除する必要がある
※ReplicaSetの場合は rc → rs
##9) svc(Service)を削除
`kubectl delete svc [svc名]`
または
`kubectl delete -f [作成時のsvc定義ファイル]`
##10) ログの確認
`kubectl logs [pod名]`
`-f`オプションで、tail -f 相当のリアルタイムフォロー出力
`--sinse=1h`オプションで、最新1時間以内を抽出
`--tail=10`オプションで、最新10件を抽出
`--timestamps=true`オプションで、タイムスタンプ付与
##11) pod/rc/rs/svcの詳細を確認する
`kubectl describe [Pod名/rc名/rs名/svc名]`
##12) 起動したPodにログインする
`kubectl exec -it [コンテナ名] /bin/bash`
ログオフする時はexitコマンド
各種オプション
-i:コンテナへ標準入力(STDIN)を渡す
-t:標準入力(STDIN)をTTY(コンソール入力)とする
##13) Podの環境変数を確認
`kubectl exec [Pod名] env`
##14) Podのマウントされたボリュームを確認
`kubectl exec [Pod名] ls /[Path]`
##15) Pod(コンテナ)上でコマンドを実行
`kubectl exec [Pod名] [コマンド]`
例)
```
$kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 6m
$kubectl exec nginx echo "Hello"
Hello
```
##16) コンテナ(Pod)の複製数を変更(Scale)する
`kubectl scale rc [rc名] --replicas=[数]`
現状のレプリカ数が1で、上記で3を指定すると、新たに2個追加される
ReplicaSetの場合は rc → rs
##17) リソース消費量確認(top)
workerノードとpodのリソース消費量(CPU/MEMORY)を確認できる
`kubectl top node`
`kubectl top pod`
##18) workerノードを安全に切り離し
`kubectl drain [ノード名]`
稼働中のpodが順次evictedされた後に、切り離される
##19) ホストからPod内にファイルをコピー
`kubectl cp ./[file] [pod NAME]:[格納先パス]`
※docker cpと同じ
##20) ワンライナーでコンテナ起動
yamlを使わずにサクッと作りたい場合
-### Pod
+## Pod
`kubectl run [作成するコンテナ名] --image=[イメージ:タグ]`
他にもオプションあり
--restart=[再開ルール:Always, OnFailure, Never]
--port=[ポート]
--replicas=[レプリカ数]
--schedule=[CronTab用のルール]
--limits=[CPU/Memのリソース上限]
などなど
## deployment
`kubectl create deployment [名前] --image=[コンテナイメージ]`
#21) ワンライナーでサービス起動
yamlを使わずにサクッと作りたい場合
` kubectl expose deployment [公開対象のコンテナ(deployment)] --type=LoadBalancer`
### ※オプション
ターゲットdeploymentにフォワーディングする際のFrom/ToのPortを指定
--port=80
--target-port=8080
公開対象のdeploymentにLBする外部IPをもつServiceが生成される
外部からアクセスするためのExternalIPは下記で確認可能
```
$kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
test-app LoadBalancer 10.0.XX.XX 35.225.XX.XX 80:30133/TCP 1m0s
```
##21) イメージの更新(Rolling Update)
`kubectl set image deployment [デプロイメント名] [イメージ名]=[イメージ名]:[タグ]`
例)
```
kubectl set image deployment nginx nginx=nginx:1.9.1
```
これで、nginxイメージを1.9.1にローリングアップデートしてくれる
https://cloud.google.com/kubernetes-engine/docs/how-to/updating-apps?hl=ja
ただし、yamlベースで管理するなら、`kubectl apply` で更新した方が良い