Kubernetes チートシート

よく使用される k8s コマンドとそのパラメータ

目次

こちらが私のk8s cheat sheetで、Kubernetesの最も重要なコマンドと、インストールからコンテナの実行、クリーンアップまでのかんねんをカバーしています:

k8s lights

Kubernetesのインストール

Kubeadmを使用する

kubeadmを使用してKubernetesをインストールするには、以下の手順に従ってください:

  1. 環境の準備:

    • 必要なカーネルモジュールを有効にしてください:
      sudo sysctl net/bridge/bridge-nf-call-ip6tables=1
      sudo sysctl net/bridge/bridge-nf-call-iptables=1
      sudo sysctl net/bridge/bridge-nf-call-arptables=1
      
    • 変更を適用するためにシステムを再起動してください。
  2. Dockerおよびその他の前提条件のインストール:

    • Dockerをインストール:
      sudo apt-get update
      sudo apt-get install -y docker.io
      
    • ebtablesおよびethtoolをインストール:
      sudo apt-get install ebtables ethtool
      
    • 必要に応じてHTTPSサポートおよびcurlをインストール:
      sudo apt-get update
      sudo apt-get install -y apt-transport-https curl
      
    • Kubernetesリポジトリを追加し、kubeadmkubeletkubectlをインストール:
      curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
      sudo cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
      deb http://apt.kubernetes.io/ kubernetes-xenial main
      EOF
      sudo apt-get update
      sudo apt-get install -y kubeadm kubelet kubectl
      
  3. Kubernetesクラスターの初期化:

    • 最初のコントロールプレーンノードを初期化:
      sudo kubeadm init
      
    • 他のコントロールプレーンノードおよびワーカー ノードを参加させる:
      kubeadm join <control-plane-node>:8443 --token <token> --discovery-token-ca-cert-hash <hash>
      

MinikubeまたはKindを使用する

ローカル開発では、minikubeまたはkindを使用できます:

  • Minikube:

    minikube start
    

    公式の[Get Started!ガイド]に従ってください。

  • Kind:

    curl -sfL https://get.k3s.io | sh -
    kind create cluster
    

    [Kind Quick Startページ]に従ってください。

一般的なkubectlコマンド

基本コマンド

  • リソースに関する情報を取得:

    kubectl get <resource>  # リソースを一覧表示(例: ポッド、サービス、デプロイメント)
    kubectl get pods --all-namespaces  # すべての名前空間のポッドを一覧表示
    kubectl get pods -o wide  # 詳細情報を含めてポッドを一覧表示
    kubectl get pod my-pod -o yaml  # ポッドのYAML構成を取得。
    
  • リソースの記述:

    kubectl describe <resource>  # リソースの詳細記述(例: ノード、ポッド)
    kubectl describe nodes my-node
    kubectl describe pods my-pod.
    
  • リソースの作成:

    kubectl create -f <manifest-file>  # YAMLまたはJSONファイルからリソースを作成
    kubectl create configmap <configmap-name> --from-literal=<key>=<value>  # ConfigMapを作成
    kubectl create secret generic <secret-name> --from-literal=<key>=<value>  # Secretを作成。
    
  • リソースの削除:

    kubectl delete <resource> <name>  # リソースの削除(例: ポッド、デプロイメント)
    kubectl delete pod my-pod
    kubectl delete deployment my-deployment.
    

ポッド管理

  • コンテナのコマンドと引数を定義:

    apiVersion: v1
    kind: Pod
    metadata:
      name: command-demo
    spec:
      containers:
      - name: command-demo-container
        image: debian
        command: ["printenv"]
        args: ["HOSTNAME", "KUBERNETES_PORT"]
    
    kubectl apply -f <manifest-file>
    kubectl get pods
    kubectl logs command-demo.
    
  • シェルでコマンドを実行:

    apiVersion: v1
    kind: Pod
    metadata:
      name: shell-demo
    spec:
      containers:
      - name: shell-demo-container
        image: debian
        command: ["/bin/sh"]
        args: ["-c", "while true; do echo hello; sleep 10;done"]
    
    kubectl apply -f <manifest-file>
    kubectl get pods
    kubectl logs shell-demo.
    

ConfigMapおよびSecret管理

  • ConfigMapの作成:

    kubectl create configmap <configmap-name> --from-literal=<key>=<value>
    kubectl create configmap app-config --from-literal=environment=production --from-literal=log_level=info.
    
  • Secretの作成:

    kubectl create secret generic <secret-name> --from-literal=<key>=<value>
    kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=supersecret.
    

デプロイメントおよびサービス管理

  • デプロイメントの作成:

    kubectl create deployment <deployment-name> --image=<image-name>
    kubectl create deployment my-deployment --image=nginx:latest.
    
  • デプロイメントをサービスとして公開:

    kubectl expose deployment <deployment-name> --type=NodePort --port=<port>
    kubectl expose deployment my-deployment --type=NodePort --port=80.
    

名前空間およびノード管理

  • 名前空間の一覧表示:

    kubectl get namespaces
    
  • 名前空間の作成:

    kubectl create namespace <namespace-name>
    kubectl create namespace my-namespace.
    
  • ノードの一覧表示:

    kubectl get nodes
    kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
    

モニタリングおよびデバッグ

  • ログの表示:

    kubectl logs <pod-name>
    kubectl logs -f <pod-name>  # リアルタイムでログをフォロー。
    
  • イベントの記述:

    kubectl describe events
    
  • クラスター情報の確認:

    kubectl cluster-info
    kubectl version  # Kubernetesバージョンを確認。
    

高度なコマンド

  • リソースのソート:

    kubectl get pods --sort-by='.status.containerStatuses.restartCount'
    kubectl get services --sort-by=.metadata.name.
    
  • リソースのフィルタリング:

    kubectl get pods --field-selector=status.phase=Running
    kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
    
  • 特定データの取得:

    kubectl get configmap myconfig -o jsonpath='{.data.ca\.crt}'
    kubectl get secret my-secret --template='{{index .data "key-name-with-dashes"}}'.
    

有用なリンク