链接:https://pan.baidu.com/s/1-zTo9HadKGtVhTe3mYNbHg
提取码:7ur6
这是咱们课件云盘地址,后续也会同步到这里,如果不用qq的可以保存下,方便后面获取课件。
1、资源监控
1、kubeadm部署的集群controller-manager、scheduler is Unhealthy
- 对集群没啥影响
kubectl get csWarning: v1 ComponentStatus is deprecated in v1.19+NAME STATUS MESSAGE ERRORcontroller-manager Unhealthy Get "http://127.0.0.1:10252/healthz": dial tcp 127.0.0.1:10252: connect: connection refusedscheduler Unhealthy Get "http://127.0.0.1:10251/healthz": dial tcp 127.0.0.1:10251: connect: connection refusedetcd-0 Healthy {"health":"true"}

大概从1.17版本就存在该问题(类似于bug),至今(1.21版本)未被修复
解决:
ll /etc/kubernetes/manifests/总用量 16-rw------- 1 root root 2216 7月 30 14:57 etcd.yaml-rw------- 1 root root 3325 7月 30 14:57 kube-apiserver.yaml-rw------- 1 root root 2827 7月 30 14:57 kube-controller-manager.yaml-rw------- 1 root root 1413 7月 30 14:57 kube-scheduler.yaml# kube-system下的对应pod就是上面这几个yaml资源清单创建的kubectl get pods -n kube-systemNAME READY STATUS RESTARTS AGEetcd-k8s-master1 1/1 Running 4 4dkube-apiserver-k8s-master1 1/1 Running 6 4dkube-controller-manager-k8s-master1 1/1 Running 4 4dkube-proxy-98s2v 1/1 Running 4 4dkube-proxy-pv4xw 1/1 Running 4 4dkube-proxy-r5jpb 1/1 Running 4 4dkube-scheduler-k8s-master1 1/1 Running 4 4d
其中修改kube-controller-manager.yaml和kube-scheduler.yaml中的--port=0,将该值注释、重启kubelet,或者改为对应的端口如下:


2、上面的问题中:为什么没有apiserver
没必要把apiserver放进来
实际上我们执行任何kubectl命令都会发送给apiserver,所以apiserver不正常那么任何命令都将执行失败,kubectl依赖域apiserver
- 当我们执行
<font style="background-color:#FADB14;">kubectl</font>出现错误时,就可以从<font style="background-color:#FADB14;">apiserver</font>入口进行排查 kubectl—->apiserver—->etc
3、查询所有资源
kubectl api-resources# 资源名称、简称、apiserver、是否支持名称空间、kindNAME SHORTNAMES APIVERSION NAMESPACED KINDbindings v1 true Bindingcomponentstatuses cs v1 false ComponentStatusconfigmaps cm v1 true ConfigMapendpoints ep v1 true Endpointsevents ev v1 true Eventlimitranges limits v1 true LimitRangenamespaces ns v1 false Namespacenodes no v1 false Nodepersistentvolumeclaims pvc v1 true PersistentVolumeClaimpersistentvolumes pv v1 false PersistentVolumepods po v1 true Pod
- 其中:apiserver和kind对应的是yaml资源清单中的字段,不知道可以使用该命令进行查看
4、查看节点信息时:没有master节点
kubectl get nodeNAME STATUS ROLES AGE VERSIONk8s-master1 Ready control-plane,master 4d v1.21.0k8s-node1 Ready <none> 4d v1.21.0k8s-node2 Ready <none> 4d v1.21.0
有时候部署的k8s集群,使用上面命令kubectl get nodes进行查看时,没有k8s-master,为什么呢?
- 没有安装node节点的组件,该命令只显示node节点的信息(二进制部署时,一般不会在master上部署node组件)
- 将master同时作为node时,才会显示
- 在master上部署node组件还是有必要的,后期可以加入污点使其不进行工作
上面的status状态信息是由kubelet组件控制的,如果状态是NotReady,就需要排查kubelet,它是以守护进行启动运行的
kubelet—>runtime
5、kubectl top使用
6、命令补全
yum install -y bash-completionsource /usr/share/bash-completion/bash_completionsource <(kubectl completion bash)echo "source <(kubectl completion bash)" >> ~/.bashrc
