一、Rancher介绍
1.1 Rancher简介
Rancher 是一个开源的企业级多集群 Kubernetes 管理平台,实现了 Kubernetes 集群在混合云+本地 数据中心的集中部署与管理,以确保集群的安全性,加速企业数字化转型。超过 40,000 家企业每天使用 Rancher 快速创新
Rancher 官方文档: https://docs.rancher.cn/
1.2 Rancher和k8s的区别
Rancher 和 k8s 都是用来作为容器的调度与编排系统。但是 rancher 不仅能够管理应用容器,更重要 的一点是能够管理 k8s 集群。Rancher2.x 底层基于 k8s 调度引擎,通过 Rancher 的封装,用户可以在不 熟悉 k8s 概念的情况下轻松的通过 Rancher 来部署容器到 k8s 集群当中。
1.3 Rancher使用案例
(1) 中保银行
在使用 Rancher 平台之前,中银保险也尝试过使用原生的一些 Kubernetes 平台,但是这些平台学习 使用成本高昂、运行维护特别复杂。尤其是当我公司使用多种混合云环境的时候,一个个 Kubernetes 集 群就变成了一个个技术孤岛,反而加重了公司信息化转型的压力。Rancher 平台的采用有效地解决了之前 平台使用中所存在的问题,提升我公司测试业务平台的运行维护效率
(2) 蔚来汽车数字运营中国
Rancher 友好的图形化管理界面和资源创建的易用性、多集群管理能力、AD 认证和权限管理集成、应 用商店功能等各种能力,帮助我们简化了容器化应用的部署,得以方便地进行多云 Kubernetes 管理和权 限控制,提高了应用交付的效率。感谢 Rancher 团队,期待 Rancher 中国团队进一步优化功能,推进 Rancher 在国内的大量落地。
(3) 上汽集团
Rancher 2.x 是数据中心级别的管理平台,拥有多云管理的能力,符合未来企业上云的架构规划演 进;Rancher 的开源产品模式降低了技术人员的使用成本,在兼顾原生 Kubernetes 的同时,为开发人员 提供了丰富的 API 与系统功能,提高了开发生产效率。同时,Rancher 专业的容器产品团队,架起了开源 产品与生产业务的桥梁,在微服务、应用容器化、DevOps、业务上云等技术领域为上汽集团提供了可靠的 支持。
二、安装Rancher
2.1 初始化实验环境
主机名 | IP | 环境 | 功能 |
rancher | 192.168.10.14 | 6核6G Centos7.9 | rancher2.5.7 |
master | 192.168.10.10 | 4核6G Centos7.9 | kubelet-1.20.7 |
node1 | 192.168.10.11 | 2核4G Centos7.9 | |
node2 | 192.168.10.12 | 2核4G Centos7.9 |
1.修改主机名 hostnamectl set-hostname rancher 2.配置hosts文件 192.168.10.10 master 192.168.10.11 node1 192.168.10.12 node2 192.168.10.14 rancher 3.ssh信任 ssh-copy-id master ssh-copy-id node1 ssh-copy-id node2 4.关闭防火墙和selinux systemctl stop firewalld ; systemctl disable firewalld setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 5.关闭swap分区 swapoff -a 注销/etc/fstab关于swap分区 6.内核参数修改 modprobe br_netfilter echo "modprobe br_netfilter" >> /etc/profile cat > /etc/sysctl.d/k8s.conf << EOFnet.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF
sysctl -p /etc/sysctl.d/k8s.conf 7.配置阿里云镜像 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 8.安装docker-ce yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate yum install docker-ce docker-ce-cli containerd.io -y systemctl start docker && systemctl enable docker.service 9.修改 docker 配置文件,配置镜像加速器 vim /etc/docker/daemon.json { "registry-mirrors":["https://pft7f97f.mirror.aliyuncs.com", "https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com", "https://rncxm540.mirror.aliyuncs.com"], "exec-opts": ["native.cgroupdriver=systemd"] } systemctl daemon-reload && systemctl restart docker && systemctl status docker
11.时间同步
ntpdate time1.aliyun.com
2.2 安装Rancher
[root@rancher ~]# docker load -i rancher-2.5.10.tar.gz
[root@rancher ~]# docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged rancher/rancher:v2.5.10
注:unless-stopped,在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f952690f98dd rancher/rancher:v2.5.10 "entrypoint.sh" 3 seconds ago Up 2 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp condescending_spence
2.3 登录Rancher平台
https://192.168.10.14/
右下角可以修改为中文: admin:admin@123
Add cluster--导入集群---名称
# 在master上执行2次,第一次报错,第二次就行了
[root@master ~]# curl --insecure -sfL https://192.168.10.14/v3/import/6sqdq4kfcmkpf9tm4cjgjrhq7xbpsdzdn2w9ds4nhpknvrqp2xhj2s_c-vxfgn.yaml | kubectl apply -f -
error: no objects passed to apply
[root@master ~]# curl --insecure -sfL https://192.168.10.14/v3/import/6sqdq4kfcmkpf9tm4cjgjrhq7xbpsdzdn2w9ds4nhpknvrqp2xhj2s_c-vxfgn.yaml | kubectl apply -f -
clusterrole.rbac.authorization.k8s.io/proxy-clusterrole-kubeapiserver created
clusterrolebinding.rbac.authorization.k8s.io/proxy-role-binding-kubernetes-master created
namespace/cattle-system created
serviceaccount/cattle created
clusterrolebinding.rbac.authorization.k8s.io/cattle-admin-binding created
secret/cattle-credentials-9c7274e created
clusterrole.rbac.authorization.k8s.io/cattle-admin created
deployment.apps/cattle-cluster-agent created
显示pending状态需要在k8s控制节点和工作节点导入
docker load rancher-agent-2-5-10.tar.gz
执行docker exec -ti <容器id> reset-password 重置密码
三、通过Rancher部署监控系统
3.1 启用Rancher集群级别监控
#把 prometheus-grafana.tar.gz 镜像压缩包上传node节点,然后解压
[root@node1 ~]# docker load -i prometheus-grafana.tar.gz
Loaded image: rancher/grafana-grafana:7.1.5
Loaded image: rancher/istio-kubectl:1.5.10
Loaded image: rancher/prom-node-exporter:v1.0.1
Loaded image: rancher/coreos-kube-state-metrics:v1.9.7
Loaded image: kubernetesui/dashboard:v2.0.0
Loaded image: rancher/jimmidyson-configmap-reload:v0.3.0
Loaded image: rancher/prometheus-auth:v0.2.1
Loaded image: rancher/library-nginx:1.19.2-alpine
Loaded image: rancher/prom-prometheus:v2.18.2
Loaded image: rancher/coreos-prometheus-config-reloader:v0.39.0
Loaded image: rancher/coreos-prometheus-operator:v0.39.0
Loaded image: kubernetesui/metrics-scraper:v1.0.4
#在开启监控的时候默认会拉取一些镜像,速度较慢,所以大家先把安装监控需要的镜像解压 启动监控时间可能比较长,需要等 10-20 分钟 在 rancher 主页面,点击集群名称:master
选择监控组件版本---------》启用监控-------》保存
显示监控API未就绪,需要等待10-20分钟,才能就绪
在事件里可以查看监控的安装过程
过10-20分钟后,监控API已经就绪了,那就刷新当前页面,监控部署完成后就可以看到我们的监控信息了
点开集群监控----选择Grafana
3.2 查看Grafana监控
通过右边的Grafana可以进入到grafana监控页面中
四、通过Rancher仪表盘管理k8s集群:部署tomcat服务
所有节点导入tomcat镜像
docker load -i tomcat.tar.gz
4.1 通过页面创建名称空间namespace
打开rancher主页面,点击仪表盘
[root@master ~]# kubectl get ns NAME STATUS AGE cattle-prometheus Active 28m cattle-system Active 89m default Active 7d20h devlopment Active 25h fleet-system Active 76m jenkins-k8s Active 30h kube-node-lease Active 7d20h kube-public Active 7d20h kube-system Active 7d20h production Active 25h qatest Active 25h simon Active 2m18s
4.2 创建deployment资源
指定容器名称、标签、镜像名称、副本数
[root@master ~]# kubectl get pods -n simon -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES tomcat-5d6d8b69bf-2xnws 1/1 Running 0 86s 10.244.166.137 node1 <none> <none> tomcat-5d6d8b69bf-fz7xv 1/1 Running 0 86s 10.244.166.138 node1 <none> <none>
4.3 创建Service资源
把k8s集群内部的tomcat暴露出来可以让外部访问
访问:http://192.168.10.11:30180/