码农行者 码农行者
首页
  • Python

    • 语言特性
    • Django相关
    • Tornado
    • Celery
  • Golang

    • golang学习笔记
    • 对比python学习go
    • 模块学习
  • JavaScript

    • Javascript
  • 数据结构预算法笔记
  • ATS
  • Mongodb
  • Git
云原生
运维
垃圾佬的快乐
  • 数据库
  • 机器学习
  • 杂谈
  • 面试
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

DeanWu

软件工程师
首页
  • Python

    • 语言特性
    • Django相关
    • Tornado
    • Celery
  • Golang

    • golang学习笔记
    • 对比python学习go
    • 模块学习
  • JavaScript

    • Javascript
  • 数据结构预算法笔记
  • ATS
  • Mongodb
  • Git
云原生
运维
垃圾佬的快乐
  • 数据库
  • 机器学习
  • 杂谈
  • 面试
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Kubernetes 学习笔记 - rancher

    • rancher 简介
      • 搭建
        • K3S 集群安装
        • 安装 Rancher
      • 总结
      • 云原生
      • rancher
      DeanWu
      2022-01-18
      目录

      Kubernetes 学习笔记 - rancher

      # rancher 简介

      Rancher是一个开源的企业级容器管理平台。Logo是一头公牛,其中各组件更是以 cattle (公牛)等单词开头,将容器集群比喻一头头的公牛,Rancher 正是对这“公牛”的管理者、放牧者。

      Rancher 是由 RancherLabs 维护的,他们主要通过提供Rancher企业订阅服务和容器解决方案为主要业务。旗下产品还有 k3s、RKE/RKE2、Longhorn 等。

      2020年底, RancherLabs 加入 SUSE ,能想到的在技术和资金方面必将迎来新的机会。更多 RancherLabs 的历史可看起官网 (opens new window)。

      目前这个时间点,构建一套生产可用的容器平台已经变得非常容易,大致有如下几种方案:

      • 团队技术敦实,自己维护一套k8s集群。
      • 团队技术稍弱,使用云厂商提供的容器托管服务,其中又有好几中姿势,局部托管、全部托管等。国内的像是阿里云的ACK、腾讯的TKE等,国外的Google GKE、Aws EKS 等都能满足我们的需求。

      针对多机房、夸区域的容器调度,目前主流方案还是部署多套集群,简单粗暴。这样便迎来的新的问题痛点「多集群的管理」,容器中的各种复杂资源都需要集中管理。Rancher 就是解决这个问题的。

      Rancher 有哪些优势?官方自己的说辞,Why Rancher? (opens new window)。大致集中在关键字:多集群管理、混合多云、集中式应用管理(基于helm+operator)、基于Fleet的多集群Devops、一致的安全策略。

      说下我们目前选用它的一些考虑因素吧:

      • 多集群管理,我们设备分布在多云,物理IDC也有部分机器,要容器化的话,首选多集群方案。使用它可以方便的实现多集群集中管理。
      • 基于Helm + operater + Fleet 的应用管理,可通过它自带的UI,简单方便的安装像 Prometheus等扩展必备应用组件。
      • Rancher UI ,极大的方便了对容器的操作,从此不再当 YAML 工程师。
      • 对多种下游集群容器方案的支持,自建K3S、K8S和主流云厂商容器平台均支持。

      说了这么多,选用它的最重要的原因还是满足了当前我们团队的需求。

      主要组件为 Rancher Server 和 Rancher Agent。Server 自带一个UI 页面,agent 可通过UI页面导入已存在的k8s集群的方式安装,也可以通过UI从无到有的创建的一个 k8s 集群。

      架构大致如下:

      rancher-architecture

      Rancher 文档还算比较友好,比较全面。中文文档稍微滞后,只更新到 2.5,最新版 2.6 可参考英文文档。

      Rancher 中文文档:https://docs.rancher.cn/

      Rancher 英文文档:https://rancher.com/docs/

      # 搭建

      下面我们根据官方最佳实践 (opens new window)来演示下搭建一套 Rancher 的整个过程和注意事项,希望对你有帮助。

      关于部署,官方推荐使用单独的容器机器来运行 Rancher,不要和业务集群混用。仔细想来,这样虽然浪费了部分资源,但是 Rancher本身的可用性和业务的便解耦了,不会相互影响,进一步提高了可用性。

      我们准备如下,一个2节点的 k3s 用来运行 Rancher, 一个3节点的 k8s 用来部署业务服务测试,下面开整。

      # K3S 集群安装

      Master 节点安装

      curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn \
      INSTALL_K3S_VERSION=v1.20.12+k3s1 \
      sh -s - server \
      --datastore-endpoint='mysql://root:111111@tcp(192.168.1.10:3306)/k3s'
      
      journalctl -xe -f -u k3s.service
      
      1
      2
      3
      4
      5
      6

      Agent 节点安装

      # 在master上执行获取token
      cat /var/lib/rancher/k3s/server/node-token
      K100b57ce8c11d04cdd80b198d4c9eb62631f8ea0466fcaac6ab486692318f47ecd::server:d0e7510c24553755c4b9a31cd1937d54
      
      # agent节点执行安装
      curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn \
      K3S_TOKEN='K100b57ce8c11d04cdd80b198d4c9eb62631f8ea0466fcaac6ab486692318f47ecd::server:d0e7510c24553755c4b9a31cd1937d54' \
      INSTALL_K3S_VERSION=v1.20.12+k3s1 \
      K3S_URL=https://192.168.1.142:6443 sh -
      
      1
      2
      3
      4
      5
      6
      7
      8
      9

      通过下面命令看下集群情况。

      root@k3s-ubuntu20-m1:~# kubectl get nodes -o wide
      NAME                 STATUS                     ROLES                  AGE   VERSION        INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION     CONTAINER-RUNTIME
      k3s-ubuntu20-m1      Ready,SchedulingDisabled   control-plane,master   25d   v1.20.8+k3s1   192.168.1.142   <none>        Ubuntu 20.04.3 LTS   5.4.0-89-generic   containerd://1.4.4-k3s1
      k3s-ubuntu20-node1   Ready                      <none>                 25d   v1.20.8+k3s1   192.168.1.143   <none>        Ubuntu 20.04.3 LTS   5.4.0-91-generic   containerd://1.4.4-k3s1
      
      1
      2
      3
      4

      卸载

      卸载很简单,安装后会自动部署卸载脚本:

      • Master 使用如下脚本卸载:/usr/local/bin/k3s-uninstall.sh
      • Agent 使用如下脚本卸载:/usr/local/bin/k3s-agent-uninstall.sh

      # 安装 Rancher

      我们这里使用 helm 安装,其他安装方式可参考官方文档。

      # 使用自签证书 *.pylixm.top 主要用来 ingress 域名使用
      kubectl create ns cattle-system
      kubectl \
          -n cattle-system create secret tls tls-rancher-ingress \
          --cert=./tls.crt \
          --key=./tls.key
      
      # 添加rancher helm repository
      helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
      helm repo update
      
      # 对配置修改的话,需要将仓库Char文件下载到本地
      helm pull rancher-stable/rancher --version=v2.6.2 
      
      # helm uninstall rancher -n cattle-system
      helm install rancher rancher-stable/rancher \
       --namespace cattle-system \
       --set hostname=rancher.pylixm.top \
       --set replicas=2 \
       --version 2.6.2 \
       --set ingress.tls.source=tls-rancher-ingress 
       
      # 升级
      helm upgrade rancher rancher-stable/rancher \
       --namespace cattle-system \
       --set hostname=rancher.pylixm.top \
       --set replicas=3 \
       --version 2.6.2 \
       --set ingress.tls.source=tls-rancher-ingress 
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29

      绑定 hosts ,或者在 dns 服务器配置解析:

      192.168.1.142 rancher.pylixm.top
      
      1

      浏览器访问输入 rancher.pylixm.top 可看到如下界面:

      image

      输入密码, 可继续配置。

      image

      可自定义密码和配置 UI 访问域名。

      确定后即可进入使用界面:

      image

      dashboard 界面为集群管理界面,点击集群可进入集群面板,集群中的各种资源都可以通过 UI 来操作完成。

      安装完 Rancher 之后,内部会有一个 local 的集群,默认是安装 Rancher 的集群。我们可以将生产机器导入进 UI 进行管理,也可以通过 UI 创建。

      # 总结

      Rancher 解决了现阶段多集群管理的问题,大部分操作都可以通过 UI 来实现,即使不满足我们的需求,我们可以通过下载对应的 Helm 包修改配置来自定义实现。

      本文主要阐述了我们选用 Rancher 的一些考虑点,和构建 Rancher 的一些记录,希望对大家有帮助。这段时间的 Rancher 使用,也遇到了一些问题,之后会总结下,再分享给大家,感兴趣的朋友可以关注下。

      #Kubernetes#rancher
      上次更新: 2023/03/19, 15:09:33
      最近更新
      01
      chromebox/chromebook 刷bios步骤
      03-01
      02
      redis 集群介绍
      11-28
      03
      go语法题二
      10-09
      更多文章>
      Theme by Vdoing | Copyright © 2015-2024 DeanWu | 遵循CC 4.0 BY-SA版权协议
      • 跟随系统
      • 浅色模式
      • 深色模式
      • 阅读模式