翻訳
このドキュメントは The Kubectl Book の翻訳です。翻訳の GitHub リポジトリはこちら。
TL;DR
- リソースの作成
 - リソースの表示
 - コンテナをデバッグする
 
Kubectl を始める
注意: すでに Kubectl に慣れていれば、この章は飛ばしても構いません。
この章では、Kubectl の基本的なコマンドを概説しますが、各コマンドの詳細は以降の章で説明します。
Kubernetes API 自体の詳細については、k8s.io のドキュメントを読んでください。
Kubernetes リソースをリスト表示する
Kubernetes の Deployment リソースのうち、kube-system という名前空間にあるものをリスト表示します。
注意: Deployment とは Pod レプリカを管理するリソースです。(Pod はコンテナを実行します)
kubectl get deployments --namespace kube-system
NAME                     DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
event-exporter-v0.2.3    1         1         1            1           14d
fluentd-gcp-scaler       1         1         1            1           14d
heapster-v1.6.0-beta.1   1         1         1            1           14d
kube-dns                 2         2         2            2           14d
kube-dns-autoscaler      1         1         1            1           14d
l7-default-backend       1         1         1            1           14d
metrics-server-v0.3.1    1         1         1            1           14d
名前空間 kube-system にある kube-dns という名前の Deployment について詳細を表示します。
kubectl describe deployment kube-dns --namespace kube-system
Name:                   kube-dns
Namespace:              kube-system
CreationTimestamp:      Wed, 06 Mar 2019 17:36:05 -0800
Labels:                 addonmanager.kubernetes.io/mode=Reconcile
                        k8s-app=kube-dns
                        kubernetes.io/cluster-service=true
Annotations:            deployment.kubernetes.io/revision: 2
...
設定ファイルからリソースを作成する
Kubernetes リソースをリモートにある設定ファイルから作成・更新します。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubectl/master/docs/book/examples/nginx/nginx.yaml
service/nginx created
deployment.apps/nginx-deployment created
Kubernetes リソースをローカルにある設定ファイルから作成・更新します。
kubectl apply -f ./examples/nginx/nginx.yaml
service/nginx created
deployment.apps/nginx-deployment created
Apply されたリソースを表示します。
kubectl get -f ./examples/nginx/nginx.yaml --show-labels
NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE   LABELS
service/nginx   ClusterIP   10.59.245.201   <none>        80/TCP    11m   <none>
NAME                               DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE   LABELS
deployment.apps/nginx-deployment   3         3         3            3           11m   app=nginx
コマンドから設定を生成する
Deployment リソースの設定ファイルを生成します。これをクラスタに適用するには、出力をファイルに書き込んでから、kubectl apply -f <yaml-file> を実行します。
注意: 生成された設定には削除すべき余計な箇所がありますが、go オブジェクトをシリアライズした結果生じたものです。
kubectl create deployment nginx --dry-run -o yaml --image nginx
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null # delete this
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  strategy: {} # delete this
  template:
    metadata:
      creationTimestamp: null # delete this
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        resources: {} # delete this
status: {} # delete this
リソースに関連した Pod を見る
Deployment によって作成された Pod を Pod ラベルで表示します。
kubectl get pods -l app=nginx
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-5c689d88bb-b2xfk   1/1     Running   0          10m
nginx-deployment-5c689d88bb-rx569   1/1     Running   0          10m
nginx-deployment-5c689d88bb-s7xcv   1/1     Running   0          10m
コンテナをデバッグする
Deployment が管理するすべての Pod からログを取得します。
kubectl logs -l app=nginx
特定の Pod のコンテナの中に入ってシェルを実行します。
kubectl exec -i -t  nginx-deployment-5c689d88bb-s7xcv bash
root@nginx-deployment-5c689d88bb-s7xcv:/#