概述
在容器技术广泛应用、Kubernetes 日益成熟的当下,企业内部运行多个 Kubernetes 集群已十分常见,二进制部署、rancher、kubeadm 等多种部署方式应运而生。本文着重讲解如何利用 Rancher 快速部署 K8s 集群。
Rancher 简介
Rancher 是一款开源的企业级容器管理平台,它免去了企业用开源软件搭建容器服务平台的繁琐过程,提供全栈化的容器部署与管理服务。Rancher 1.x 支持多种编排引擎,随着 Kubernetes 崛起,Rancher 2.x 完全转向 Kubernetes,可部署和管理各处的 Kubernetes 集群 。
Rancher 功能强大,能创建 Kubernetes 托管服务提供商的集群,自动完成节点创建与 Kubernetes 集群安装,也可导入已有集群。它支持集群身份验证和 RBAC,方便管理员统一控制集群访问;具备监控告警、日志外发功能,还与应用商店、Helm 集成;支持对接外部 CI/CD 流水线,也提供内置流水线;此外,多集群应用、全局 DNS 等众多开箱即用的功能,助力高效管理集群和业务应用,Rancher 是全栈式 Kubernetes 容器管理平台,也是实现 Kubernetes 随处运行的有力工具。
主机规划
主机名称 | 角色 | IP地址 | 基础软件 |
k8s-rancher | 管理k8s集群 | 172.18.0.6 | docker-ce |
k8s-master-node01 | k8s集群主节点1 | 172.18.0.8 | docker-ce |
k8s-master-node02 | k8s集群主节点2 | 172.18.0.19 | docker-ce |
k8s-master-node03 | k8s集群主节点3 | 172.18.0.27 | docker-ce |
k8s-worker-node01 | k8s集群从节点1 | 172.18.0.10 | docker-ce |
k8s-worker-node02 | k8s集群从节点2 | 172.18.0.18 | docker-ce |
k8s-worker-node03 | k8s集群从节点3 | 172.18.0.21 | docker-ce |
k8s-worker-node04 | k8s集群从节点4 | 172.18.0.26 | docker-ce |
k8s-worker-node05 | k8s集群从节点5 | 172.18.0.35 | docker-ce |
k8s-worker-node06 | k8s集群主节点6 | 172.18.0.20 | docker-ce |
k8s-worker-node07 | k8s集群主节点7 | 172.18.0.28 | docker-ce |
环境初始化
关闭防火墙关闭swap
# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config && setenforce 0
# 永久看/etc/selinux/config文件中SELINUX=disabled 即可
sed -i 's/permissive/disabled/' /etc/selinux/config && setenforce 0
## 关闭swap
swapoff -a && sed -ri 's/.*swap.*/#&/' /etc/fstab
同步时间
# 时间同步
yum install ntpdate -y
ntpdate ntp3.aliyun.com
docker容器安装
每台均安装 docker-ce,安装命令在 容器化技术之Docker-从入地到上天
现在在这里也提供一下:
# 配置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
# 安装epel源
yum -y install epel-release
# yum的'--showduplicates'选项对于显示软件包的多个版本很有用。当您有非常特定的依赖项并尝试查找要安装的软件包的特定名称时,它将起着非常大的作用
yum list docker --show-duplicates
# 安装依赖
yum -y install yum-utils device-mapper-persistent-data lvm2
# 添加软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新并安装Docker-CE
yum makecache fast
yum list docker-ce --show-duplicates
# 这种方式是安装最新的docker-ce
yum -y install docker-ce
# 添加镜像加速
mkdir -p /etc/docker/
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://yours.mirror.aliyuncs.com"]
}
EOF
# 添加开启启动
systemctl enable docker
# 更新xfsprogs
yum -y update xfsprogs
# 启动
systemctl daemon-reload
systemctl restart docker
安装Rancher
启动rancher
启动时需要添加 --privileged 参数
docker run --privileged -d --restart=unless-stopped -p 81:80 -p 443:443 cce.uniscity.com/rancher/rancher:v2.5.3
查看日志
# docker logs -f cda
填写密码后进入rancher首页
集群添加
添加一个k8s集群
选择自定义
这里使用的选择的是kubernetes 1.19.15的版本。这里网络类型建议选flannel类型哈。
然后点击'下一步'
勾选Etcd Control Worker 创建Master节点/勾选Worker 创建Node节点
复制命令登录指定服务器执行命令
kubectl工具的安装
我这里是将kubectl工具安装在master上
使用wget命令下载或者将它下载到本地再上传到服务器
wget https://storage.googleapis.com/kubernetes-release/release/v1.18.20/bin/linux/amd64/kubectl
加x权限
# chmod +x kubectl
将二进制文件移到PATH中
# mv kubectl /usr/local/bin/
查看版本
# 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-master-node01 Ready controlplane,etcd,worker 22m v1.19.15
k8s-worker-node01 Ready worker 13m v1.19.15
k8s-worker-node02 Ready worker 10m v1.19.15
k8s-worker-node03 Ready worker 6m38s v1.19.15
k8s-worker-node04 Ready worker 5m30s v1.19.15
k8s-worker-node05 Ready worker 3m30s v1.19.15
查看所有pod状态
# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
cattle-system cattle-cluster-agent-5dfd87d87b-zfkkf 1/1 Running 0 21m
cattle-system cattle-node-agent-456g7 1/1 Running 0 3m11s
cattle-system cattle-node-agent-cvng6 1/1 Running 0 5h15m
cattle-system cattle-node-agent-f2wcq 1/1 Running 0 16m
cattle-system cattle-node-agent-hd4c2 1/1 Running 0 5h20m
cattle-system cattle-node-agent-rmc98 1/1 Running 0 5h16m
cattle-system cattle-node-agent-spwsl 1/1 Running 0 18m
cattle-system kube-api-auth-bg9cd 1/1 Running 0 18m
fleet-system fleet-agent-76fc77855-ssxrz 1/1 Running 1 3h6m
ingress-nginx default-http-backend-6977475d9b-v6st4 1/1 Running 0 13m
ingress-nginx nginx-ingress-controller-cpzd6 1/1 Running 0 16m
ingress-nginx nginx-ingress-controller-cr59l 1/1 Running 0 5h20m
ingress-nginx nginx-ingress-controller-k75fr 1/1 Running 0 5h16m
ingress-nginx nginx-ingress-controller-lhw8t 1/1 Running 0 3m11s
ingress-nginx nginx-ingress-controller-nr766 1/1 Running 0 5h15m
ingress-nginx nginx-ingress-controller-sfckx 1/1 Running 0 18m
kube-system calico-kube-controllers-655c554569-vm5lb 1/1 Running 0 21m
kube-system canal-f7kv7 2/2 Running 0 3m11s
kube-system canal-fb6ns 2/2 Running 0 16m
kube-system canal-frcdq 2/2 Running 0 5h20m
kube-system canal-fwsmg 2/2 Running 0 18m
kube-system canal-h84cr 2/2 Running 0 5h16m
kube-system canal-w722j 2/2 Running 0 5h15m
kube-system coredns-7cc5cfbd77-mrf7g 1/1 Running 0 118m
kube-system coredns-7cc5cfbd77-rwkl9 1/1 Running 0 13m
kube-system coredns-autoscaler-76f8869cc9-rp4bx 1/1 Running 0 3h6m
kube-system metrics-server-54788574fd-x4w9c 1/1 Running 0 3h6m
rancher部署k8s集群就完成了!