K3S 轻量级 Kubernetes
k3s 是一个轻量级 Kubernetes,二进制的安装包才不到40MB,运行内存只需要500MB,相比k8s确实小了很多,k3s是一款完全通过CNCF认证的Kubernetes发行版,编写YAML来对完整版的Kubernetes进行操作,并且它们也将适用于k3s集群,可以使用外部数据源,现在支持的是:PostgreSQL(v10.7,v11.5) Mysql(v5.7) etcd(v3.3.15)

先准备5台linux 服务器
创建5台linux 虚拟机,vagrant或者vmware(不建议使用vagrant部署k3s) vagrant教程可以去看看这个https://mrbird.cc/Create-Virtual-Machine-By-Vagrant.html 。给5台服务器都安装上docker
| 名称 | IP | 配置 |
|---|---|---|
| mysql nginx | 192.168.xx.xx | 2C4G |
| server1 | 192.168.xx.xx | 1C2G |
| server2 | 192.168.xx.xx | 1C2G |
| agent1 | 192.168.xx.xx | 1C2G |
| agent2 | 192.168.xx.xx | 1C2G |
安装依赖包
1 | sudo yum install -y yum-utils device-mapper-persistent-data lvm2 |
设置阿里云镜像源
1 | sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo |
安装 Docker-CE
1 | sudo yum install docker-ce |
启动docker
1 | # 开机自启 |
这里顺便记录个安装Docker Compose(不是必要的)
1 | sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |

安装完docker 就来安装Mysql,在第一台服务上
1 | docker run --name mysql5.7 --net host --restart=always -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7 --lower_case_table_names=1 #创建数据库 |
安装Nginx
打开地址 https://nginx.org/en/linux_packages.html
拉下去可以看到

按照这个提示在11 服务器上安装nginx
执行vim /etc/yum.repos.d/nginx.repo 没有则创建一个然后把内容复制过去就行
1 | touch nginx.repo |

生效这个配置
1 | sudo yum-config-manager --enable nginx-mainline |
执行yum 安装
1 | sudo yum install nginx |
到nginx 默认配置文件下添加一个server节点的负载均衡(自己有多少个节点就配置多少个节点,后面配置agent节点需要这个nginx的负载均衡)
1 | stream { |
安装k3s
安装k3s的server,两个server节点都要安装
- 定义k3s的版本
1
export INSTALL_K3S_VERSION=v1.19.2-k3s1
- 指定k3s的mysql 数据库
1
export INSTALL_K3S_EXEC="--datastore-endpoint=mysql://root:root@tcp(192.168.33.11:3306)/k3s --docker --kube-apiserver-arg service-node-port-range=1-65000 --no-deploy traefik --write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666"
- 安装k3s server这个脚本安装会提示你少了包,按照提示复制下来执行,完成后再执行上面安装(官方包问题,之后有可能会修复)
1
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
在两个server节点安装完成,使用命令查询是否安装成功

这个时候我们在192.168.33.11这台服务器上安装的mysql下的k3s数据库中应该有会一张表

安装k3s的agent ,2个agent节点都要安装
- 获取 server节点的token(在server节点下运作这个就行)
1
cat /var/lib/rancher/k3s/server/node-token
- 指定k3s的版本(和server版本相同即可)
1
export INSTALL_K3S_VERSION=v1.19.2-k3s1
- 设置k3s的server token(这里是从server节点获取的token)
1
export K3S_TOKEN=K10183e4d3befd50ed5edc20f9b5e42b58901dc1a7198f16dbacff2f289071e8a29::server:60855d12d8cf5e0107815a499c1e2526
- 设置k3s的server URL(这里是11服务器是因为使用了nginx负载均衡了2个server)
1
export K3S_URL=https://192.168.33.11:6443
- 杂七杂八的设置
1 | export INSTALL_K3S_EXEC="--docker --kube-apiserver-arg service-node-port-range=1-65000 --no-deploy traefik --write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666" |
- k3s agent
1 | curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh - |
- 安装k3s agent(这是官方安装示例)
1
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://192.168.33.11:6443(注意替换成自己的地址,这里配置成11服务的地址是因为我们在11服务器上用nginx做的负载均衡) K3S_TOKEN=这里是从server节点获取的token sh -
RancherUI安装
1 | docker run -d -v /data/docker/rancher-server/var/lib/rancher/:/var/lib/rancher/ --restart=unless-stopped --name rancher-server -p 9443:443 rancher/rancher:stable |
上面完成后,打开 192.168.33.11:9443 就可以看见RancherUI
进去后点击 添加集群 ->导入 -> 创建完成选择跳过证书的命令(最后一个) -> 把你复制的在任何一个server节点运行 -> 部署项目(后面再说)
ByeBye🙃
参考链接
https://www.jianshu.com/p/2dae7b13ce2f
https://mp.weixin.qq.com/s/PcwasUz49zzHHaNwMOfaVQ
https://rancher.com/
https://docs.rancher.cn/docs/k3s/quick-start/_index