Kubernetes チートシート
よく使用される k8s コマンドとそのパラメータ
目次
こちらが私のk8s cheat sheetで、Kubernetesの最も重要なコマンドと、インストールからコンテナの実行、クリーンアップまでのかんねんをカバーしています:
Kubernetesのインストール
Kubeadmを使用する
kubeadm
を使用してKubernetesをインストールするには、以下の手順に従ってください:
-
環境の準備:
- 必要なカーネルモジュールを有効にしてください:
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
- 変更を適用するためにシステムを再起動してください。
- 必要なカーネルモジュールを有効にしてください:
-
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リポジトリを追加し、
kubeadm
、kubelet
、kubectl
をインストール: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
- Dockerをインストール:
-
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"}}'.