k8s常用命令

本文详细介绍了在Kubernetes中操作namespace、pod、label、deployment和service的常用命令,包括创建、查看、编辑、删除等操作,是k8s管理员的实用参考指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、namespace

1.查看所有namespace

2.查看指定的namespace

3.查看namespace并指定输出格式

4.查看namespace详情

5.创建namespace

6.删除namespace

7.通过yaml文件创建、删除namespace

二、pod

1.创建并运行pod

2.查看pod信息

3.查看pod详情

4.获取pod IP

5.删除指定pod

6.查看pod资源配置项

7.设置pod镜像拉取策略

8.设置污点

9.去除污点

10.去除所有污点

三、label

1.给pod资源打标签

2.更新pod标签

3.查看pod标签

4.筛选标签

5.删除标签

四、控制器

1.创建deployment

2.查看deployment信息

3.查看deployment详情

4.删除deployment

5.创建replicaSet

6.查看replicaSet

7.编辑rs副本数量

8.rs镜像升级

9.删除replicaSet,不保留pod

10.删除replicaSet,保留pod(不推荐)

11.通过yaml文件删除replicaset

12.deploy更改副本数量

13.deployment镜像变更

14.查看deployment当前升级版本状态

15.查看deployment历史升级记录

16.deployment版本回退

17.继续已暂停的版本升级过程

18.通过yaml文件删除deployment

五、service


一、namespace

1.查看所有namespace

  • kubectl get ns

2.查看指定的namespace

  • kubectl get ns ns名称

3.查看namespace并指定输出格式

  • kubectl get ns ns名称 -o 格式参数

k8s支持的格式有:wide、json、yaml

4.查看namespace详情

  • kubectl describe ns ns名称

5.创建namespace

  • kubectl create ns namespace名称

6.删除namespace

  • kubectl delete ns namespace名称

7.通过yaml文件创建、删除namespace

ns-dev.yaml文件:

apiVersion: v1
kind: Namespace
metadata:
  name: dev

创建:kubectl create -f ns-dev.yaml

删除:kubectl delete -f ns-dev.yaml

二、pod

查看pod资源清单:

kubectl explain pod.spec.containers

pod资源清单:

apiVersion: v1     #必选,版本号,例如v1
kind: Pod         #必选,资源类型,例如 Pod
metadata:         #必选,元数据
  name: string     #必选,Pod名称
  namespace: string  #Pod所属的命名空间,默认为"default"
  labels:           #自定义标签列表
    - name: string                 
