当我第一次开始个人Kubernetes之旅时,我一直在寻找一种设置本地部署环境的方式。不少人经常会使用minikube或microk8s,这二者很是适合新手在单节点集群环境下进行操做。但当我已经了解了基础知识以后,这二者显然不太够用,我须要进一步寻找可以运行本地多节点集群、与生产环境更类似的平台。为此,我查阅了许多参考资料,最后我找到了Rancher Server。接下来,我要介绍我是如何设置个人本地K8S多节点集群的。node
上图显示了集群的架构,一个master节点和3个worker节点。要尝试诸如使用ingress controller进行负载均衡、会话保持、host亲和性等跨节点功能,这是最低的配置。linux
Rancher Server的安装并不复杂,它被打包为一个docker镜像,而且能够做为一个容器运行。一个节点的基本配置是运行在Linux虚拟机上的docker CE 守护进程。在本例中,我选择使用Ubuntu 18.04 LTS(具体的节点要求请参考Rancher的官方文档:https://rancher.com/docs/rancher/v2.x/en/installation/requirements/ )。当我完成第一个VM设置时,我直接将其复制到另外三个中。若是你和个人操做同样,能够参考下方两个tips:nginx
安装指定版本Docker:https://docs.docker.com/install/linux/docker-ce/ubuntu/docker
Clone虚拟机以后,更改Ubuntu主机名:https://linuxize.com/post/how-to-change-hostname-on-ubuntu-18-04/ubuntu
最终,4个节点都在个人电脑(i5,24G RAM)上启动,并分配如下资源。api
Master节点(2 core、4G RAM、Ubuntu 18.04 + Docker CE 18.09) x 1架构
Worker节点(2 core, 3G RAM, Ubuntu 18.04 + Docker CE 18.09) x 3app
sudo docker run --restart=unless-stopped \ -p 81:80 -p 444:443 rancher/rancher
以上命令能够启动Rancher server容器,而且将其运行在master节点上。默认状态下,nginx ingress controller会嵌入到worker节点中,而且绑定端口80和443。所以我将Rancger server发布到端口81和444或其余端口,以免端口冲突。负载均衡
首先,使用master节点IP地址和端口444启动Rancher server控制台,它会要求设置管理员密码。less
接着,确认worker节点到达Rancher server的URL。这里为了方便我直接使用master节点IP地址做为URL。完成了初始设置后,Rancher server就能够添加新集群了。
由于我想要在本地虚拟机上运行K8S集群而不是在云端,因此选择“自定义”的选项(即上方说明为“ From my own existing nodes”),而后新集群的云提供商选项选为“None”。
在ubuntu虚拟机上复制并运行docker命令来启动master节点。一个master节点至少要有etcd和control,若是你打算建立一个单节点集群,须要选择全部3个角色并更改命令。
运行docker命令以后,新节点将显示在Rancher Server控制台上,配置这一节点须要花费一些时间,一旦配置完成,状态将变为active。
对于worker节点,咱们仅须要在节点选项选择“Worker”角色,而后在3个worker节点的Ubuntu虚拟机上复制并运行docker命令。
最后,在个人电脑上多节点集群已经准备就绪。
新集群的Kubernetes版本时v1.14.6,你能够在上面的截图内看到。为了更好地将kubectl工具版本与集群匹配,在master节点上运行如下命令,以安装特定版本:
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.14.6/bin/linux/amd64/kubectl chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl
Kubectl工具须要一个kubeconfig文件与集群链接,新集群地kubeconfig文件能够在Rancher Server的控制台中找到。
复制以上kubeconfig文件,并保存为~/.kube/config文件。随后kubectl就可以获取集群信息。
有关kubectl的安装和配置能够参考如下链接:
安装和设置kubectl:https://kubernetes.io/docs/tasks/tools/install-kubectl/
配置kubectl以访问多集群:https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/
原文连接: