当我第一次开始我的Kubernetes之旅时,我一直在寻找一种设置本地部署环境的方式。很多人常常会使用minikube或microk8s,这两者非常适合新手在单节点集群环境下进行操作。但当我已经了解了基础知识之后,这两者显然不太够用,我需要进一步寻找能够运行本地多节点集群、与生产环境更相似的平台。为此,我查阅了许多参考资料,最后我找到了Rancher Server。接下来,我要介绍我是如何设置我的本地K8S多节点集群的。
 
使用Rancher Server部署本地多节点K8S集群_第1张图片
 

准备master节点和worker节点的虚拟机

 
使用Rancher Server部署本地多节点K8S集群_第2张图片
 
上图显示了集群的架构,一个master节点和3个worker节点。要尝试诸如使用ingress controller进行负载均衡、会话保持、host亲和性等跨节点功能,这是最低的配置。

 
Rancher Server的安装并不复杂,它被打包为一个docker镜像,并且可以作为一个容器运行。一个节点的基本配置是运行在Linux虚拟机上的docker CE 守护进程。在本例中,我选择使用Ubuntu 18.04 LTS(具体的节点要求请参考Rancher的官方文档:https://rancher.com/docs/rancher/v2.x/en/installation/requirements/ )。当我完成第一个VM设置时,我直接将其复制到另外三个中。如果你和我的操作一样,可以参考下方两个tips:

 

  • 安装指定版本Docker:https://docs.docker.com/install/linux/docker-ce/ubuntu/

  • Clone虚拟机之后,更改Ubuntu主机名:https://linuxize.com/post/how-to-change-hostname-on-ubuntu-18-04/
     

最终,4个节点都在我的电脑(i5,24G RAM)上启动,并分配以下资源。

 

  • 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 3
     

    在master节点上启动Rancher server

     

    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或其他端口,以避免端口冲突。
     

    完成Rancher server初始设置

     
    使用Rancher Server部署本地多节点K8S集群_第3张图片
     
    首先,使用master节点IP地址和端口444启动Rancher server控制台,它会要求设置管理员密码。
     
    使用Rancher Server部署本地多节点K8S集群_第4张图片
     
    接着,确认worker节点到达Rancher server的URL。这里为了方便我直接使用master节点IP地址作为URL。完成了初始设置后,Rancher server就可以添加新集群了。
     

    创建一个新的K8S集群和master节点

     
    使用Rancher Server部署本地多节点K8S集群_第5张图片
     
    因为我想要在本地虚拟机上运行K8S集群而不是在云端,所以选择“自定义”的选项(即上方说明为“ From my own existing nodes”),然后新集群的云提供商选项选为“None”。
     
    使用Rancher Server部署本地多节点K8S集群_第6张图片
     
    在ubuntu虚拟机上复制并运行docker命令来启动master节点。一个master节点至少要有etcd和control,如果你打算创建一个单节点集群,需要选择所有3个角色并更改命令。
     
    使用Rancher Server部署本地多节点K8S集群_第7张图片
     
    运行docker命令之后,新节点将显示在Rancher Server控制台上,配置这一节点需要花费一些时间,一旦配置完成,状态将变为active。
     

    创建worker节点

     
    使用Rancher Server部署本地多节点K8S集群_第8张图片
     
    对于worker节点,我们仅需要在节点选项选择“Worker”角色,然后在3个worker节点的Ubuntu虚拟机上复制并运行docker命令。
     
    使用Rancher Server部署本地多节点K8S集群_第9张图片
     
    最后,在我的电脑上多节点集群已经准备就绪。
     

    安装kubectl工具来管理新的K8S集群

     
    新集群的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的控制台中找到。
     
    使用Rancher Server部署本地多节点K8S集群_第10张图片
     
    复制以上kubeconfig文件,并保存为~/.kube/config文件。随后kubectl就能够获取集群信息。
     
    使用Rancher Server部署本地多节点K8S集群_第11张图片
     
    有关kubectl的安装和配置可以参考以下连接:

 

  • 安装和设置kubectl:https://kubernetes.io/docs/tasks/tools/install-kubectl/

  • 配置kubectl以访问多集群:https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/
     

原文链接:

https://medium.com/@kwonghung.yip/setup-local-kubernetes-multi-node-cluster-with-rancher-server-fdb7a0669b5c