Kubernetes 認定試験の自習シリーズ | ポッドの作成と削除

書籍出典: 『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]#

おすすめ

転載: blog.csdn.net/guolianggsta/article/details/130572604