翻訳

このドキュメントは 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:/#

results matching ""

    No results matching ""