spec:  #必选,Pod中容器的详细定义
  containers:  #必选,Pod中容器列表
  - name: string   #必选,容器名称
    image: string  #必选,容器的镜像名称
    imagePullPolicy: [ Always|Never|IfNotPresent ]  #获取镜像的策略 
    command: [string]   #容器的启动命令列表,如不指定,使用打包时使用的启动命令
    args: [string]      #容器的启动命令参数列表
    workingDir: string  #容器的工作目录
    volumeMounts:       #挂载到容器内部的存储卷配置
    - name: string      #引用pod定义的共享存储卷的名称,需用volumes[]部分定义的的卷名
      mountPath: string #存储卷在容器内mount的绝对路径,应少于512字符
      readOnly: boolean #是否为只读模式
    ports: #需要暴露的端口库号列表
    - name: string        #端口的名称
      containerPort: int  #容器需要监听的端口号
      hostPort: int       #容器所在主机需要监听的端口号,默认与Container相同
      protocol: string    #端口协议,支持TCP和UDP,默认TCP
    env:   #容器运行前需设置的环境变量列表
    - name: string  #环境变量名称
      value: string #环境变量的值
    resources: #资源限制和请求的设置
      limits:  #资源限制的设置
        cpu: string     #Cpu的限制,单位为core数,将用于docker run --cpu-shares参数
        memory: string  #内存限制,单位可以为Mib/Gib,将用于docker run --memory参数
      requests: #资源请求的设置
        cpu: string    #Cpu请求,容器启动的初始可用数量
        memory: string #内存请求,容器启动的初始可用数量
    lifecycle: #生命周期钩子
        postStart: #容器启动后立即执行此钩子,如果执行失败,会根据重启策略进行重启
        preStop: #容器终止前执行此钩子,无论结果如何,容器都会终止
    livenessProbe:  #对Pod内各容器健康检查的设置,当探测无响应几次后将自动重启该容器
      exec:         #对Pod容器内检查方式设置为exec方式
        command: [string]  #exec方式需要制定的命令或脚本
      httpGet:       #对Pod内个容器健康检查方法设置为HttpGet,需要制定Path、port
        path: string
        port: number
        host: string
        scheme: string
        HttpHeaders:
        - name: string
          value: string
      tcpSocket:     #对Pod内个容器健康检查方式设置为tcpSocket方式
         port: number
       initialDelaySeconds: 0       #容器启动完成后首次探测的时间,单位为秒
       timeoutSeconds: 0          #对容器健康检查探测等待响应的超时时间,单位秒,默认1秒
       periodSeconds: 0           #对容器监控检查的定期探测时间设置,单位秒,默认10秒一次
       successThreshold: 0
       failureThreshold: 0
       securityContext:
         privileged: false
  restartPolicy: [Always | Never | OnFailure]  #Pod的重启策略
  nodeName: <string> #设置NodeName表示将该Pod调度到指定到名称的node节点上
  nodeSelector: obeject #设置NodeSelector表示将该Pod调度到包含这个label的node上
  imagePullSecrets: #Pull镜像时使用的secret名称,以key:secretkey格式指定
  - name: string
  hostNetwork: false   #是否使用主机网络模式,默认为false,如果设置为true,表示使用宿主机网络
  volumes:   #在该pod上定义共享存储卷列表
  - name: string    #共享存储卷名称 (volumes类型有很多种)
    emptyDir: {}       #类型为emtyDir的存储卷,与Pod同生命周期的一个临时目录。为空值
    hostPath: string   #类型为hostPath的存储卷,表示挂载Pod所在宿主机的目录
      path: string                #Pod所在宿主机的目录,将被用于同期中mount的目录
    secret:          #类型为secret的存储卷,挂载集群与定义的secret对象到容器内部
      scretname: string  
      items:     
      - key: string
        path: string
    configMap:         #类型为configMap的存储卷,挂载预定义的configMap对象到容器内部
      name: string
      items:
      - key: string
        path: string

1.创建并运行pod

方式一:

  • kubectl run 控制器名称 --image=镜像名称:版本 --port=端口 --namespace namespace名称

方式二:通过yaml文件创建pod:

  • 创建pod:kubectl apply -f pod-base.yaml, pod-base.yaml:
apiVersion: v1    #版本号
kind: Pod    #资源类型
metadata:
  name: Pod名称    #Pod名称
  namespace: 命名空间名称    #Pod所属的命名空间
spec:    #Pod中容器的详细定义
  containers:    #Pod中容器列表
  - name: 容器名
    image: 镜像名:版本
  - name: 容器名
    image: 镜像名:版本

2.查看pod信息

  • kubectl get pod -n 命名空间名称

3.查看pod详情

  • kubectl describe pod pod名称 -n 命名空间名称

4.获取pod IP

  • kubectl get pod -n dev -o wide

5.删除指定pod

方式一:

  • kubectl delete pod pod名称 -n 命名空间名称

方式二,通过yaml文件删除pod:

  • kubectl delete -f pod-nginx.yaml, pod-base.yaml:
apiVersion: v1
kind: Pod
metadata:
  name: pod名称
  namespace: 命名空间
spec:
  containers:
  - image: 镜像名:版本
    name: 容器名
    ports:
    - name: 端口的名称
      containerPort: 容器需要监听的端口号
      protocol: 端口协议,支持TCP和UDP

6.查看pod资源配置项

  • kubectl explain pod

7.设置pod镜像拉取策略

pod-imagepullpolicy.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: pod名称
  namespace: 命名空间
spec:
  containers:
  - name: 容器名
    image: 镜像名:版本
    imagePullPolicy: Never # 用于设置镜像拉取策略

使用kubectl create -f pod-imagepullpolicy.yaml命令即可

8.设置污点

  • kubectl taint nodes node名字 key=value:effect
  • key和value是污点的标签,effect描述污点的作用
  • effect选项:PreferNoSchedule、NoSchedule、NoExecute

