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