k8s基本命令
查看集群信息# kubectl cluster-info查看各组件状态[root@bigdata003 ~]# kubectl -s http://172.20.127.51:8080 get componentstatusesNAMESTATUSMESSAGEERRORscheduler...
查看集群信息
# kubectl cluster-info
查看各组件状态
[root@bigdata003 ~]# kubectl -s http://172.20.127.51:8080 get componentstatuses NAME STATUS MESSAGE ERROR scheduler Healthy ok controller-manager Healthy ok etcd-0 Healthy {"health":"true"}
GET信息
查看节点
# kubectl get nodes
查看rc namespace pod和svc
# kubectl get rc,namespace # kubectl get pods,svc -o json:以json格式输出pod的详细信息 # kubectl get pod mysql -o json -o wide:查看指定pod跑在哪个node上 # kubectl get pod mysql -o wide 获取指定json或ymal格式的KEY数据,custom-columns=XXX(自定义列名):.status.hostIP(以“点开始”,然后写路径就可以): [root@bigdata003 k8s]# kubectl get po mysql-3238461207-n2x0q -o custom-columns=hostIp:.status.hostIP,podIP:.status.podIP hostIp podIP 172.20.127.60 10.8.28.4
describe方法
获取资源的详细信息
[root@bigdata003 k8s]# kubectl describe svc mysql [root@bigdata003 k8s]# kubectl describe pod mysql-3238461207-n2x0q
create创建
定义好resource的yaml或json文件,即可创建文件内定义的resource
kubectl create -f filename
更新替换资源
repalce
对已有资源进行更新、替换。如果修改副本数量,增加、修改label,更改image版本,修改端口等。都可以直接修改原yaml文件,然后执行replace命令。注:默认并不会删除原来的pod
kubectl replace -f filename.yaml
patch
一个容器已经在运行,这时需要对一些容器属性进行修改,又不想删除容器,或不方便通过replace的方式进行更新。在容器运行时,直接对容器进行修改的方式。 如前面创建pod的label是app=mysql,如果在运行过程中,需要把其label改为app=mysql-zyl:
[root@bigdata003 k8s]# kubectl patch pod mysql-3238461207-n2x0q -piqt -p '{"metadata":{"labels":{"app":"mysql-zyl"}}}'
apply
与replace相同,不同的是,apply不会删除原有resource再创建新的,而是直接在原有resource的基础上进行更新。
kubectl apply -f filename.yaml
Delete
根据resource名或label删除resource。
[root@bigdata003 k8s]# kubectl delete -f mysql.yaml [root@bigdata003 k8s]# kubectl delete pod mysql-3238461207-hl1nt [root@bigdata003 k8s]# kubectl delete pod -lapp=mysql-zyl
rolling-update(important)
提供了不中断业务的更新方式:每次起一个新的pod,等新pod完全起来后删除一个旧的pod,然后再起一个新的pod替换旧的pod,直到替换掉所有的pod。
注意:确保新版本有不同的name,Version和label。
rolling-update需要确保新的版本有不同的name,Version和label,否则会报错 。
kubectl rolling-update mysql-3238461207-32m7p -f mysql.yaml
如果在升级过程中,发现有问题还可以中途停止update,并回滚到前面版本
kubectl rolling-update mysql-3238461207-32m7p --rollback
扩容
scale(important)
在负载加重或缩小时副本进行扩容或缩小,使用scale命令对副本数进行控制。 扩展副本数到4:
kubectl scale rc rc-nginx-3 --replicas=4 kubectl scale deployment mysql --replicas=3
autoscale
负载自动在指定的范围内对pod进行扩容或缩容
kubectl autoscale deployment mysql --replicas=3 kubectl autoscale rc rc-nginx-3 --min=1 --max=4
查看某个pod重启次数
[root@bigdata003 k8s]# kubectl get pod mysql-3238461207-32m7p --template="{{range .status.containerStatuses}}{{.name}}:{{.restartCount}}{{end}}"
导出配置文件
导出proxy
kubectl get ds -n kube-system -l k8s-app=kube-proxy -o yaml>kube-proxy-ds.yaml
导出kube-dns
kubectl get deployment -n kube-system -l k8s-app=kube-dns -o yaml >kube-dns-dp.yaml kubectl get services -n kube-system -l k8s-app=kube-dns -o yaml >kube-dns-services.yaml
导出所有 configmap
kubectl get configmap -n kube-system -o wide -o yaml > configmap.yaml
复杂操作命令
删除kube-system 下Evicted状态的所有pod:
kubectl get pods -n kube-system |grep Evicted| awk '{print $1}'|xargs kubectl delete pod -n kube-system
维护环境相关命令
- 重启kubelet服务 systemctl daemon-reload systemctl restart kubelet - 修改启动参数 vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf - 查看kubelet进程启动参数 ps -ef | grep kubelet - 查看日志: journalctl -u kubelet -f - 设为不可调度状态: kubectl cordon node1 - 将pod赶到其他节点: kubectl drain node1 - 解除不可调度状态 kubectl uncordon node1
参考文档:
更多推荐
所有评论(0)