作者:钟贻乾
使用Rancher部署k8s集群
概述
随着容器的普及和Kubernetes 的日渐成熟,企业内部运行多个Kubernetes 集群已变得颇为常见,然而部署kubernetes集群的方式也多样化,二进制部署、rancher、kubeadm、minikube等。然而本篇文章主要讲解的是如何使用rancher快速部署一个k8s集群。Rancher是一个开源的企业级容器管理平台。通过Rancher,我们不必再使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。
主机整体规划
一、docker容器安装
每台机器都需要安装。
1、删除已存在的docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
2、配置repo源和epel源
先备份原来的源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
或
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
运行 yum makecache 生成缓存
yum makecache
安装epel源
yum -y install epel-release
yum的'--showduplicates'选项对于显示软件包的多个版本很有用。当您有非常特定的依赖项并尝试查找要安装的软件包的特定名称时,它将起着非常大的作用
# yum list docker --show-duplicates
3、安装依赖
yum -y install yum-utils device-mapper-persistent-data lvm2
4、添加软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5、更新并安装Docker-CE
yum makecache fast
yum list docker-ce --show-duplicates
yum -y install docker-ce #这种方式是安装最新的docker-ce
6、安装指定版本的docker
yum list docker-ce --show-duplicates
yum -y install docker-ce-19.03.15-3.el7
7、添加镜像加速
可参考文档:https://www.cnblogs.com/myitnews/p/11509546.html
mkdir -p /etc/docker/
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://i******.mirror.aliyuncs.com"] //这里请添加自己的阿里云镜像加速
}
EOF
8、启动docker
# 添加开启启动
systemctl enable docker
# 更新xfsprogs
yum -y update xfsprogs
# 启动
systemctl start docker
docker info
# 测试docker是否已经能够正常使用
# 启动第一个容器
docker run hello-world
二、启动rancher
1、启动rancher
在rancher那台机器上运行:
# docker run -d --restart=unless-stopped --name rancher -p 80:80 -p 443:443 rancher/rancher:stable
2、查看日志
# docker logs -f rancher
ERROR: Rancher must be ran with the --privileged flag when running outside o
启动时需要添加 --privileged 参数
3、再次启动
# docker run -d --restart=unless-stopped --privileged --name rancher -p 80:80 -p 443:443 rancher/rancher:stable
4、查看日志
# docker logs -f rancher
如果不出现明显的错误就可以了
5、查看运行状态
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9868df9a9a6e rancher/rancher:stable "entrypoint.sh" 10 minutes ago Up 10 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp rancher
6、在Web界面登录
https://192.168.241.138/
因为是使用https的方式登录,所以会报以下错误。点继续前往就可以了。
7、登录设置密码
使用默认的url即可
8、语言更换
三、集群添加
1、添加一个k8s集群
2、选择自定义
3、编写集群信息
这里使用的选择的是kubernetes 1.18.20的版本。
Master节点上这个control组件是必须的!!!
4、登录到master01
执行上面copy过来的命令
sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.5.9 --server https://192.168.241.138 --token 4692pw82n2jhm7qmtzz7dptlpvhwz7ls9f27v2mkv5n9s89mwp6684 --ca-checksum 9cfb504b8d3f05bd9e37477173524ccf1a2b24129ffc941f52dcc2e9c9175310 --node-name k8s-master01 --controlplane --worker
然后就是静静等待集群的启动
等到显示active就说明部署好了
四、worker-node节点的添加
1、编辑集群
2、直接点击保存
3、选择组件
由于机器的限制,etcd就部署在了worker-node上。etcd尽量以单数形式部署1、3、5、7......
我这里是选择3台机器部署etcd组件。
4、登录node01机器
sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.5.9 --server https://192.168.241.138 --token 4tldjd8szx8ndgk9k88hmscdx46q2k8lf6l9z7kg5mbjgmwpb452nd --ca-checksum 9cfb504b8d3f05bd9e37477173524ccf1a2b24129ffc941f52dcc2e9c9175310 --node-name k8s-worker-node01 --etcd --worker
5、以后添加node节点只需要添加以下参数就可以了
主机名:
--node-name k8s-worker-node02
--node-name k8s-worker-node03
组件:
--etcd
--controlplane
--worker
五、kubectl工具的安装
我这里是将kubectl工具安装在master上
1、使用wget命令下载或者将它下载到本地再上传到服务器。
wget https://storage.googleapis.com/kubernetes-release/release/v1.18.20/bin/linux/amd64/kubectl
2、加x权限
# chmod +x kubectl
3、将二进制文件移到PATH中
# mv kubectl /usr/local/bin/
4、查看版本
# kubectl version --client
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.20", GitCommit:"1f3e19b7beb1cc0110255668c4238ed63dadb7ad", GitTreeState:"clean", BuildDate:"2021-06-16T12:58:51Z", GoVersion:"go1.13.15", Compiler:"gc", Platform:"linux/amd64"}
5、创建kube目录
mkdir ~/.kube
6、编辑config文件
在~/.kube目录下创建config
vim ~/.kube/config
查看node状态
# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master01 Ready controlplane,worker 30m v1.18.20
k8s-worker-node01 Ready etcd,worker 5m50s v1.18.20
k8s-worker-node02 Ready etcd,worker 5m1s v1.18.20
k8s-worker-node03 Ready etcd,worker 30m v1.18.20
查看所有pod状态
# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
cattle-system cattle-cluster-agent-66dcc68754-7lp4q 1/1 Running 2 29m
cattle-system cattle-node-agent-5twkm 1/1 Running 0 5m57s
cattle-system cattle-node-agent-v7c5l 1/1 Running 0 29m
cattle-system cattle-node-agent-wsnnr 1/1 Running 0 6m46s
........
如下
到这里,rancher部署k8s集群就完成了。可以发现我们只需要在rancher控制台上面点点点的操作就可以简单的把k8s集群部署下来。并且还提供了丰富的可视化功能管理模块。非常方便。