• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Kubernetes 企业项目09、Rancher 2.6 管理 k8s-v1.23 和以上版本高可用集群

武飞扬头像
Stars.Sky
帮助1

目录

一、Rancher 介绍

1.1Rancher简介

1.2 Rancher 和 k8s 的区别

1.3 Rancher 企业使用案例

二、安装 Rancher

2.1 初始化环境

2.2 安装 Rancher

2.3 登录 Rancher 平台 

三、通过 Rancher 管理已存在的 k8s 集群

3.1 配置 rancher

3.2 导入 k8s

四、通过 Rancher 仪表盘管理 k8s 集群:部署 tomcat 服务

4.1 创建名称空间

4.2 创建 deployment

4.3 创建 service 资源

4.4 创建 ingress 资源

4.5 本地 hosts 解析


一、Rancher 介绍

1.1Rancher简介

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

超过 40,000 家企业每天使用 Rancher 快速创新。

Rancher 官方文档:Rancher文档 | K8S文档 | Rancher | Rancher文档

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、业务上云等技术领域为上汽集团提供了可靠的支持。

—— 龚瀚申 上汽集团 PaaS 平台总监

二、安装 Rancher

2.1 初始化环境

机器规划(其中 k8s-v1.23 集群已存在):

主机名称 IP 最低配置
rancher 192.168.78.156 2vcpu / 3Gi 内存
k8s-master1 192.168.78.143 3vcpu / 3Gi 内存
k8s-node1 192.168.78.144 3vcpu / 3Gi 内存
k8s-node2 192.168.78.145 3vcpu / 3Gi 内存
  1.  
    # 配置 hosts 文件(所以机器都要执行)
  2.  
    vim /etc/hosts
  3.  
    192.168.78.143 k8s-master1
  4.  
    192.168.78.144 k8s-node1
  5.  
    192.168.78.145 k8s-node2
  6.  
    192.168.78.156 rancher
  7.  
     
  8.  
    # 关闭交换分区 swap,提升性能
  9.  
    [root@rancher ~]# swapoff -a # 临时关闭
  10.  
    [root@rancher ~]# sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久关闭:注释swap挂载,给swap这行开头加一下注释
  11.  
     
  12.  
    # 转发 IPv4 并让 iptables 看到桥接流量
  13.  
    [root@rancher ~]# cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
  14.  
    overlay
  15.  
    br_netfilter
  16.  
    EOF
  17.  
     
  18.  
    [root@rancher ~]# sudo modprobe overlay
  19.  
    [root@rancher ~]# sudo modprobe br_netfilter
  20.  
     
  21.  
    # 设置所需的 sysctl 参数,参数在重新启动后保持不变
  22.  
    [root@rancher ~]# cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
  23.  
    net.bridge.bridge-nf-call-iptables = 1
  24.  
    net.bridge.bridge-nf-call-ip6tables = 1
  25.  
    net.ipv4.ip_forward = 1
  26.  
    EOF
  27.  
     
  28.  
    # 应用 sysctl 参数而不重新启动
  29.  
    [root@rancher ~]# sudo sysctl --system
  30.  
     
  31.  
    # 配置国内阿里云 docker 的 repo 源
  32.  
    [root@rancher ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  33.  
     
  34.  
    # 安装 docker-ce
  35.  
    [root@rancher ~]# yum install docker-ce docker-ce-cli containerd.io -y
  36.  
     
  37.  
    [root@rancher ~]# systemctl enable docker --now
  38.  
    # 配置 docker 镜像加速器
  39.  
    [root@rancher ~]# mkdir -p /etc/docker
  40.  
    [root@rancher ~]# vim /etc/docker/daemon.json
  41.  
    # 写入如下内容:
  42.  
    {
  43.  
    "registry-mirrors":["https://vh3bm52y.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com"]
  44.  
    }
  45.  
     
  46.  
    [root@rancher ~]# systemctl restart docker

2.2 安装 Rancher

Rancher 版本支持的 Kubernetes 版本:Support matrix | SUSE

Docker 安装 Rancher 官方文档:使用 Docker 将 Rancher 安装到单个节点中 | Rancher Manager

  1.  
    [root@rancher ~]# docker pull rancher/rancher:v2.6.4
  2.  
     
  3.  
    [root@rancher ~]# mkdir -p /opt/data/rancher_data
  4.  
     
  5.  
    [root@rancher ~]# docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged -v /opt/data/rancher_data:/var/lib/rancher --name rancher rancher/rancher:v2.6.4
  6.  
     
  7.  
    [root@rancher ~]# docker ps
  8.  
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  9.  
    f20bff32a2cb rancher/rancher:v2.6.4 "entrypoint.sh" 4 seconds ago Up 3 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp rancher
  10.  
     
  11.  
    # unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
  12.  
    # privileged:使用该参数,container 内的 root 拥有真正的 root 权限。否则,container 内的 root 只是外部的一个普通用户权限。privileged 启动的容器,可以看到很多 host 上的设备,并且可以执行 mount。甚至允许你在 docker 容器中启动 docker 容器。

2.3 登录 Rancher 平台 

在浏览器访问 rancher 的 ip 地址:192.168.78.156

学新通

  1.  
    # 获取登录密码
  2.  
    [root@rancher ~]# docker logs f20bff32a2cb 2>&1 | grep "Bootstrap Password:"
  3.  
    2023/02/23 05:31:29 [INFO] Bootstrap Password: x4n56jjh92bzjmnhdz5f6d9jlhwvglr6xw9ldqrnch96t7zmctbplh

把获取到的密码 x4n56jjh92bzjmnhdz5f6d9jlhwvglr6xw9ldqrnch96t7zmctbplh 复制到 password 位置: 

学新通

设置密码(我设置的密码为 Qwe123456789):至少 12 个字符长度

学新通

设置语言:

学新通

三、通过 Rancher 管理已存在的 k8s 集群

3.1 配置 rancher

学新通

选择通用:

学新通

编辑集群名称:

学新通

3.2 导入 k8s

在 k8s 控制节点复制下图红色箭头标注的一串命令: 

学新通

  1.  
    # 提前拉取 rancher/rancher-agent:v2.6.4 镜像
  2.  
    [root@k8s-master1 ~]# docker pull rancher/rancher-agent:v2.6.4
  3.  
    [root@k8s-node1 ~]# docker pull rancher/rancher-agent:v2.6.4
  4.  
    [root@k8s-node2 ~]# docker pull rancher/rancher-agent:v2.6.4
  5.  
     
  6.  
    [root@k8s-master1 ~]# curl --insecure -sfL https://192.168.78.156/v3/import/ndlfvzjfzpgscxt8b9tdrqdtt89mnwh7rfks9rrksqwk54qfp4rjh2_c-m-62m8lbqs.yaml | kubectl apply -f -
  7.  
     
  8.  
    # 验证 rancher-agent 是否部署成功:
  9.  
    [root@k8s-master1 ~]# kubectl get pods -n cattle-system -o wide
  10.  
    NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
  11.  
    cattle-cluster-agent-57d5d69df4-m8rdq 1/1 Running 0 11s 10.244.36.73 k8s-node1 <none> <none>
  12.  
    cattle-cluster-agent-57d5d69df4-mgtjn 1/1 Running 0 5m28s 10.244.169.131 k8s-node2 <none> <none>

导入成功:

学新通四、通过 Rancher 仪表盘管理 k8s 集群:部署 tomcat 服务

学新通

4.1 创建名称空间

学新通

学新通

4.2 创建 deployment

学新通

编辑 deployment 名称:

学新通

容器配置(镜像名称:tomcat:8.5.34-jre8-alpine):

学新通

添加标签:

学新通

配置完成最基本的 deployment 资源,点击创建:

学新通

查看资源是否创建成功: 

学新通

  1.  
    [root@k8s-master1 ~]# kubectl get pods -n rancher-tomcat -o wide
  2.  
    NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
  3.  
    tomcat-8f48bcbc7-rqtxp 1/1 Running 0 3m3s 10.244.169.134 k8s-node2 <none> <none>
  4.  
    tomcat-8f48bcbc7-vd8pt 1/1 Running 0 3m3s 10.244.36.74 k8s-node1 <none> <none>

4.3 创建 service 资源

把 k8s 集群的 tomcat 这个 pod 映射出来。

选择左侧看到的服务,点击创建:

学新通

学新通添加端口:

学新通定义选择器后选择创建:

学新通

学新通

通过上面图片可以看到 tomcat-svc 已经创建好了,访问 k8s 任何一个节点 端口 30080,可以访问内部的 tomcat 了:访问 192.168.78.143:30080

学新通

4.4 创建 ingress 资源

需要安装 ingress-controller:https://kubernetes.github.io/ingress-nginx/deploy/

  1.  
    [root@k8s-master1 ~]# wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.6.4/deploy/static/provider/cloud/deploy.yaml
  2.  
     
  3.  
    # 修改 deploy.yaml 文件。因为源文件里的镜像都是国外的地址,基本拉取不下来,所以手动修改国内镜像。按顺序修改为先三个镜像:
  4.  
    image: registry.cn-hangzhou.aliyuncs.com/谷歌_containers/nginx-ingress-controller:v1.1.1
  5.  
     
  6.  
    image: registry.cn-hangzhou.aliyuncs.com/谷歌_containers/kube-webhook-certgen:v1.1.1
  7.  
     
  8.  
    image: registry.cn-hangzhou.aliyuncs.com/谷歌_containers/kube-webhook-certgen:v1.1.1
  9.  
     
  10.  
    [root@k8s-master1 ~]# kubectl apply -f deploy.yaml
  11.  
     
  12.  
    [root@k8s-master1 ~]# kubectl create clusterrolebinding clusterrolebinding-user-3 --clusterrole=cluster-admin --user=system:serviceaccount:ingress-nginx:ingress-nginx
  13.  
     
  14.  
    [root@k8s-master1 ~]# kubectl get pods -n ingress-nginx
  15.  
    NAME READY STATUS RESTARTS AGE
  16.  
    ingress-nginx-admission-create-gn5rc 0/1 Completed 0 3m15s
  17.  
    ingress-nginx-admission-patch-csmq8 0/1 Completed 0 3m14s
  18.  
    ingress-nginx-controller-74475868bb-2q8c5 1/1 Running 0 3m15s

创建 ingress 规则 

学新通

学新通

添加注释:

学新通

学新通4.5 本地 hosts 解析

学新通

  1.  
    # 先查看 ingress pod 分配到哪个节点
  2.  
    [root@k8s-master1 ~]# kubectl get ingress -A -o wide
  3.  
    NAMESPACE NAME CLASS HOSTS ADDRESS PORTS AGE
  4.  
    rancher-tomcat tomcat <none> sky.lucky.com 192.168.78.144 80 1h
  5.  
     
  6.  
    # 添加一行内容(ip 为被分配到的节点 ip)
  7.  
    192.168.78.144 sky.lucky.com

注意:不要挂梯子,不然域名访问不了!因为你挂梯子,域名直接代理到外网了,找不到!!!

在浏览器用域名访问:sky.lucky.com

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfkejig
系列文章
更多 icon
同类精品
更多 icon
继续加载