kubernetes(三)-Rancher管理k8s集群

1、Rancher 简介 k3s

Rancher 是一个开源的企业级多集群 Kubernetes 管理平台,实现了 Kubernetes 集群在混合云+本地数据中心的集中部署与管理, 以确保集群的安全性,加速企业数字化转型。超过 40000 家企业每天使用 Rancher 快速创新。

官网:https://docs.rancher.cn/

2、Rancher 和 k8s 的区别

Rancher 和 k8s 都是用来作为容器的调度与编排系统。但是 rancher 不仅能够管理应用容器,更重要的一点是能够管理 k8s 集群。 Rancher2.x 底层基于 k8s 调度引擎,通过 Rancher 的封装,用户可以在不熟悉 k8s 概念的情况下轻松的通过 Rancher 来部署容器到k8s集群当中。

3、Rancher 安装及配置

|---------------|---------|-----------|
| IP | 主机名 | 用途 |
| 192.168.10.11 | master | 控制节点 |
| 192.168.10.20 | node01 | 工作节点 |
| 192.168.10.21 | node02 | 工作节点 |
| 192.168.10.65 | rancher | Rancher节点 |

3.1 k8s集群安装部署

参考kubernetes中安装集群部分

3.2 安装 rancher

① 准备新环境,安装docker 环境,注意与集群docker版本保持一致

复制代码
//所有节点,关闭防火墙规则,关闭selinux,关闭swap交换
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
swapoff -a						#交换分区必须要关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab		#永久关闭swap分区,&符号在sed命令中代表上次匹配的结果
#加载 ip_vs 模块
for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done

//调整内核参数
cat > /etc/sysctl.d/kubernetes.conf << EOF
#开启网桥模式,可将网桥的流量传递给iptables链
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
#关闭ipv6协议
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1
EOF

//生效参数
sysctl --system  

-------------------- 节点安装docker --------------------
yum install -y yum-utils device-mapper-persistent-data lvm2 
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
yum install -y docker-ce-20.10.18 docker-ce-cli-10.10.18 containerd.io

mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://0a40cefd360026b40f39c00627fa6f20.mirror.swr.myhuaweicloud.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  }
}
EOF


systemctl daemon-reload
systemctl restart docker.service
systemctl enable docker.service 

docker info | grep "Cgroup Driver"
Cgroup Driver: systemd

② 安装rancher

复制代码
#在 master01 节点下载 rancher-agent 镜像
docker pull rancher/rancher-agent:v2.5.7

#在 rancher 节点下载 rancher 镜像
docker pull rancher/rancher:v2.5.7

docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged --name rancher rancher/rancher:v2.5.7
#--restart=unless-stopped 表示在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

3.3 登录 Rancher 平台

需要先等一会儿,再浏览器访问 http://192.168.10.65 ,第一次登录需要设置密码。由于未使用授信证书,会有报警,忽略即可登录后如是英文页面,可点击右下角语言选项选择中文

3.4 Rancher 管理已存在的 k8s 集群

选择【添加集群】,点击【导入】

【集群名称】设置为 k8s-cluster,点击【创建】

选择复制第三条命令绕过证书检查导入 k8s 集群

#在 k8s 控制节点 master01 上执行刚才复制的命令,如第一次执行报错,再执行一次即可

4、Rancher 部署监控系统

点击【启用监控以查看实时监控】

【监控组件版本】选择 0.2.1,其他的默认即可

点击【启用监控】,启动监控时间可能比较长,需要等待10分钟左右

5、使用 Rancher 仪表盘管理 k8s 集群

//以创建 nginx 服务为例

点击【仪表盘】进入 k8s 集群仪表盘界面

#创建名称空间 namespace

点击左侧菜单【Namespaces】,再点击右侧【Create】

【Name】输入 dev,【Description】选填可自定义

点击右下角【Create】

#创建 Deployment 资源

点击左侧菜单【Deployments】,再点击右侧【Create】

【Namespace】下拉选择 dev,【Name】输入 nginx-dev,【Replicas】输入 3

点击中间选项【Container】,【Container Image】输入 nginx:1.14,【Pull Policy】选择 IfNotPresent

在【Pod Labels】下点击【Add Lable】,【Key】输入 app,【Value】输入 nginx

点击中间选项【Labels and Annotations】,点击【Add Label】,【Key】输入 app,【Value】输入 nginx,点击右下角【Create】

#创建 service

点击左侧菜单【Services】,再点击右侧【Create】

点击【Node Port】

【Namespace】下拉选择 dev,【Name】输入 nginx-dev

【Port Name】输入 nginx,【Listening Port】输入 80,【Target Port】输入 80,【Node Port】输入 30180

点击中间选项【Selectors】,【Key】输入 app,【Value】输入 nginx

点击右下角【Create】

点击【nginx-dev】查看 service 是否已关联上 Pod

#点击 service 资源的节点端口 30180/TCP,可以访问内部的 nginx 页面了

相关推荐
问简19 小时前
docker 镜像相关
运维·docker·容器
Benszen20 小时前
Docker容器化技术实战指南
运维·docker·容器
Hommy8820 小时前
【开源剪映小助手】Docker 部署
docker·容器·开源·github·aigc
斯普信云原生组1 天前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器
喵了几个咪1 天前
如何在 Superset Docker 容器中安装 MySQL 驱动
mysql·docker·容器·superset
工具罗某人1 天前
docker compose部署kafka集群搭建
docker·容器·kafka
❀͜͡傀儡师1 天前
k8s部署的Nexus 3 数据库损坏恢复指南:从删除损坏数据库到完整数据重建
数据库·kubernetes·nexus3
开心码农1号1 天前
k8s中service和ingress的区别和使用
云原生·容器·kubernetes
张3231 天前
K8s 不部署源代码、不构建应用
kubernetes
L1624761 天前
Kubernetes 完整学习手册(1 主多从 + 纯 YAML 部署 + 访问原理)
学习·容器·kubernetes