@eyasliu 2019-08-21 07:54:44发表于 eyasliu/blog 服务器
K3S 官网 :https://k3s.io/
K8S 和 K3S 是什么关系呢,官网原话
k3s 旨在成为完全兼容的 Kubernetes 发行版,相比 k8s 主要更改如下:
- 旧的、Alpha 版本的、非默认功能都已经删除。
- 删除了大多数内部云提供商和存储插件,可以用插件替换。
- 新增 SQLite3 作为默认存储机制,etcd3 仍然有效,但是不再是默认项。
- 封装在简单的启动器中,可以处理大量 LTS 复杂性和选项。
- 最小化到没有操作系统依赖,只需要一个内核和 cgroup 挂载。
所以完全可以把 K3S 代替K8S,而且占用的资源还会更小,功能也不会有缺失,还更简单。
K3S 是 K8S 的轻量级版,但并不是阉割版,K8S的功能它都有,也兼容K8S的各种插件和应用。
进到官网,可以看到有条命令可以一键安装
curl -sfL https://get.k3s.io | sh -
如果服务器是在国外,应该是不存在网络问题,用这一条命令就能装成功的。如果服务器在中国大陆,会遇到一系列网络问题,在此记录国内服务器安装 K3S 的流程
这里要注意下,k8S对docker版本是有要求的,不能太高,写本篇文章的时候,K8S的最新版是 v1.14.6
,K3S的最新版是 v0.8.1
,此时K3S的最新版也是兼容的最新版K8S,这时候的K8S的docker版本最高支持到 18.06
,当前docker最新版是 19.03
,所以,安装docker的时候要小心版本号。
以 ubuntu 为例
# step 1: 安装GPG证书 $ curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - # Step 2: 写入软件源信息 $ sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" # Step 3: 更新源 $ sudo apt-get -y update # Step 4: 查看当前可安装的docker版本 # centos 使用 yum list docker-ce --showduplicates $ apt-cache policy docker-ce docker-ce: Installed: 18.06.3~ce~3-0~ubuntu Candidate: 5:19.03.1~3-0~ubuntu-bionic Version table: 5:19.03.1~3-0~ubuntu-bionic 500 500 https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic/stable amd64 Packages 5:19.03.0~3-0~ubuntu-bionic 500 500 https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic/stable amd64 Packages 5:18.09.8~3-0~ubuntu-bionic 500 500 https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic/stable amd64 Packages 5:18.09.7~3-0~ubuntu-bionic 500 500 https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic/stable amd64 Packages 5:18.09.6~3-0~ubuntu-bionic 500 500 https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic/stable amd64 Packages 5:18.09.5~3-0~ubuntu-bionic 500 500 https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic/stable amd64 Packages 5:18.09.4~3-0~ubuntu-bionic 500 500 https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic/stable amd64 Packages 5:18.09.3~3-0~ubuntu-bionic 500 500 https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic/stable amd64 Packages 5:18.09.2~3-0~ubuntu-bionic 500 500 https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic/stable amd64 Packages 5:18.09.1~3-0~ubuntu-bionic 500 500 https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic/stable amd64 Packages 5:18.09.0~3-0~ubuntu-bionic 500 500 https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic/stable amd64 Packages *** 18.06.3~ce~3-0~ubuntu 500 500 https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic/stable amd64 Packages 100 /var/lib/dpkg/status 18.06.2~ce~3-0~ubuntu 500 500 https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic/stable amd64 Packages 18.06.1~ce~3-0~ubuntu 500 500 https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic/stable amd64 Packages 18.06.0~ce~3-0~ubuntu 500 500 https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic/stable amd64 Packages 18.03.1~ce~3-0~ubuntu 500 500 https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic/stable amd64 Packages # Step 5: 安装指定版本 # centos 使用 sudo yum install docker-ce-18.06.3.ce-3.el7 $ sudo apt install -y docker-ce=18.06.3~ce~3-0~ubuntu # Step 6: 验证安装 $ sudo docker version # Step 7: 把当前用户加到docker用户组,以后该用户执行dokcer命令可以不再需要sudo,需要重新登录才会生效 $ sudo usermod -aG docker $USER
先本地下载 k3s 的二进制文件,注意url的版本号
https://github.com/rancher/k3s/releases/download/v0.8.1/k3s
下载完成后想办法上传到服务器,这里提供scp方式示例
scp -P 23 ./k3s [email protected]:/home/user/
然后连接上服务器,将k3s文件放到 /usr/local/bin
,并加上可执行权限
sudo mv ./k3s /usr/local/bin/ sudo chmod +x /usr/local/bin/k3s
这样在后面安装k3s的时候就不会再去下载k3s文件
安装的时候会下载一些在k8s.gcr.io
的镜像,被墙了,事先装好,注意镜像版本号是不是当前时间的最新版
docker pull mirrorgooglecontainers/pause:3.1
docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
curl -sfL https://get.k3s.io | sh -
因为在准备工作的时候下载好了大部分该下载的,所以这个过程应该很快,装完后验证一下
$ sudo kubectl get nodes NAME STATUS ROLES AGE VERSION vm-0-16-ubuntu Ready master 3h26m v1.14.6-k3s.1
做如下修改
sudo vim /etc/systemd/system/multi-user.target.wants/k3s.service
需要修改ExecStart的值,将其修改为:
/usr/local/bin/k3s server --docker --no-deploy traefik --write-kubeconfig-mode 664
重启服务
sudo systemctl daemon-reload sudo systemctl restart k3s # 然后查看节点是否启动正常 sudo k3s kubectl get node
到此完成 K3S 的部署
既然 K3S 是 K8S 的轻量级版,那集群也是有的。
按照本文章上面的流程,在所有机器都安装一遍K3S,暂时把所有机器都当做master节点对待,全都独自安装一遍,确保安装好之后使用下面命令能找到自身节点
sudo k3s kubectl get node
现在所有机器都准备好了,任意选择一台作为master节点。如果你的所有机器都在同一个网段,比如都是在同一个局域网,则master节点不需要做任何修改就可以直接用,跳过本步骤。如果各个机器是跨网段,跨云商(比如一台机器是阿里云,一台机器是腾讯云,还有一台是亚马逊云),但是需要确保所有机器都有公网IP,则在master节点修改 K3S 配置,把 K3S 的地址绑定为公网IP
sudo vim /etc/systemd/system/multi-user.target.wants/k3s.service
修改 ExecStart 的字段值为 ,注意其中的ip 12.34.56.78
修改为你的 master 节点的公网ip
/usr/local/bin/k3s server --docker --no-deploy traefik --write-kubeconfig-mode 664 --kube-apiserver-arg="advertise-address=12.34.56.78" --kube-apiserver-arg="external-hostname=12.34.56.78"
然后重启服务
sudo systemctl daemon-reload sudo systemctl restart k3s
目前master节点配置好了,现在配置 slave 节点。在 K3S 官网最下面其实有讲怎么加入,流程如下
在 maser 节点执行如下命令,注意把ip换成你自己的
$ echo /usr/local/bin/k3s agent --server https://12.34.56.78:6443 --token `sudo cat /var/lib/rancher/k3s/server/node-token` sudo k3s agent --server https://12.34.56.78:6443 --token K1022c3b20bd00e2b705ca34551b5e346dcce703dsr132dddfc3f8323b0adb1fb9::node:adb40646cf6fdc1239e3d769b9dbbb9a
复制好上面命令输出的内容,到所有的 slave 节点编辑配置
sudo vim /etc/systemd/system/multi-user.target.wants/k3s.service
把配置文件中 ExecStart
值修改为上面输出的内容,修改保存后重启 K3S
sudo systemctl daemon-reload sudo systemctl restart k3s
验证一下,到maser节点,执行命令查看当前的可用节点,就能看到其他节点已加入进来
$ kubectl get node NAME STATUS ROLES AGE VERSION iz2ze4grlnalbfkizskkadf Ready master 25h v1.14.6-k3s.1 vm-0-16-ubuntu Ready worker 18h v1.14.6-k3s.1