查看集群信息

# 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

参考文档:

https://www.cnblogs.com/menkeyi/p/7128809.html

https://blog.csdn.net/bbwangj/article/details/82793013

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