• 云原生Kubernetes:Rancher管理k8s集群


    目录

    一、理论

    1.Rancher

    2.Rancher 安装及配置

    二、实验

    1.Rancher 安装及配置

    三、问题

    1. Rancher 部署监控系统报错

    四、总结


    一、理论

    1.Rancher

    (1)  概念

    Rancher 简介
    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架构

    Kubernetes 已经成为了容器管理的标准。大多数云服务和虚拟服务的提供商现在将 Kubernetes 作为标准的基础设施。用户可以使用 Rancher Kubernetes Engine(简称 RKE),或其他云服务提供商的容器服务,如 GKE、AKS、 EKS 等,创建 Kubernetes 集群。用户也可以将已有集群导入 Rancher,集中管理。

    Rancher架构如下:

    2.Rancher 安装及配置

    (1)环境

    表1 环境

    节点主机IP地址
    控制节点master1192.168.204.180
    控制节点master2192.168.204.181
    工作节点node1192.168.204.182
    Rancher节点rancher192.168.204.30 

    配置hosts文件

    1. vim /etc/hosts
    2. 192.168.204.180 master1
    3. 192.168.204.181 master2
    4. 192.168.204.182 node1
    5. 192.168.204.30 rancher

    关闭安全机制

    1. 关闭防火墙
    2. [root@ harbor~]# systemctl stop firewalld && systemctl disable firewalld
    3. 关闭selinux
    4. [root@ harbor~]# setenforce 0
    5. [root@harbor~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    6. 注意:修改selinux配置文件之后,重启机器,selinux才能永久生效

    (2)安装docker

    1. #配置docker-ce国内yum源(阿里云)
    2. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    3. #安装docker依赖包
    4. yum install -y yum-utils device-mapper-persistent-data lvm2
    5. #安装docker-ce
    6. yum install docker-ce -y
    7. #启动docker服务
    8. systemctl start docker && systemctl enable docker
    9. systemctl status docker
    10. #查看Docker 版本信息
    11. docker version
    12. #开启包转发功能和修改内核参数
    13. modprobe br_netfilter
    14. cat > /etc/sysctl.d/docker.conf <<EOF
    15. net.bridge.bridge-nf-call-ip6tables = 1
    16. net.bridge.bridge-nf-call-iptables = 1
    17. net.ipv4.ip_forward = 1
    18. EOF
    19. sysctl -p /etc/sysctl.d/docker.conf
    20. systemctl restart docker

    (3) 部署rancher

    1. 1、安装 rancher
    2. #在 master1 节点下载 rancher-agent 镜像
    3. docker pull rancher/rancher-agent:v2.5.7
    4. #在 rancher 节点下载 rancher 镜像
    5. docker pull rancher/rancher:v2.5.7
    6. docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged --name rancher rancher/rancher:v2.5.7
    7. #--restart=unless-stopped 表示在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
    8. docker ps -a|grep rancher
    9. 23874501455d rancher/rancher:v2.5.7 "entrypoint.sh" 30 seconds ago Up 28 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp rancher
    10. 2、登录 Rancher 平台
    11. 需要先等一会儿,再浏览器访问 http://192.168.204.30 ,由于未使用授信证书,会有报警,忽略即可
    12. 登录后如是英文页面,可点击右下角语言选项选择中文
    13. 3、Rancher 管理已存在的 k8s 集群
    14. 选择【添加集群】,点击【导入】
    15. 【集群名称】设置为 k8s-cluster,点击【创建】
    16. 选择复制第三条命令绕过证书检查导入 k8s 集群
    17. #在 k8s 控制节点 master01 上执行刚才复制的命令,如第一次执行报错,再执行一次即可
    18. curl --insecure -sfL https://192.168.204.30/v3/import/l5kfqxwdgxlw8bsgjbzcskmjlnqmk8dd8kl5r976q9wnwq2vbf8xfh_c-jhkl2.yaml | kubectl apply -f -
    19. kubectl get ns
    20. NAME STATUS AGE
    21. cattle-system Active 2m20s
    22. default Active 93d
    23. fleet-system Active 2m2s
    24. kube-node-lease Active 93d
    25. kube-public Active 93d
    26. kube-system Active 93d
    27. kubernetes-dashboard Active 92d
    28. kubectl get pods -n cattle-system -o wide
    29. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    30. cattle-cluster-agent-f9bbd6fb8-d7dbg 1/1 Running 0 2m26s 10.244.137.65 master1
    31. kubectl get pods -n fleet-system -o wide
    32. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    33. fleet-agent-55bfc495bd-gd95w 1/1 Running 0 117s 10.244.166.149 node1
    34. 4、Rancher 部署监控系统
    35. 点击【启用监控以查看实时监控】
    36. 【监控组件版本】选择 0.2.1,其他的默认即可
    37. 点击【启用监控】,启动监控时间可能比较长,需要等待10分钟左右
    38. 5、使用 Rancher 仪表盘管理 k8s 集群
    39. //以创建 nginx 服务为例
    40. 点击【仪表盘】进入 k8s 集群仪表盘界面
    41. #创建名称空间 namespace
    42. 点击左侧菜单【Namespaces】,再点击右侧【Create】
    43. 【Name】输入 dev,【Description】选填可自定义
    44. 点击右下角【Create】
    45. #创建 Deployment 资源
    46. 点击左侧菜单【Deployments】,再点击右侧【Create】
    47. 【Namespace】下拉选择 dev,【Name】输入 nginx-dev,【Replicas】输入 3
    48. 点击中间选项【Container】,【Container Image】输入 nginx:1.14,【Pull Policy】选择 IfNotPresent
    49. 在【Pod Labels】下点击【Add Lable】,【Key】输入 app,【Value】输入 nginx
    50. 点击中间选项【Labels and Annotations】,点击【Add Label】,【Key】输入 app,【Value】输入 nginx
    51. 点击右下角【Create】
    52. #创建 service
    53. 点击左侧菜单【Services】,再点击右侧【Create】
    54. 点击【Node Port】
    55. 【Namespace】下拉选择 dev,【Name】输入 nginx-dev
    56. 【Port Name】输入 nginx,【Listening Port】输入 80,【Target Port】输入 80,【Node Port】输入 30180
    57. 点击中间选项【Selectors】,【Key】输入 app,【Value】输入 nginx
    58. 点击右下角【Create】
    59. 点击【nginx-dev】查看 service 是否已关联上 Pod
    60. #点击 service 资源的节点端口 30180/TCP,可以访问内部的 nginx 页面了

    二、实验

    1.Rancher 安装及配置

    (1)环境

    表1 环境

    节点主机IP地址
    控制节点master1192.168.204.180
    控制节点master2192.168.204.181
    工作节点node1192.168.204.182
    Rancher节点rancher192.168.204.30 

    修改主机名

    配置hosts文件

    关闭安全机制

    配置rancher到k8s主机互信

    (2)安装docker

    安装docker依赖包

    安装docker-ce

    启动docker服务

    查看Docker 版本信息

    (3) 安装rancher

    在 master1 节点下载 rancher-agent 镜像

    在 rancher 节点下载 rancher 镜像

    --restart=unless-stopped 表示在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

    查看进程

    (4)登录 Rancher 平台

    需要先等一会儿,再浏览器访问 http://192.168.204.30 ,由于未使用授信证书,会有报警,忽略即可

    登录后如是英文页面,可点击右下角语言选项选择中文

    提示,关闭即可

    (5)Rancher 管理已存在的 k8s 集群

    右下角设置语言

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

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

    选择复制第三条命令绕过证书检查导入 k8s 集群
    在 k8s 控制节点 master01 上执行刚才复制的命令,如第一次执行报错,再执行一次即可

    添加成功

    master节点查看信息

    (6)Rancher 部署监控系统

    启用监控

    (7)使用 Rancher 仪表盘管理 k8s 集群

    (8)创建名称空间 namespace

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

    Name】输入 dev,【Description】选填可自定义
    点击右下角【Create】

    (9)创建 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】

    (10)创建 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 页面了

    三、问题

    1. Rancher 部署监控系统报错

    (1)报错

    (2)原因分析

    CPU内核数与内存需要扩容

    (3)解决方法

    调大内核与内存

    修改前:

    修改后:

    四、总结

    官方提供了三种安装模式:docker、单节点、集群(高可用)
     

    1. Rancher有docker安装在单节的模式,也有这样的把rancher安装在K8S集群里的高可用模式。

    Rancher有如下问题:

    直观上Rancher给人的感觉是它是K8S的上游,可以管理多个K8S集群,但是一个高可用的集群又往往需要安装在K8S集群中

    Rancher可以理解为K8S的上层(2.x版本以后),有点像Anaconda与Python的关系,但是由于Anaconda没有高可用问题,结构很清晰;早前Rancher和Kubernetes是在同一个赛道上的,都是做容器编排的,后来随K8S大火,2.x以后Rancher就等价于Kubernetes的超集了。

  • 相关阅读:
    计算机操作系统——概述(课程笔记)
    第九章 泛型编程
    《爱在 ZStack Cube 超融合》三部曲
    【C++】多态 ③ ( “ 多态 “ 实现需要满足的三个条件 | “ 多态 “ 的应用场景 | “ 多态 “ 的思想 | “ 多态 “ 代码示例 )
    SQL零基础入门教程,贼拉详细!贼拉简单! 速通数据库期末考!(十)
    【相机标定&基于消失点的外参标定】
    正则表达式详细知识点
    2023CANN训练营第二季——Ascend C算子开发(入门)——基础概念
    Mybatis中使用${}和使用#{}
    接口的安全设计要素有哪些?
  • 原文地址:https://blog.csdn.net/cronaldo91/article/details/133745565