经常在Kubernetes中使用的kubectl命令集合

本文旨在

总结在进行Kubernetes验证时我经常使用的便捷的kubectl命令。

kubectl命令

使用kubectl命令创建<资源名称> <对象名称>,并使用–dry-run=client参数以YAML格式输出到<清单文件名称>。

创建与目标资源相关的清单文件。
就我个人而言,下面列举的资源使用频率较高。
(除了下面列举的资源外,还可以创建各种其他资源)

    • deployment

 

    • service

 

    • namespace

 

    • job

 

    • configmap

 

    secret
$ kubectl create deployment nginx --image=nginx --replicas=2 --dry-run=client -o yaml > nginx.yaml

$ cat nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        resources: {}
status: {}

根据资源情况,适当添加选项是一个好方法。
顺便提一下,在使用–dry-run选项时,官方文档有以下说明。

“none”、”server”、”client “のいずれかでなければならない。”client”の場合、送信されるオブジェクトを送信せずに出力するだけである。”server”の場合、リソースを永続化することなく、サーバーサイドのリクエストを送信する。

kubectl apply -f <マニフェストファイル名>

作成したマニフェストファイルに沿ってリソースを生成・変更する。
上記の”kubectl create”コマンドと一緒に用いられる事が多い。

$ kubectl apply -f nginx.yaml
deployment.apps/nginx created

$ kubectl get deployment
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   2/2     2            2           5m44s

使用原生中国话进行改写如下:

运行命令:kubectl get <资源名称> -o wide。

通过在pod上运行,比普通的”kubectl get”命令可以获得更多的信息。特别是除了对象名称和状态之外,还可以获取IP地址和运行节点的信息,因此非常方便易用。

$ kubectl get pods -o wide
NAME                     READY   STATUS    RESTARTS   AGE     IP         NODE     ...         
nginx-6799fc88d8-bhqj6   1/1     Running   0          2m34s   10.1.0.6   worker1  ...
nginx-6799fc88d8-s5qrp   1/1     Running   0          28s     10.1.0.7   worker2  ...

用 kubectl describe 命令来查看 <资源名> <对象名> 的详细信息。

使用”kubectl get”命令无法获取到有关特定对象的详细信息。因此,我们经常使用它来调查资源是否按预期运行,并获取详细的状态和事件信息。

$ kubectl describe deployment nginx
Name:                   nginx
Namespace:              default
CreationTimestamp:      xxx
Labels:                 app=nginx
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               app=nginx
Replicas:               2 desired | 2 updated | 2 total | 2 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=nginx
  Containers:
   nginx:
    Image:        nginx
    Port:         <none>
    Host Port:    <none>
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Progressing    True    NewReplicaSetAvailable
  Available      True    MinimumReplicasAvailable
OldReplicaSets:  <none>
NewReplicaSet:   nginx-6799fc88d8 (2/2 replicas created)
Events:
  Type    Reason             Age    From                   Message
  ----    ------             ----   ----                   -------
  Normal  ScalingReplicaSet  5m59s  deployment-controller  Scaled up replica set nginx-6799fc88d8 to 1
  Normal  ScalingReplicaSet  3m53s  deployment-controller  Scaled up replica set nginx-6799fc88d8 to 2

使用kubectl编辑<资源名称> <对象名称>。

使用编辑器来更新已生成的对象的设置。
通常情况下,通过修改清单文件并通过应用命令来应用更改,来反映修改。但是,通过使用这个命令,可以简单地更新设置。
然而,由于修改不会反映在清单文件中,所以如果想要正确地管理清单文件的话,建议不要使用这个命令。

$ kubectl get deployment
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   2/2     2            2           5m44s

$ kubectl edit deployment nginx   # replicasを2→3に変更
deployment.apps/nginx edited

$ kubectl get deployment
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   3/3     3            3           12m

印象

如果有其他方便的命令,将适时进行更新。

文献目录

    • 公式ドキュメント:kubernetes.io

Udemy講座:Certified Kubernetes Administrator (CKA) with Practice Tests

广告
将在 10 秒后关闭
bannerAds