9.去除污点

  • kubectl taint nodes node名字 key:effect-

10.去除所有污点

  • kubectl taint nodes node名字key-

三、label

1.给pod资源打标签

  • kubectl label pod nginx-pod 标签key=标签value -n 命名空间

2.更新pod标签

  • kubectl label pod pod名称 标签key=标签value -n 命名空间 --overwrite

3.查看pod标签

  • kubectl get pod pod名称 -n 命名空间 --show-labels

4.筛选标签

  • kubectl get pod -n 命名空间 -l 标签key=标签value --show-labels
  • kubectl get pod -n 命名空间 -l 标签key!=标签value --show-labels

5.删除标签

  • kubectl label pod pod名称 标签key- -n 命名空间

四、控制器

replicaSet资源清单:

apiVersion: apps/v1 # 版本号
kind: ReplicaSet # 类型       
metadata: # 元数据
  name: # rs名称 
  namespace: # 所属命名空间 
  labels: #标签
    controller: rs
spec: # 详情描述
  replicas: 3 # 副本数量
  selector: # 选择器,通过它指定该控制器管理哪些pod
    matchLabels:      # Labels匹配规则
      app: nginx-pod
    matchExpressions: # Expressions匹配规则
      - {key: app, operator: In, values: [nginx-pod]}
  template: # 模板,当副本数量不足时,会根据下面的模板创建pod副本
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
      - name: nginx
        image: nginx:1.17.1
        ports:
        - containerPort: 80

deployment资源清单:

apiVersion: apps/v1 # 版本号
kind: Deployment # 类型       
metadata: # 元数据
  name: # rs名称 
  namespace: # 所属命名空间 
  labels: #标签
    controller: deploy
spec: # 详情描述
  replicas: 3 # 副本数量
  revisionHistoryLimit: 3 # 保留历史版本
  paused: false # 暂停部署,默认是false
  progressDeadlineSeconds: 600 # 部署超时时间(s),默认是600
  strategy: # 策略
    type: RollingUpdate # 滚动更新策略,可选Recreate重建更新
    rollingUpdate: # 滚动更新
      maxSurge: 30% # 最大额外可以存在的副本数,可以为百分比,也可以为整数
      maxUnavailable: 30% # 最大不可用状态的 Pod 的最大值,可以为百分比,也可以为整数
  selector: # 选择器,通过它指定该控制器管理哪些pod
    matchLabels:      # Labels匹配规则
      app: nginx-pod
    matchExpressions: # Expressions匹配规则
      - {key: app, operator: In, values: [nginx-pod]}
  template: # 模板,当副本数量不足时,会根据下面的模板创建pod副本
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
      - name: nginx
        image: nginx:1.17.1
        ports:
        - containerPort: 80

1.创建deployment

方式一:

  • kubectl create deployment名称 --image=镜像名:版本 --port=端口号 --replicas=要创建的pod数量 -n 命名空间

方式二:

  • kubectl create -f deploy-demo.yaml

deploy-demo.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy名称
  namespace: 命名空间名称
spec:
  replicas: 3    #pod数量
  selector:    #选择器,通过它指定该控制器管理哪些pod
    matchLabels: #标签匹配规则
      run: nginx
  template:
    metadata:
      labels:
        run: nginx
    spec:
      containers:
      - image: nginx:latest
        name: nginx
        ports:
        - containerPort: 80
          protocol: TCP

2.查看deployment信息

  • kubectl get deploy -n 命名空间 -o wide

3.查看deployment详情

  • kubectl describe deploy deployment名称 -n dev

4.删除deployment

  • kubectl delete deploy deploy名称 -n 命名空间

5.创建replicaSet

pc-replicaset.yaml文件:

apiVersion: apps/v1
kind: ReplicaSet   
metadata:
  name: pc-replicaset
  namespace: dev
spec:
  replicas: 3
  selector: 
    matchLabels:
      app: nginx-pod
  template:
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
      - name: nginx
        image: nginx:1.17.1
  • kubectl create -f pc-replicaset.yaml

6.查看replicaSet

  • kubectl get rs rs名字 -n 命名空间名称 -o wide

