kubeclt常用命令整理
查看类命令
kubectl version
#查看资源缩写名字
kubectl api-resources
查看集群信息:主节点,dns:ip
kubectl cluster-info
node 节点查看日志
journalctl -u kubelet -f
或者直接查看日志
cat /var/log/messages
这里有创建pod的相关日志,如果pod还没创建完成 kubectl无法获取日志,只能通过这里查看。
kubectl get <resource> [-o wide | json | yaml] [-n namespace]
描述某个资源的详细信息
kubectl describe deployment nginx-cc -n kube-public
kubectl describe pod nginx-cc-5d7d5c6b54 -n kube-public
#如果一些资源没有正常启动,是无法查看日志的!!!!!
kubectl logs nginx-65fc77987d-wh9fx
新建/删除类命令
创建命名空间 (app)
kubectl create ns app #delete
创建deployment
kubectl create deployment nginx-wl --image=nginx -n kube-public #delete
kubectl run nginx --image=nginx:1.14 --port=80 --replicas=3
kubectl delete deployment/nginx
#有些在摧毁的pod,卡住了,不能delete,需要强制删除
kubectl delete pod --force --grace-period=0 mysql5738-76f755695-bqg6m
横向纵向 弹性变化
扩容缩容
kubectl scale deployment nginx-cc --replicas=2 -n kube-public #扩容
kubectl scale deployment nginx-cc --replicas=1 -n kube-public #缩容
升级镜像:会自动一个个回滚-------灰度发布。
#nginx第一个是deployment的名字,
#nginx-xxx为pod子容器的名字,使用"kubectl describe pod Pod名"就可查询到。容器标签下,第一行的名字就是!!!!!
kubectl set image deployment nginx nginx-xxx=nginx:1.15
kubectl set image deployment mysql5738 mysql5738=c104.cheng.com/cheng/mysql:5.7.381
###curl -I http://192.168.111.173:32238,可以升级nigix,然后看版本号确定效果。
#实时查看变化的状态
kubectl get pods -l pod=myapp -w
kubectl get deployment deployment -w
回滚:
`kubectl rollout history deployment/nginx #查看所有的版本,有版本号`显示
kubectl rollout undo deployment/nginx --to-revision=2
kubectl rollout undo deployment/nginx #回滚上一个版本,再次回滚到了现在的版本,只能这两个版本切换!!!
##驱赶node上的所有pod
kubectl drain <node name>
##通知可以来这个节点:
kubectl uncordon <node name>
cordon 停止调度
kubectl cordon <node name>
影响最小,只会将node调为SchedulingDisabled
之后再发创建pod,不会被调度到该节点
旧有的pod不会受到影响,仍正常对外提供服务
--ignore-daemonsets 驱逐 pod 时忽略 daemonset
--delete-local-data 驱逐 pod 时删除 pod 的临时数据,该参数不会删除持久化数据
################################
上面也叫 陈述式管理
也有一种声明式管理:
################################
声明式管理
1.适合于对资源的修改操作
2.声明式资源管理方法依赖于资源配置清单文件对资源进行管理资源配置清单文件有两种格式: yaml (人性化,易读),json (易于api接口解析)
3.对资源的管理,是通过事先定义在统–资源配置清单内,再通过陈述式命令应用到k8s集群里
4.语法格式:
kubectl create/app1y/delete -f xxxx.yaml
资源的的管理:
#进入容器内部
kubectl exec -it mysql5.7.38-66b756db89-ss72l bash
#看内对应资源的所有支持标签,查到的标签 + 点+名字继续看下面的标签!
kubectl explain deployment.spec.template.spec.containers |grep \<*\>
kubectl edit pv 名字 在线编辑 参数,及删除强制删除绑定的pv
而如果要强制删除PV则需要编辑PV并删除PV中的ffinalizers属性来强制删除PV
绑定的pvc可以直接删除。但是pv就变成了Released 释放中,此时重新创建pvc也不会绑定,需要在线删除pv的claimRef参数,让其变成Available状态