k8s常用命令
1、查看pod(查看其他资源类型的信息只需要把pod换为svc、deployment、configmap=cm、pv、pvc)信息,-o其他选项,wide显示长信息,yaml显示为yaml格式 1.1 查看pod详细信息 kubectl get pod -o wide 1.2 查看pod信息 kubectl get pod READY代表就绪 STATUS当前容器状态 RESTARTS重建次数(相当于recreate) 1.3 查看pod的标签 kubectl get pod --show-labels 所有 可用于筛选标签: kubectl get pod -l app 如果pod有key为app的标签就会被筛选出来 1.4 查看所有空间的Pod kubectl get pod --all-namepaces kubectl get pod -A 查看所有空间的pod --all-namepaces=-A 2、进入指定容器 kubectl exec -it pod-demo -c myapp-1 -- /bin/sh # 资源(pod名) 容器名(如果资源下有多个容器就要加-c指定) --固定格式 3、查看pod里的pod-demo的详细信息 kubectl describe pod pod-demo 详细信息 pod名 Events事件 RPC协议(用于C/S之间传送数据):远程过程调用 4、查看容器日志 kubectl logs pod-demo -c myapp 格式: kubectl logs pod名 -c 容器名 ###一般不用指定容器,除非一个pod里有多个容器才需要指定容器名 5、获取节点信息 kubectl get node 获取节点信息 NotReady:扁平化网络 可加选项 -o wide显示详细信息 6、如何查看node或pod资源利用率? kubectl top pod -ncka #查看cka命名空间的Pod kubectl top pod #查看default命名空间的Pod 7、强制修改pod标签 kubectl label pod pod名 app=tomcat --overwrite # --overwrite强制修改 8、干跑 kubectl create svc clusterip myapp --tcp=80:80 --dry-run -o yaml clusterip类型 --dry-run测试不是真的运行 9、打补丁 修改configmap配置文件之后cm配置文件更新但是不会触发pod热更新 ######切记配置文件只有这样修改才能生效,进入容器修改不了(配置文件是只读状态) kubectl get cm #查看condigmap的信息 kubectl edit cm cm的名字 #修改对应的configmap ConfigMap 更新后滚动更新 Pod 更新 ConfigMap 目前并不会触发相关 Pod 的滚动更新,可以通过修改 pod annotations 的方式强制触发滚动更新 kubectl get deployment #查看deployment控制器的信息 kubectl patch deployment deployment的名字 --patch '{"spec": {"template": {"metadata": {"annotations": {"version/config": "20221009-10:26" }}}}}' #打补丁(可修改字段为日期和时间,只要修改日期和时间之后pod会滚动更新) 只要.spec.template.metadata.annotations.version/config 字段发生改变就触发pod更新 这个例子里我们在 .spec.template.metadata.annotations 中添加 version/config,每次通过修改 version/config 来触发滚动更新 !!! 更新 ConfigMap 后: 使用该 ConfigMap 挂载的 Env 不会同步更新 使用该 ConfigMap 挂载的 Volume 中的数据需要一段时间(实测大概10秒)才能同步更新 10、依照yaml文件创建资源和创建失败回退 依照yaml文件创建资源: kubectl apply -f mysql.yaml 删除依照yaml文件创建的资源: kubectl delete -f mysql.yaml 如果pod启动失败需要重新创建: 1.查看pod所对应的控制器的名字 kubectl get deployment 2.删除对应的控制器(如果不删除对应的控制器,pod还会重新创建) kubectl delete deployment deploymeny-name