Kubernetes CORE CONCEPTS – IMPERATIVE COMMANDS
Kubectlを使用したImperativeコマンド
--dry-run
デフォルトでは、コマンドが実行されるとすぐにリソースが作成されます。
--dry-run=client
コマンドをテストしたいだけの場合に使用
これはリソースを作成しませんが、代わりに、リソースを作成できるかどうか、およびコマンドが正しいかどうかを示します。
-o yaml
リソース定義がYAML形式で画面に出力される
POD
Create an NGINX Pod NGINX でのPodの作成
kubectl run nginx --image=nginx
Generate POD Manifest YAML file (-o yaml). Don't create it(--dry-run)
PODマニフェストYAMLファイルの生成 (作成しない場合--dry-run)
kubectl run nginx --image=nginx --dry-run=client -o yaml
Deployment
Create a deployment デプロイメントの作成
kubectl create deployment --image=nginx nginx
Generate Deployment YAML file (-o yaml). Don't create it(--dry-run)
DeploymentYAMLファイルの生成 (作成しない場合--dry-run)
kubectl create deployment --image=nginx nginx --dry-run=client -o yaml
Generate Deployment with 4 Replicas
4Replicas でDeploymentを生成する場合
kubectl create deployment nginx --image=nginx --replicas=4
kubectl scale
を使用して展開をスケーリングすることもできる
kubectl scale deployment nginx --replicas=4
Another way to do this is to save the YAML definition to a file and modify
YAML定義をファイルに保存して変更する事ににより生成する場合
kubectl create deployment nginx --image=nginx --dry-run=client -o yaml > nginx-deployment.yaml
デプロイを作成する前に、レプリカまたはその他のフィールドでYAMLファイルを更新可能。
Service
Create a Service named redis-service of type ClusterIP to expose pod redis on port 6379
ClusterIPの種類で「redis-service」と言う名前、Serviceを作成し、Port6379でポッド redisを公開する場合
kubectl expose pod redis --port=6379 --name redis-service --dry-run=client -o yaml
ポッドのラベルがセレクターとして自動的に使用されり
Or
kubectl create service clusterip redis --tcp=6379:6379 --dry-run=client -o yaml
セクターとしてpod ラベル使用されなく、セクターをapp=redis として認識する
オプションとしてセレクターを渡すことはできない。なので、ポッドに別のラベルセットがある場合は、うまく機能しません。したがって、サービスを作成する前に、ファイルを生成してセレクターを変更すること。
Create a Service named nginx of type NodePort to expose pod nginx's port 80 on port 30080 on the nodes:
NodePortタイプのnginxという名前のサービスを作成して、ノードのPort 30080にポnginxのポート80を公開する場合
kubectl expose pod nginx --type=NodePort --port=80 --name=nginx-service --dry-run=client -o yaml
ポッドのラベルがセレクターとして自動的に使用されますが、ノードポートを指定することはできません。ポッドを使用してサービスを作成する前に、定義ファイルを生成してから、ノードポートを手動で追加する必要がある。
Or
kubectl create service nodeport nginx --tcp=80:80 --node-port=30080 --dry-run=client -o yaml
ポッドラベルをセレクターとして使用されない
上記の両方のコマンドには課題がある。
一方はセレクターを受け入れることができませんが、もう一方はノードポートを受け入れることができない。
kubectl exposeコマンドを使用することをお勧め。ノードポートを指定する必要がある場合は、同じコマンドを使用して定義ファイルを生成し、サービスを作成する前にノードポートを手動で入力。
レファレンス:
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands