文章目录
一、实验须知
1、Rancher简介
Rancher是一个开源的企业级多集群Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理,以确保集群的安全性,加速企业数字化转型。
Rancher特点如下:
- 容器管理:Rancher 支持 K8S,允许用户通过 Web 界面集中管理多个 K8S集群,用户通过简单的几步就能够部署k8s资源;
- 多云支持:Rancher 提供了对多个云提供商的支持,如 AWS、Azure、Google Cloud 等;
- 高可用性:Rancher 高可用模式,确保平台本身的稳定性和容错性。在某些节点失败的情况下,Rancher仍然可以继续运行并提供服务;
- 安全性:Rancher 提供了多层级的安全特性,包括用户认证、访问控制、镜像安全扫描等,帮助用户保护容器化应用程序的安全;
- 资源管理:Rancher 允许用户对容器集群中的资源进行管理和调整,以确保应用程序的性能和稳定性;
- 应用商店:Rancher 提供了应用商店(Catalog)功能,允许用户浏览和安装预定义的应用程序模板,简化了应用程序部署的过程。
本次实验所需离线文件如下:点击下载
2、当前实验环境
1、已存在K8S集群信息:
角色 | IP地址 | 主机名称 | 集群版本 |
---|---|---|---|
控制节点 | 16.32.15.200 | master-1 | v1.26.2 |
工作节点 | 16.32.15.201 | node-1 | v1.26.2 |
工作节点 | 16.32.15.202 | node-2 | v1.26.2 |
2、Rancher服务器信息:
角色 | IP地址 | 主机名称 | 版本 |
---|---|---|---|
Rancher | 16.32.15.115 | rancher | v2.9.2 |
二、部署Rancher
1、服务器初始化操作
1、配置主机名+本地解析
hostnamectl set-hostname rancher && bash
添加本地hosts解析:
cat >> /etc/hosts << EOF
16.32.15.115 rancher
16.32.15.200 master-1
16.32.15.201 node-1
16.32.15.202 node-2
EOF
2、配置rancher到K8S主机互信
ssh-keygen
ssh-copy-id master-1
ssh-copy-id node-1
ssh-copy-id node-2
3、关闭防火墙
systemctl disable firewalld --now
setenforce 0
sed -i -r 's/SELINUX=[ep].*/SELINUX=disabled/g' /etc/selinux/config
iptables -F
4、关闭swap分区
swapoff --all
sed -i -r '/swap/ s/^/#/' /etc/fstab
5、添加网桥过滤器和地址转发功能
cat >> /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl -p /etc/sysctl.d/kubernetes.conf
加载网桥过滤器模块:
modprobe br_netfilter
lsmod | grep br_netfilter # 验证是否生效
6、时间同步,一定保证rancher服务器与K8S服务器时间一致!
同步时区:
timedatectl set-timezone Asia/Shanghai
同步时间:
yum -y install ntpdate
ntpdate ntp1.aliyun.com
定时同步时间:
echo "0 1 * * * ntpdate ntp1.aliyun.com" >> /var/spool/cron/root
crontab -l
7、安装Docker环境
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum makecache
# yum-utils软件用于提供yum-config-manager程序
yum install -y yum-utils
# 使用yum-config-manager创建docker阿里存储库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce-20.10.6 docker-ce-cli-20.10.6 -y
配置docker国内加速器:
mkdir /etc/docker
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://vm1wbfhf.mirror.aliyuncs.com",
"http://f1361db2.m.daocloud.io",
"https://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.baidubce.com",
"https://ustc-edu-cn.mirror.aliyuncs.com",
"https://registry.cn-hangzhou.aliyuncs.com",
"https://ccr.ccs.tencentyun.com",
"https://hub.daocloud.io",
"https://docker.shootchat.top",
"https://do.nark.eu.org",
"https://dockerproxy.com",
"https://docker.m.daocloud.io",
"https://dockerhub.timeweb.cloud",
"https://docker.shootchat.top",
"https://do.nark.eu.org"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
启动并加入自启动:
systemctl enable docker --now
systemctl status docker
8、安装docker-compose环境
curl -L "https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
查看版本:
docker-compose --version
2、部署Rancher
1、下载镜像
docker pull rancher/rancher:v2.9.1
2、创建docker-compose文件
mkdir ~/docker-compose/rancher -p
cat > ~/docker-compose/rancher/docker-compose.yaml << EOF
version: '3.8'
services:
rancher:
image: rancher/rancher:v2.9.1
restart: unless-stopped
ports:
- "80:80"
- "443:443"
privileged: true
EOF
3、启动服务
cd ~/docker-compose/rancher
docker-compose up -d
docker-compose logs -f
3、登入Rancher平台
1、获取临时密码
docker logs rancher 2>&1 | grep "Bootstrap Password:"|awk '{print $NF}'
nxkd6bphsmcbcmq2ld6749jzmgn8cslffgx9fggsntjqswwzwgd5s8
2、登入Rancher
浏览器访问:https://16.32.15.115/
设置一个新密码:
最终页面如下:
三、Rancher对接K8S集群
选择导入已有集群:
在K8S控制节点中执行:
curl --insecure -sfL https://16.32.15.115/v3/import/2lp7hxrrvdhl5lgwr7dpbz5lv7bc6lq7rffhpd7zp4p626j56b577b_c-m-9m57bbmf.yaml | kubectl apply -f -
查看rancher-agent是否部署成功:
kubectl get pods -n cattle-system -o wide
helm
的不用管,本次用不到!
四、通过Rancher仪表盘部署Nginx服务
1、创建命名空间
可以针对命名空间做一些限制,如下图,由于仅仅只是实验,我没有做任何限制,实际根据环境决定!
2、创建Deployment
填写容器基本信息:
给Pod打标签:
完成后,点击创建:
查看资源是否创建成功:
3、创建Service
添加控制器,关联Pod:
查看控制器管理Pod信息:
现在任意Node节点IP:30088都可以访问到Nginx页面了,如下图: