Kubernetes之搭建
背景
Docker基础看完以后(Docker三剑客就没看了),辗转就到了k8s,k8s本质上替代的是docker三剑客中的docker-swarm
,用于容器的大规模集群管理。本文记录的是kubernetes环境的搭建方式。
内容
万事开头难,是因为环境的搭建难,k8s也是如此,比起其他的要繁琐很多,因为我到现在都不知道自己的有没有搭建成功,但是下列方法搭建完以后,至少可以试验了。本文安装的环境:
1 | OS: Ubuntu 20.10 |
如果你不知道自己的环境是几核CPU,则可以通过如下命令查看:
1 | sudo cat /proc/cpuinfo | grep "cores" |
如果你和我一样,对内存也存在疑虑,则
1 | sudo dmidecode -t memory | grep "Size" |
当然,还有一个更简单的
1 | 直接查看服务器的硬件信息 |
之后开始环境搭建,首先更新一下源信息,并且将docker给安装好
1 | sudo apt update |
docker获取国外的仓库镜像会很慢,所以这里可以考虑换一下源: sudo vim /etc/docker/daemon.json
,同时k8s推荐docker cgroup的驱动程序为systemd
,具体为啥,我也不懂,内容如下:
1 | { |
然后重启docker 的服务.
1 | sudo systemctl daemon-reload |
接下来,准备安装k8s,由于其在google仓库中,扒拉下来需要翻墙,所以这里采用aliyun
,修改文件:/etc/apt/sources.list
,添加如下内容。
1 | deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main |
用的时候需要key(不是很理解),所以还得添加key。
1 | sudo curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add |
然后安装相关依赖环境;
1 | sudo apt update && sudo apt install -y apt-transport-https curl |
检查安装是否成功。
1 | 打印版本信息 |
然后初始化,检查本机作为master时,各种环境约束是否符合条件(需要主机能翻墙,不能翻墙请参考【故障检测】
),命令执行后,就会初始化。
1 | 国内的话,时间会有点长,耐心等。成功的话,会有successful的提示的 |
将本机激活为主节点,先添加环境变量(这个我也不是很明白)。
1 | export KUBECONFIG=/etc/kubernetes/admin.conf |
添加网络插件,执行命令
1 | kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml |
保存使用配置,执行命令
1 | kubeadm join |
然后查看一些节点信息
1 | kubectl get nodes |
看返回的结果中,如果提示:status为ready,roles为master,则表示搭建算成功了
1 | [root@vultr:~# kubectl get nodes |
同时,还需要检查master各组件是否正常。
1 | kubectl get cs |
查看返回的结果中,如果提示:status为Healthy,MESSAGE为OK,则表示组件正常:
1 | root@vultr:~# kubectl get cs |
But,这次scheduler、controller-manager
不是很幸运的提示了UnHealthy,解决方案如下:
修改/etc/kubernetes/manifests/
下面的两个文件:kube-controller-manager.yaml、kube-scheduler.yaml
,将其中的- --port=0
注释掉(也就是前面加#),然后重启服务:
1 | systemctl restart kubelet.service |
至此,主节点搭建结束,应该能实验了
故障检测
kubeadm初始化失败
初始化的时候其实需要从k8s.gcr.io
拉取镜像,如果主机本身不能科学上网,就会因为拉取不到这些镜像而失败,解决方案是直接拉取其他仓库的同类镜像,然后通过修改标签的方式修改镜像的仓库,如下:
直接拉取镜像:
1 | docker pull mirrorgooglecontainers/kube-apiserver:v1.19.4 |
修改镜像名后,重新初始化就可以了。
1 | docker tag mirrorgooglecontainers/kube-apiserver:v1.19.4 k8s.gcr.io/kube-apiserver:v1.19.4 |