提示: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} |
以上内容为个人学习理解,如有问题,欢迎在评论区指出。