K8s问题一
服务获取pod ip (个人认为) 不合理,集群内部推荐使用cluster ip
集群外部使用
问题二
K8s 调度不合理问题排查
方案一
修改matser ,node节点 最大pod 数量 (需要评估总共pod 数量,以及各节点需要分配的pod 数量)以达到 均衡的目的
以下为本地实验案例没问题可以先上测试
修改master 节点数 数(多master 都需要修改)
1、systemctl status kubelet.service
cd /usr/lib/systemd/system/kubelet.service.d
vim 10-kubeadm.conf
vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--max-pods=40"
systemctl daemon-reload
systemctl restart kubelet
查看是否生效
systemctl status kubelet | grep max-pods
修改node 节点
- 登录master节点,查看 192.168.40.181节点上pods个数(注意一定是-all-namespaces)
- 冻结该node节点kubectl cordon zcsnode1
-
删除多余的pods需要评估改节点承载的pods个数,比如25个,则需要delete 掉多余的pods
Kubectl delete pods podsname -
登录node修改kubelet的max-pods个数
vim /usr/lib/systemd/system/kubelet.service
- 修改/etc/kubernetes/kubelet,增加限制数量(没有就新增以下内容)
[root@zcsnode1 kubelet.service.d]# cat /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-notallow=false --max-pods=20"
6 修改/usr/lib/systemd/system/kubelet.service
332 systemctl daemon-reload
333 systemctl restart kubelet
systemctl status kubelet |grep max-pods
7 解冻该节点
kubectl uncordon zcsnode1
查看此节点pod是否正常
方案二
Shell脚本 + Metrics Server + 计划任务
监控集群资源利用率
Metrics Server是一个集群范围的资源使用情况的数据聚合器。作为一个应用部署在集群中。Metric server从每个节点上Kubelet API收集指 标,通过Kubernetes聚合器注册在Master APIServer中。
项目地址:https://github.com/kubernetes-sigs/metrics-server
kubectl top -> apiserver -> metrics-server -> kubelet(cadvisor)(https)
Metrics Server部署:节点部署
wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.7/components.yaml
修改以下配置
部署
可以看到各节点的利用率