前言
在前面的k8s基础学习中,我们学习了各种资源的搭配运用,以及命令行,声明式文件创建。这些都是为了k8s管理员体会k8s的框架,内容基础。在真正的生产环境中,大部分的公司还是会选用图形化管理工具来管理k8s集群,大大提高工作效率。
在二进制搭建k8集群时,我们就知道了k8s本身就具有一款原生的k8s集群管理工具,但是原生图形化管理工具dashborad只拥有管理一个集群的能力。而对于现代化生产力公司来讲,一个集群能够做的事情还是太少,所以我们需要引入更强大的集群管理工具。市面上较为常用的有rancher kubesphere k9s。本次我们主要介绍rancher的功能于搭建。
1. Rancher的相关知识
1.1 Rancher的简介
Rancher 是一个开源的企业级多集群 Kubernetes 管理平台,实现了 Kubernetes 集群在混合云+本地数据中心的集中部署与管理, 以确保集群的安全性,加速企业数字化转型。超过 40000 家企业每天使用 Rancher 快速创新。
1.2 Rancher与k8s的关系及区别
Rancher和K8s的关系,Rancher和K8s区别对比。简单来说,K8s(Kubernetes)为企业提供了一种一致的方式来管理任何计算基础架构,Rancher则是用于管理位于任何位置的Kubernetes集群的完整平台。如果用户是自己手动部署K8s集群,流程还是比较复杂的,需要掌握一定的技术知识,所以为了简化Kubernetes操作,一些Kubernetes管理平台应运而生,例如Rancher。
Rancher完美解决了Kubernetes用户安装和配置Kubernetes集群的难题,用户可以将集群配置定义为代码,Rancher将通过Kubernetes分发和配置引擎RKE在任何基础架构上构建和扩展Kubernetes。
而k8s与Rancher最大区别:
Rancher 和 k8s 都是用来作为容器的调度与编排系统。但是 rancher 不仅能够管理应用容器,更重要的一点是能够管理 k8s 集群。 Rancher2.x 底层基于 k8s 调度引擎,通过 Rancher 的封装,用户可以在不熟悉 k8s 概念的情况下轻松的通过 Rancher 来部署容器到k8s集群当中。
1.3 Rancher具有的优势
简化Kubernetes学习曲线,推动企业采用Kubernetes
快速构建、集成和自动化CI/CD流水线
管理复杂的微服务应用程序
提供基于Helm的应用商店,打造一站式应用程序部署
集群监控和集群安全的最佳实践
在任何云上、VMware集群或物理机上构建和运行Kubernetes集群
2. Rancher的安装部署
2.1 实验环境与部署图分配
至少准备一个二进制或其他方式部署好的k8s集群,准备一台初始化的虚拟机(实现安装好docker并且调整好仓库源)作为rancher的服务机。
Rancher节点/rancher 192.168.73.108
控制节点/master01 192.168.73.105
工作节点/node01 192.168.73.106
工作节点/node02 192.168.73.107
2.2 具体的部署操作
(1)在 rancher 节点下载 rancher 镜像
docker load -i rancher.tar
#如果没有提前下载好镜像tar包,也可以采用直接拉取镜像
docker pull rancher/rancher:v2.5.7
(2)在所有k8s的node节点上下载 rancher-agent 镜像
#将rancher-agent:v2.5.7包上传到master上,在传给其他node节点
scp rancher-agent:v2.5.7 root@192.168.73.106:`pwd`
scp rancher-agent:v2.5.7 root@192.168.73.107:`pwd`
#拉取本地镜像
docker load -i rancher-agent:v2.5.7
#如果没有本地镜像就用每台node主机拉取官方镜像
docker pull rancher/rancher-agent:v2.5.7
(3)在rancher主机上启动rancher镜像,映射端口
docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged --name rancher rancher/rancher:v2.5.7
#--restart=unless-stopped 表示在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
docker ps -a|grep rancher
(4)进行客户机登录rancher
(5)Rancher 管理已存在的 k8s 集群
选择【添加集群】,点击【导入】
【集群名称】设置为 k8s-cluster,点击【创建】
选择复制第三条命令绕过证书检查导入 k8s 集群
在 k8s 控制节点 master01 上执行刚才复制的命令,如第一次执行报错,再执行一次即可
curl --insecure -sfL https://192.168.73.108/v3/import/c7kj7vrz6rzn899pwdzmcbw89sv5bcnhlmk8s2j2h4s894sdjth6gt_c-g2b75.yaml | kubectl apply -f -
kubectl get pods -n cattle-system -o wide
3. Rancher图形化界面的基本操作
3.1 Rancher 部署监控系统
点击【启用监控以查看实时监控】
【监控组件版本】选择 0.2.1,其他的默认即可
点击【启用监控】,启动监控时间可能比较长,需要等待10分钟左右
3.2 使用 Rancher 仪表盘管理 k8s 集群
以创建 nginx 服务为例,点击【仪表盘】进入 k8s 集群仪表盘界面
(1)创建名称空间 namespace
点击左侧菜单【Namespaces】,再点击右侧【Create】
【Name】输入 dev,【Description】选填可自定义
点击右下角【Create】
(2)创建 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】
(3)创建 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