Coup de Grace

K8s后日谈 问题解决

那么这次算是后日谈,解决一些新生的与遗留的问题.

果然技术栈落地都不是能光速完成的,基础设施初见杀远比写代码麻烦的多.

本期内容:


dns 问题

  1. 检查kubectl get svc --namespace=kube-system中 kube-dns 的内网 ip
  2. 检查 master 中/etc/systemd/system/kubelet.service.d/10-kubeadm.conf中KUBE_DNS_ARGS是否与之相同
  3. 修改并重启 kubelet

这个问题不一定肯定会出现,而且官方最近在计划把 dns 转到10.96.0.0/8网段..这个以后再说吧

后续更新,在1.4.5之后这个问题在我这里没有出现过了.


自动删镜像的问题

这个问题我遇到两次了,有时莫名其妙本机上的镜像会消失,但是都是k8s scheduler并没有指派到本机的任务的镜像..

在Kubernetes权威指南的361页,有容器与镜像的GC相关设置.

下图的Event会显示相关的记录.

通过如下启动参数设置关闭:

--minimum-container-ttl-duration=0 --maximum-dead-containers-per-container=-1 --maximum-dead-containers=-1

更新内核版本

Centos7.2默认的内核版本是3.10,暂时是满足k8s要求的,轻易不要更新.

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install  kernel-ml-devel kernel-ml -y
grub2-set-default 0
reboot

使master接受pod部署

kubectl taint nodes --all dedicated-

怎么取消这个后患无穷的操作呢?

kubectl taint nodes [node1] key=value:NoSchedule

使minion节点也可以使用kubectl管控

# 备份master节点的 配置文件
/etc/kubernetes/admin.conf
# 保存至 其他电脑, 通过执行配置文件控制集群
kubectl --kubeconfig ./admin.conf get nodes

外部etcd集群

运行了几天之后观察到docker内etcd偶尔会重启的现象

这会导致api server无法读取集群信息.

那么可以外部启用一个etcd集群来避免这种不确定的情况

并用--external-etcd-endpoints 在kubeadm init时指定

comma分隔endpoints


dns单点问题

这个来自参考的博客

可以通过修改kubectl edit deploy kube-dns修改pod数量.


调度时产生fail

一般这时候可以从以下几个点去看:


搭建时fail sync

看一下后续


todo.