書籍出典: 『CKA/CKAD テストガイド: Docker から Kubernetes 完全攻略まで』
勉強中に読書ノートを整理してみんなで共有しましょう 著作権侵害の場合は削除させていただきますのでよろしくお願いします!
概要記事を添付してください: Kubernetes 認定試験独習シリーズ | Summary_COCOgsta のブログ - CSDN ブログ
ステップ 1: ポッドの数を確認します。
[root@vms10 ~]# kubectl get pods
No resources found in default namespace.
[root@vms10 ~]#
复制代码
現在ポッドはありません。現在の名前空間のポッドがここにリストされます。指定した名前のポッドをリストしたい場合は、-n を使用して名前空間を指定する必要があります。
ステップ 2: kube-system の名前空間を一覧表示するには、次のコマンドを使用します。
[root@vms10 ~]# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-675d8749dd-sq6mn 1/1 Running 0 20m
calico-node-nvj6x 1/1 Running 0 20m
[root@vms10 ~]#
复制代码
ステップ 3: すべての名前空間のポッドをリストする場合は、--all-namespaces オプションまたは -A を追加する必要があります。次に例を示します。
[root@vms10 ~]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
... 输出 ...
kube-system calico-kube-controllers-675d8749dd-sq6mn 1/1 Running 0 22m
kube-system calico-node-nvj6x 1/1 Running 0 22m
... 输出 ...
[root@vms10 ~]#
复制代码
5.1.1 ポッドの作成
コマンドラインの構文は次のとおりです。
kubectl run 名字 --image=镜像
复制代码
ここでポッドのラベルを指定することもできます。構文は次のとおりです。
kubectl run 名字 --image=镜像 --1abels=标签=值
复制代码
複数のラベルが必要な場合は、複数の --labels オプションを使用します。
ポッドで使用される変数を指定することもできます。構文は次のとおりです。
kubectl run 名字 --image=镜像 --env="变量名=值"
复制代码
複数の変数を指定する場合は、複数の --env オプションを使用します。
オプション port を使用して、ポッド内のコンテナーが使用するポートを指定することもできます。
kubectl run 名字 --image=镜像 --port=端口号
复制代码
ミラー ダウンロード ポリシーを指定することもできます。
kubectl run名字 --image=镜像 --image-pull-policy=镜像下载策略
复制代码
ステップ 1: 以下の pod1 という名前のポッドを作成し、イメージに nginx を使用します。
[root@vms10 ~]# kubectl run pod1 --image=nginx
pod/pod1 created
[root@vms10 ~]#
复制代码
ステップ 2: ポッドを表示します。
[root@vms10 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
pod1 1/1 Running 0 38s
[root@vms10 ~]#
复制代码
ステップ 3: このポッドがどのノードで実行されているかを確認するには、 -o Wide を追加する必要があります。
[root@vms10 ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE ...
pod1 1/1 Running 0 59s 10.244.14.18 vms12.rhce.cc ...
[root@vms10 ~]#
复制代码
ここからわかるように、ポッドは vms12.rhce.cc で実行されており、ポッドの IP は 10.244.14.18 です。
5.1.2 ポッドの削除
このセクションでは、ポッドを削除する方法について説明します。ポッドを削除するための構文は次のとおりです。
kubectl delete pod 名字 --force
复制代码
ここで --force はオプションであり、その効果はポッドの削除を高速化することです。
ステップ 1: pod1 を削除します。
[root@vms10 ~]# kubectl delete pod pod1
pod "pod1" deleted
[root@vms10 ~]#
复制代码
ステップ 2: 既存のポッドを表示します。
[root@vms10 ~]# kubectl get pods
No resources found in default namespace.
[root@vms10 ~]#
复制代码
5.1.3 ポッドを作成するための yaml ファイルの生成
yaml ファイルにさまざまな属性を指定できるため、yaml メソッドを使用してポッドを作成することをお勧めします。yaml ファイルを生成するコマンドは次のとおりです。
kubectl run 名字 --image=镜像 --dry-run=client -o yaml > pod.yaml
复制代码
ここで、 --dry-run=client は、ポッドの作成をシミュレートすることを意味しますが、実際には作成しません。 -o yaml は、yaml ファイルの形式で出力し、結果を pod.yaml にリダイレクトすることを意味します。
ステップ 1: この章に関連するファイルは pod ディレクトリに個別に配置され、ディレクトリ pod を作成してそこに cd します。
[root@vms10 ~]# mkdir pod ; cd pod
[root@vms10 pod]#
复制代码
ステップ 2: pod1 の yaml ファイル pod1.yaml を作成します。
[root@vms10 pod]# kubectl run pod1 --image=nginx --dry-run=client -o yaml > pod1.yaml
[root@vms10 pod]#
复制代码
ステップ 3: pod1.yaml の内容を変更し、imagePullPolicy: IfNotPresent を追加します。
[root@vms10 pod]# cat pod1.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: pod1 # 这里pod标签设置为run=pod1
name: pod1 # pod名为pod1
spec:
containers:
- image: nginx # pod所使用的镜像
imagePullPolicy: IfNotPresent
name: pod1 # 这个是容器名
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
[root@vms10 pod]#
复制代码
この yaml ファイルを使用してポッドを作成するための構文は次のとおりです。
kubectl apply -f yaml 文件
复制代码
名前空間を指定する場合は、kubectl apply -f yaml -n namespace を使用します。
ステップ 4: ポッドを作成します。
[root@vms10 pod]# kubectl apply -f pod1.yaml
pod/pod1 created
[root@vms10 pod]#
复制代码
ステップ 5: ポッドを表示します。
[root@vms10 pod]# kubectl get pods
NAME READY STATUS RESTARTS AGE
pod1 1/1 Running 0 2s
[root@vms10 pod]#
复制代码
演習: ポッド yaml ファイルを生成する
ステップ 1: このポッドで echo aa の実行を要求し、1000 秒間スリープします。
[root@vms10 pod]# kubectl run pod2 --imgage=nginx --image-pull-policy=IfNotPresent --dry-run=client -o yaml -- sh -c "echo aa ; sleep 1000" > pod2.yaml
[root@vms10 pod]#
复制代码
内容は以下の通りです。
[root@vms10 pod]# cat pod2.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: pod2
name: pod2
spec:
containers:
- args:
- sh
- -c
- echo aa ; sleep 1000
image: nginx
imagePullPolicy: IfNotPresent
name: pod2
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
[root@vms10 pod]#
复制代码
このように、pod2 が実行されている場合、コンテナ内で実行されているプロセスは、ミラー nginx の CMD で指定されたプロセスではありません。
containers:
- command:
- sh
- -c
- echo aa ; sleep 1000
image: nginx
复制代码
ここでのコマンドは複数行で記述することもできますが、1行で記述することもでき、jsonファイルの形式で以下の形式で記述します。
containers:
- command: ["sh", "-c", "echo aa ; sleep 1000"]
image: nginx
复制代码
注: 試験中に、このコマンドを使用して yaml ファイルをすばやく生成し、それを変更できます。
ステップ 2: ポッド 2 を作成します。
[root@vms10 pod]# kubectl apply -f pod2.yaml
pod/pod2 created
[root@vms10 pod]#
复制代码
ステップ 3: 既存のポッドを表示します。
[root@vms10 pod]# kubectl get pods
NAME READY STATUS RESTARTS AGE
pod1 1/1 Running 0 6m8s
pod2 1/1 Running 0 3s
[root@vms10 pod]#
复制代码
ステップ 4: ポッド 2 を削除します。
[root@vms10 pod]# kubectl delete -f pod2.yaml
pod "pod2" deleted
[root@vms10 pod]#
复制代码
ステップ 5: 図 5-4 に示すように、pod2.yaml の内容を変更します。
ステップ 6: このポッドを作成します。
[root@vms10 pod]# kubectl apply -f pod2.yaml
pod/pod2 created
[root@vms10 pod]#
复制代码
ステップ 7: ポッドを表示します。
[root@vms10 pod]# kubectl get pods
NAME READY STATUS RESTARTS AGE
pod1 1/1 Running 0 9m8s
pod2 2/2 Running 0 3s
[root@vms10 pod]#
复制代码
ここで、pod2 は 2/2 を示し、ポッド内に 2 つのコンテナーがあり、両方のコンテナーが正常に実行されていることを示します。
kubernetes では、ノード、ポッド、デプロイメント、後で説明するサービスなどのすべてのリソースにラベルがあります。
ステップ 8: ポッドとラベルの情報を表示します。
[root@vms10 pod]# kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
pod1 1/1 Running 0 10m18s run=pod1
pod2 2/2 Running 0 7s run=pod2
[root@vms10 pod]#
复制代码
ステップ 9: -l (ラベルの最初の文字) を使用してラベルを指定します。これは、ラベル run=pod1 を持つポッドを表示するなど、特定のラベルを持つポッドを一覧表示するために使用されます。
[root@vms10 pod]# kubectl get pods -l run=pod1
NAME READY STATUS RESTARTS AGE
pod1 1/1 Running 0 11m49s
[root@vms10 pod]#