7.编辑rs副本数量

方式一:

  • kubectl edit rs rs名称 -n 命名空间名称,然后修改yaml文件中replicas数量即可

方式二:

  • kubectl scale rs rs名称 --replicas=副本数量 -n 命名空间名称

8.rs镜像升级

方式一:

  • kubectl edit rs rs名称 -n 命名空间名称,然后修改yaml文件中image即可

方式二:

  • kubectl set image rs rs名称 容器=镜像名:镜像版本 -n 命名空间名称

9.删除replicaSet,不保留pod

  • kubectl delete rs rs名称 -n 命名空间

10.删除replicaSet,保留pod(不推荐)

  • kubectl delete rs rs名称 -n 命名空间名称 --cascade=false

11.通过yaml文件删除replicaset

  • kubectl delete -f pc-replicaset.yaml

12.deploy更改副本数量

方式一:

  • kubectl scale deploy deploy名称 --replicas=副本数量 -n 命名空间名称

方式二:

  • kubectl edit deploy deploy名称 -n 命名空间,然后直接修改yaml文件中replicas数量即可

13.deployment镜像变更

  • kubectl set image deploy deploy名称 容器=镜像名:版本 -n 命名空间名称

14.查看deployment当前升级版本状态

  • kubectl rollout status deploy deploy名称 -n 命名空间名称

15.查看deployment历史升级记录

  • kubectl rollout history deploy deploy名称 -n 命名空间名称

16.deployment版本回退

  • kubectl rollout undo deploy deploy名称 --to-revision=回退版本 -n 命名空间名称

忽略 --to-revision选项就是回退到上个版本,历史版本通过第15条命令查看。

17.继续已暂停的版本升级过程

  • kubectl rollout resume deploy deploy名称 -n 命名空间名称

18.通过yaml文件删除deployment

  • kubectl delete -f deploy-demo.yaml

deploy-demo.yaml在第一条命令中

五、service

service资源清单:

kind: Service  # 资源类型
apiVersion: v1  # 资源版本
metadata: # 元数据
  name: service # 资源名称
  namespace: dev # 命名空间
spec: # 描述
  selector: # 标签选择器,用于确定当前service代理哪些pod
    app: nginx
  type: # Service类型,指定service的访问方式
  clusterIP:  # 虚拟服务的ip地址
  sessionAffinity: # session亲和性,支持ClientIP、None两个选项
  ports: # 端口信息
    - protocol: TCP 
      port: 3017  # service端口
      targetPort: 5003 # pod端口
      nodePort: 31122 # 主机端口

是一些Kubernetes集群维护的基本命令: 1. 获取集群信息:kubectl cluster-info ```shell kubectl cluster-info ``` 2. 获取节点信息:kubectl get nodes ```shell kubectl get nodes ``` 3. 获取Pod信息:kubectl get pods ```shell kubectl get pods ``` 4. 获取服务信息:kubectl get services ```shell kubectl get services ``` 5. 获取命名空间信息:kubectl get namespaces ```shell kubectl get namespaces ``` 6. 获取配置信息:kubectl config view ```shell kubectl config view ``` 7. 获取事件信息:kubectl get events ```shell kubectl get events ``` 8. 获取日志信息:kubectl logs <pod-name> ```shell kubectl logs <pod-name> ``` 9. 获取Pod的详细信息:kubectl describe pod <pod-name> ```shell kubectl describe pod <pod-name> ``` 10. 获取服务的详细信息:kubectl describe service <service-name> ```shell kubectl describe service <service-name> ``` 11. 获取节点的详细信息:kubectl describe node <node-name> ```shell kubectl describe node <node-name> ``` 12. 获取命名空间的详细信息:kubectl describe namespace <namespace-name> ```shell kubectl describe namespace <namespace-name> ``` 13. 获取部署的详细信息:kubectl describe deployment <deployment-name> ```shell kubectl describe deployment <deployment-name> ``` 14. 获取状态集的详细信息:kubectl describe statefulset <statefulset-name> ```shell kubectl describe statefulset <statefulset-name> ``` 15. 获取副本集的详细信息:kubectl describe replicaset <replicaset-name> ```shell kubectl describe replicaset <replicaset-name> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值