原文链接:https://mp.weixin.qq.com/s/mfsvdwtue4yrufv3jylqvw
在本篇文章中我将以在mac笔记本中安装两台ubantu系统的方式,演示如何部署一套具备一个控制节点(master)和一个计算节点(worker)的kubernetes学习集群。
1、系统环境准备
要安装部署kubernetes集群,首先需要准备机器,最直接的办法可以到公有云(如阿里云等)申请几台虚拟机。而如果条件允许,拿几台本地物理服务器来组建集群自然是最好不过了。但是这些机器需要满足以下几个条件:
要求64位linux操作系统,且内核版本要求3.10及以上,能满足安装docker项目所需的要求; 机器之间要保持网络互通,这是未来容器之间网络互通的前提条件; 要有外网访问权限,因为部署的过程中需要拉取相应的镜像,要求能够访问到gcr.io、quay.io这两个dockerregistry,因为有小部分镜像需要从这里拉取; 单机可用资源建议2核cpu、8g内存或以上,如果小一点也可以但是能调度的pod数量就比较有限了; 磁盘空间要求在30gb以上,主要用于存储docker镜像及相关日志文件;
在本次实验中由于条件有限,我是在mac笔记本上通过虚拟软件准备了两台虚拟机,其具体配置如下:
2核cpu、2gb内存,30gb的磁盘空间; unbantu 20.04 lts的sever版本,其linux内核为5.4.0; 内网互通,外网访问权限不受控制;
2、kubeadm一键部署工具简介
作为典型的分布式系统,kubernetes的部署一直是困扰初学者进入kubernetes世界的一大障碍。在发布早期kubernetes的部署主要依赖于社区维护的各种脚本,但这其中会涉及二进制编译、配置文件以及kube-apiserver授权配置文件等诸多运维工作。目前各大云服务厂商常用的kubernetes部署方式是使用saltstack、ansible等运维工具自动化地执行这些繁琐的步骤,但即使这样,这个部署的过程对于初学者来说依然是非常繁琐的。
正是基于这样的痛点,在志愿者的推动下kubernetes社区终于发起了kubeadm这一独立的一键部署工具,使用kubeadm我们可以通过几条简单的指令来快速地部署一个kubernetes集群。后面的内容,就将具体演示如何使用kubeadm来部署一个kubernetes集群。
3、安装kubeadm及docker环境
在准备的两台虚拟机中,分别安装kubeadm部署工具及docker环境。步骤如下:
1)、编辑操作系统安装源配置文件,添加kubernetes镜像源,命令如下:
#添加kubernetes官方镜像源apt-keyroot@kubenetesnode01:~#curl-shttps://packages.cloud.google.com/apt/doc/apt-key.gpg|apt-keyadd-#添加kubernetes官方镜像源地址root@kubernetesnode01:~#vim/etc/apt/sources.list#addkubernetessourcedebhttp://apt.kubernetes.io/kubernetes-xenialmain
上述操作添加的是kubernetes的官方镜像源,如果apt.kubernetes.io因为网络原因访问不到,也可以换成国内ubantu镜像源,如阿里云镜像源地址:
#添加阿里云kubernetes镜像源apt-keyroot@kubenetesnode01:~#curl-shttps://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg|apt-keyadd-#添加阿里云kubernetes镜像源地址root@kubernetesnode01:~#vim/etc/apt/sources.listdebhttps://mirrors.aliyun.com/kubernetes/apt/kubernetes-xenialmain
2)、镜像源添加后更新apt资源列表,命令如下:
root@kubernetesnode01:~#apt-getupdatehit:1http://cn.archive.ubuntu.com/ubuntufocalinreleasehit:2http://cn.archive.ubuntu.com/ubuntufocal-updatesinreleasehit:3http://cn.archive.ubuntu.com/ubuntufocal-backportsinreleasehit:4http://cn.archive.ubuntu.com/ubuntufocal-securityinreleaseget:5https://packages.cloud.google.com/aptkubernetes-xenialinrelease[8,993b]get:6https://packages.cloud.google.com/aptkubernetes-xenial/mainamd64packages[37.7kb]fetched46.7kbin7s(6,586b/s)readingpackagelists…done
3)、完成上述2步后就可以通过apt-get命令安装kubeadm了,如下:
root@kubernetesnode01:~#apt-getinstall-ydocker.iokubeadmreadingpackagelists…donebuildingdependencytreereadingstateinformation…donethefollowingadditionalpackageswillbeinstalled:bridge-utilscgroupfs-mountconntrackcontainerdcri-toolsdns-root-datadnsmasq-baseebtableskubectlkubeletkubernetes-cnilibidn11pigzruncsocatubuntu-fan….
这里直接使用ubantu的docker.io安装源。在上述安装kubeadm的过程中,kubeadm和kubelet、kubectl、kubernetes-cni这几个kubernetes核心组件的二进制文件都会被自动安装好。
4)、docker服务启动及限制修改
完成上述步骤侧操作后,系统中会自动安装docker引擎,但是在具体运行kubernetes部署之前需要对docker的配置信息进行一些调整。
首先,编辑系统/etc/default/grub文件,在配置项grub_cmdline_linux中添加如下参数:
grub_cmdline_linux=cgroup_enable=memoryswapaccount=1
完成编辑后保存执行如下命令,并重启服务器,命令如下:
root@kubernetesnode01:/opt/kubernetes-config#update-grubroot@kubernetesnode01:/opt/kubernetes-config#reboot
上述修改主要解决的是可能出现的“docker警告warning: no swap limit support”问题。
其次,编辑创建/etc/docker/daemon.json文件,添加如下内容:
{exec-opts:[native.cgroupdriver=systemd]}
完成保存后执行重启docker命令,如下:
root@kubernetesnode01:/opt/kubernetes-config#systemctlrestartdocker
此时可以查看docker的cgroup信息,如下:
root@kubernetesnode01:/opt/kubernetes-config#dockerinfo|grepcgroupcgroupdriver:systemd
上述修改主要解决的是“dockercgroup driver. the recommended driver is systemd”的问题。需要强调的是以上修改只是作者在具体安装操作是遇到的具体问题的解决整理,如在实践过程中遇到其他问题还需要自行查阅相关资料!
最后,需要注意由于kubernetes禁用虚拟内存,所以要先关闭掉swap否则就会在kubeadm初始化kubernetes的时候报错,具体如下:
root@kubernetesnode01:/opt/kubernetes-config#swapoff-a
该命令只是临时禁用swap,如要保证系统重启后仍然生效则需要“edit /etc/fstab”文件,并注释掉swap那一行。
完成以上操作后启动系统docker服务,命令如下:
root@kubenetesnode02:~#systemctlenabledocker.service
4、部署kubernetes的mast
健康云高防服务器的个人频道云服务器和传统服务器哪个好阿里云服务器在哪儿租的啊云服务器mysql数据库损坏修复mysql电脑关机老是出现“配置windowsupdate失败还原更改”如何解决永宁云服务器网站搭建云服务器做网站绑定多个ip我购了证书绑定域名完善信息后