0%

手把手搭建K3S+Rancher - 周知非 - 博客园

Excerpt

Kubernetes发展到现在,已经在很多正式的场景落地应用,可以说现阶段使用Kubernetes是比较靠谱也比较轻松的,本文就根据官方文档手把手开始部署Kubernetes+Rancher集群。 架构 Master—192.168.15.252 Slave—192.168.15.251 本地域名—


Kubernetes发展到现在,已经在很多正式的场景落地应用,可以说现阶段使用Kubernetes是比较靠谱也比较轻松的,本文就根据官方文档手把手开始部署Kubernetes+Rancher集群。

架构
Master—192.168.15.252
Slave—192.168.15.251
本地域名—zhou.rancher.com
注意点:Master一定要有免密登录Slave权限!!!

总体思路
K3S部署Kubernetes集群,创建集群的https证书,Helm部署rancher,通过rancher的UI界面手动导入Kubernetes集群,使用Kubernetes集群。

Kubernetes部署
在rancher中文文档中推荐了一种更轻量的Kubernetes集群搭建方式:K3S,安装过程非常简单,只需要服务器能够访问互联网,执行相应的命令就可以了
Master主机执行命令,执行完成后获取master主机的K3S_TOKEN用于slave(默认路径:/var/lib/rancher/k3s/server/node-token)

1
curl -sfL http:<span>//</span><span>rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn  INSTALL_K3S_EXEC="--docker" sh -s - server</span>

slave主机执行命令,加入K3S集群

1
curl -sfL http:<span>//</span><span>rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_EXEC="--docker" K3S_URL=</span><span>https://192.168.15.252</span><span>:6443 K3S_TOKEN=K10bb35019b1669197e06f97b6c14bb3b3c7c7076cd20afe1f550d6793d02b9eed8::server:9599c8b3ffbbd38b7721207183cd6a62 sh -</span>

http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh是国内的加速地址,可以正常执行。
执行完毕后,在master服务器上验证是否安装K3S集群成功。

Https私有证书
在rancher中文文档中提供了生成私有证书的方式,执行提供的脚本后,可以获得私有的证书,并需要把证书添加到集群中去
创建证书的空间,并使用脚本生成pem文件

1
kubectl create namespace cattle-system
1
<span>sh</span> ./create_self-signed-cert.<span>sh</span> --ssl-domain=zhou.rancher.com --ssl-trusted-ip=<span>192.168</span>.<span>15.251</span>,<span>192.168</span>.<span>15.252</span> --ssl-size=<span>2048</span> --ssl-<span>date</span>=<span>3650</span>

把生成的pem证书上传到集群中去

1
kubectl -n cattle-system create secret generic tls-ca   --from-<span>file</span>=cacerts.pem=./cacerts.pem

安装rancher
安装rancher之前还需要安装helm工具,解压官网下载的文件压缩包后,拷贝二进制文件到/usr/local/bin/目录,验证是否安装成功

添加rancher的国内的安装模块,并更新helm

1
2
helm repo add rancher-stable http:<span>//</span><span>rancher-mirror.oss-cn-beijing.aliyuncs.com/server-charts/stable</span>
helm repo update

执行helm安装rancher命令

1
helm <span>install</span> rancher rancher-stable/rancher   --namespace cattle-system   --set <span>hostname</span>=zhou.rancher.com   --set ingress.tls.source=secret   --set privateCA=<span>true</span>

验证rancher是否安装成功

补充
由于是在内部搭建的rancher,只能通过修改主机的host来指定域名,还需要额外的两个步骤
添加hostname的解析

复制代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
kubectl -n cattle-<span>system \
</span><span>patch</span> deployments cattle-cluster-agent --<span>patch</span> <span>'</span><span>{</span>
<span>"</span><span>spec</span><span>"</span><span>: {
</span><span>"</span><span>template</span><span>"</span><span>: {
</span><span>"</span><span>spec</span><span>"</span><span>: {
</span><span>"</span><span>hostAliases</span><span>"</span><span>: [
{
</span><span>"</span><span>hostnames</span><span>"</span><span>:
[
</span><span>"</span><span>zhou.rancher.com</span><span>"</span><span>
],
</span><span>"</span><span>ip</span><span>"</span>: <span>"</span><span>192.168.15.252</span><span>"</span><span>
}
]
}
}
}
}</span>

复制代码

复制代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
kubectl -n cattle-<span>system \
</span><span>patch</span> daemonsets cattle-node-agent --<span>patch</span> <span>'</span><span>{</span>
<span>"</span><span>spec</span><span>"</span><span>: {
</span><span>"</span><span>template</span><span>"</span><span>: {
</span><span>"</span><span>spec</span><span>"</span><span>: {
</span><span>"</span><span>hostAliases</span><span>"</span><span>: [
{
</span><span>"</span><span>hostnames</span><span>"</span><span>:
[
</span><span>"</span><span>zhou.rancher.com</span><span>"</span><span>
],
</span><span>"</span><span>ip</span><span>"</span>: <span>"</span><span>192.168.15.252</span><span>"</span><span>
}
]
}
}
}
}</span><span>'</span>

复制代码

最后打开我们设定的zhou.rancher.com网站,导入集群