k8s常用命令

一、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

7.1 创建:

kubectl create -f ns-dev.yaml

7.2 删除:

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 # 主机端口
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我无法提供思维导图。但是,我可以为您提供一些常用的Kubernetes命令。以下是一些常用的Kubernetes命令: 1. kubectl get pods:获取当前集群中的所有Pods的信息。 2. kubectl get deployments:获取当前集群中的所有Deployments的信息。 3. kubectl get services:获取当前集群中的所有Services的信息。 4. kubectl create deployment \[deployment-name\] --image=\[image-name\]:创建一个新的Deployment。 5. kubectl scale deployment \[deployment-name\] --replicas=\[number\]:扩展或缩小一个Deployment的副本数量。 6. kubectl delete deployment \[deployment-name\]:删除一个Deployment。 7. kubectl describe pod \[pod-name\]:获取一个Pod的详细信息。 8. kubectl logs \[pod-name\]:获取一个Pod的日志。 9. kubectl exec -it \[pod-name\] -- \[command\]:在一个Pod中执行一个命令。 10. kubectl apply -f \[file-name\]:使用一个YAML文件创建或更新资源。 这些是一些常用的Kubernetes命令,可以帮助您管理和操作Kubernetes集群中的资源。希望对您有所帮助! #### 引用[.reference_title] - *1* *2* *3* [k8s学习-思维导图与学习笔记](https://blog.csdn.net/lady_killer9/article/details/124544947)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值