kubernetes常用命令

提示:kubectl操作的是kubernetes中的资源,node、pod、deployment等都被称为资源,所以很多命令是通用的。比如,kubectl get命令:kubectl get ns、kubectl get pod、kubectl get svc。

1、查看kubernetes api文档

建立kubernetes反向代理 kubectl proxy --port=8080
下载kubernetes api 文件 curl -s 127.0.0.1:8080/openapi/v2 > k8s-swagger.json
docker启动kubernetes api swagger容器 docker run --name swagger -itd -p 8080:8080 -e SWAGGER_JSON=/k8s-work-swagger.json -v /data/sdv1/karmada/k8s-work-swagger1.json:/k8s-work-swagger.json swaggerapi/swagger-ui

2、集群与命名空间

查看命名空间 kubectl get ns
创建命名空间 kubectl create namespace ${namespaceName}
查询集群状态信息 kubectl cluster-info
查看集群状态 kubectl get cs
定义集群 kubectl config set-context ${clusterName} --server=http://192.168.1.128:8080
定义context kubectl config set-context ${contextName} --namespace=${nameSpace} --cluster=${clusterName} --user=${userName}
查看已定义的context kubectl config view
选中要使用的集群 kubectl config use-context    ${contextName}
查询集群上下文信息 kubectl config get-contexts

3、Node

查询集群所有node kubectl top node [-o wide]
查看集群中的Node kubectl get nodes
kubectl get nodes -n ${nameSpace}
查看某个Node的详细情况 kubectl describe node ${nodeName}
给某个节点打标签 kubectl label node ${nodeName} ${labelName} = ${labelValue}
删除节点标签 kubectl label node ${nodeName} ${labelName}-
修改节点标签 kubectl label node ${nodeName} ${labelName} = ${labelValue} --overwrite
查看节点标签 kubectl get nodes --show-labels
Node隔离调度

kubectl patch node ${nodeName} -p '{"spec":{"unschedulable":true}}'

kubectl cordon ${nodeName}

Node恢复调度

kubectl patch node ${nodeName} -p '{"spec":{"unschedulable":false}}'

kubectl uncordon ${nodeName}

设置污点

kubectl taint nodes ${nodeName} key=value:NoSchedule

        NoSchedule:            不允许Pod调度到该节点

        PreferNoSchedule:    尽量不要让Pod调度到该节点

        NoExecute:            不允许Pod调度到该节点,并且且将该节点上没有容忍该污点的Pod将进行驱逐

删除该key的所有污点 kubectl taint node ${nodeName} key-
删除该key的某一个污点

kubectl taint node ${nodeName} key=value:NoSchedule-

kubectl taint node ${nodeName} key:NoSchedule-

4、Deployment

查看已创建RC kubectl get rc
查看已创建deployment kubectl get deployment
创建资源 kubectl create -f xxx.yaml
修改资源 kubectl replace -f xxx.yaml
镜像升级

kubectl set image deployment ${deploymentName} ${deploymentName} = ${image} 

kubectl edit deployments.apps ${deploymentName}        直接修改yaml->修改镜像

查看deployment的更新过程 kubectl rollout status deployment ${deploymentName}
查看deployment的部署记录 kubectl rollout history deployment ${deploymentName}
查看记录中指定版本的详细信息 kubectl rollout history deployment ${deploymentName} --revision=${versionNumber}
撤销本地版本发布 kubectl rollout undo deployment ${deploymentName}
回滚版本到指定版本 kubectl rollout undo deployment ${deploymentName} --to-revision=${versionNumber}
暂停deployment的更新操作 kubectl rollout pause deployment ${deploymentName}
恢复deployment的更新操作 kubectl rollout resume deployment ${deploymentName}
deployment扩容/缩容

kubectl scale deployment ${deploymentName} --replicas=${number}

kubectl edit deployments.apps ${deploymentName}        直接修改yaml->扩容

容忍配置 tolerations: # 数组类型,可以设置多个容忍
        - key: # 污点key
          operator: # 操作符,有两个选项 Exists and Equal 默认是Equal
          value: # 污点value,如果使用Equal需要设置,如果是Exists就不需要设置
          effect: # 可以设置为NoSchedule、PreferNoSchedule、NoExecute,如果为空表示匹配该key下所有污点,
          tolerationSeconds: # 如果污点类型为NoExecute,还可以设置一个时间,表示这一个时间段内Pod不会被驱逐,过了这个时间段会立刻驱逐,0或者负数会被立刻驱逐

5、Pod

查看已创建pod

kubectl get pods

kubectl get pods -n ${namespace}

查看某个pod的详细情况 kubectl describe pod ${podName} -n ${namespace}
查看某个pod的最近一小时的日志 kubectl logs --since=1h ${podName} -n ${namespace}
查看某个pod的持续日志 kubectl logs -f ${podName} -n ${namespace}
pod删除 kubectl delete pod ${podName} -n ${namespace} [--force]
进入某个容器

kubectl exec -it -n ${namespace} ${podName} sh

kubectl exec -it -n ${namespace} ${podName} --/bin/bash

6、Service

查看已创建Service kubectl get svc
将资源暴露为新的Service kubectl expose deployment ${deploymentName} --name=${serviceName} --port=8888 --target-port=8080 --protocol=TCP --type=NodePort

7、ConfigMaps

从文件中创建configmap

kubectl create configmap ${configmapName} --from-file=[key=]${fileName} --from-file=[key=]${fileName}

从目录中创建configmap kubectl create configmap ${configmapName} --from-file=${dirPath}
从文本中创建configmap kubectl create configmap ${configmapName} --from-literal=${key1}=${value1} --from-literal=${key2}=${value2}
查看ConfigMap列表 kubectl get configmaps
查看指定ConfigMap

kubectl get configmap ${configMapName} -o go-template='{{.data}}'

kubectl describe configmaps ${configMapName}

以上内容为个人学习理解,如有问题,欢迎在评论区指出。

你可能感兴趣的:(运维,运维,kubernetes)