前言
前面用到过的 minikube 只是一个单节点的 k8s 集群,这对于学习而言是不够的。我们需要有一个多节点集群,才能用到各种调度/监控功能。而且单节点只能是一个加引号的“集群”。
kubernetes 安装方式面面观
kubernetes 是一个组件化的系统,安装过程有很大的灵活性,很多组件都有多种实现,这些实现各有特点,让初学者眼花缭乱。
而且要把这些组件一个个安装配置好并且能协同工作,也是很不容易的。
因此社区出现了各种各样的安装方案。安装方案如此之多,以致于我不晓得该用哪个好。。于是特地调查了一番。将几个流行的安装方案罗列如下:
- minikube/microk8s: 单节点集群,只适合学习/开发使用。
- kubeadm: k8s 官方推出的一个 k8s 快速安装工具,但是仍然有一定的工作量。
- kubespray: k8s 社区项目,使用 ansible 部署可用于生产环境的 k8s。(k8s-sigs,即 k8s special interest group)
- rancher: k8s 之上的企业级管理系统,安装相当方便,中文文档相当详细,而且还提供了更高层次的管理功能。
- kubesphere: 和 rancher 类似,也是一个建立在 k8s 之上的云平台管理系统。界面很漂亮。
此外社区还有 n 种方案可供选择,五花八门。而且关注度(stars)都不低。贪多嚼不烂,我就不一一介绍了。
一番搜索,我最终确定了用 rancher 来部署我的第一个 kubernetes 多节点集群,怎么简单怎么来哈哈~
一、准备虚拟机
要部署多节点嘛,自然得先有多台主机。我自己的机器内存够用,就直接开了一台 Ubuntu 虚拟机,然后克隆了四份。(这个克隆操作导致我后面掉进了坑。。)
主机的操作系统可以用 rancher 官方的精简版 RancherOS,也可以用自己熟悉的 Ubuntu Debian 等。这里主要强调一个坑:
- 各主机的 hostname 不能相同!!!否则后续的节点永远部署不上!(血泪教训。。)
- 因为我节点的虚拟机都是克隆 rancher-server 节点的,它们的 hostname 全都一样,搞了好久才找到问题原因。
- Ubuntu Server 18.04 无法修改 hostname
具体的主机配置过程官方文档写得非常详细,请移步 Rancher-基础环境配置
二、部署 rancher
1. 部署 rancher server
首先在用做 rancher server 的虚拟机上跑官方给出的 docker 命令启动 rancher server:
sudo docker run -d -v <主机路径>:/var/lib/rancher/ --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:stable
不过说实话我觉得用 docker-compose 的方式会更好一点。
部署好后访问 https://<server-ip>
配置好账号/密码/url,这没啥好说的。
2. 部署 kubernetes 集群
现在进入了 rancher 首页,点击右上角的「添加集群」,选择「自定义」来添加本地集群。
然后输入「集群名称」,「云提供商」选择「无」。
然后就是最后一步——在各个节点上部署 rancher agent——了。
只要你勾选了 worker
选项(其实就是添加了 --worker
参数),rancher agent 在运行时,就会自动在节点上部署 k8s
节点所需要的所有容器。
在多个节点上运行带 --worker
的 rancher agnet 命令,就能得到多个 k8s worker。而 etcd 和 controller 开发环境各部署一个就好了。
然后就可以愉快地玩耍了hhh~