不翻墙,基于Rancher极速启动Kubernetes,配置SSO登录,在线环境开放学习体验

本文提供Rancher和Kuberentes快速安装的步骤和国内镜像仓库配置,并介绍Rancher单机原理,配置Keycloak提供SSO统一登录,并提供在线环境开放学习体验。

主要包含以下内容:

  1. 基于藏云阁镜像仓库快速部署Rancher和K8s集群
  2. Rancher 单机安装的原理
  3. 配置Keycloak提供SSO统一登录
  4. 免费开放的在线Rancher体验服务

Rancher是一个开源的企业级Kubernetes容器管理平台,它旨在简化容器的运营,满足企业在多云、混合云环境下的Kubernetes集群管理、安全管控、DevOps与应用交付等需求。

特别是对于中小企业,Rancher可以快速、轻松地部署Kubernetes集群,并管理容器应用,实现低成本高质量的云原生化业务基础设施建设。

基于市场报告显示,在云原生领域,即使在国产化背景下,Rancher任然是非常流行的容器云管理平台。

公众号发送【2024云报告】,获取完整的 《2024年中国基础云服务行业发展洞察报告》PDF 文档

1. 基于藏云阁镜像仓库快速部署Rancher 和 K8s 集群

国内用户使用 Rancher 最大痛点就是 Docker Hub 镜像仓库无法访问,无法拉取镜像。

官方在每个进行版本发布时会提供一个镜像列表,如 v2.12.3/rancher-images.txt 有 553 个镜像,并且提供提供对应的镜像收集导入导出的脚本工具,但这在实际使用时还是会带来很大的不便。

藏云阁镜像仓库同步了 v2.12.3 版本所有的镜像,其他版本也在同步中。

在进行安装部署时,通过添加 k8s-registries.yaml 配置来配置镜像仓库,并在容器启动时添加几个REGISTRY的环境变量,都指向 harbor.cncfstack.com 即可。

其中 k8s-registries.yaml 是部署 Kubernetes 集群时使用的镜像仓库,内容如下:

yaml 复制代码
# cat config/k8s-registries.yaml
mirrors:
  docker.io:
    endpoint:
      - "https://harbor.cncfstack.com"

官方提供的 docker run 的方式启动,我习惯使用 docker compose 来管理单机的容器,这样可以方便的管理相关配置。

启动的 docker-compose.yaml 文件如下:

yaml 复制代码
services:
  rancher:
    image: harbor.cncfstack.com/rancher/rancher:v2.12.3
    container_name: rancher
    privileged: true
    environment:
      - CATTLE_SYSTEM_DEFAULT_REGISTRY=harbor.cncfstack.com
      - CATTLE_SYSTEM_CATALOG=bundled
      # 设置rancher管理平台页面中注册中心配置
      - CATTLE_BASE_REGISTRY=harbor.cncfstack.com
      - CATTLE_CLUSTER_REGISTRY=harbor.cncfstack.com
      - CATTLE_BOOTSTRAP_PASSWORD=PASSWORD
      # 第一次安装成功时让确认的的访问地址
      - CATTLE_SERVER_URL=https://rancher.cncfstack.com
      # 禁用虚拟化
      - CATTLE_FEATURES=harvester=false
      - CATTLE_DEV_MODE="yes"
    ports:
      - "80:80"
      - "443:443"
    restart: always
    command: '--no-cacerts'
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - ./config/k8s-registries.yaml:/etc/rancher/k3s/registries.yaml
      - /data/rancher/data:/var/lib/rancher
      - /data/rancher/logs:/var/log/pods
      - /YOUR/PATH/ssl/cncfstack.com_ecc/fullchain.cer:/etc/rancher/ssl/cert.pem
      - /YOUR/PATH/ssl/cncfstack.com_ecc/cncfstack.com.key:/etc/rancher/ssl/key.pem

在使用这个 docker-compose.yaml 时除了需要先创建一个 /data/rancher 目录外,还需要修改以下配置项:

  • CATTLE_BOOTSTRAP_PASSWORD:这个是部署时默认的admin登录密码,不配置时会自动生成一个
  • YOUR/PATH:是存放证书的目录,需要替换为你的实际证书

关于免费证书申请可以参考文章:永久免费的HTTPS/TLS通配符域名合法证书申请很简单,不要再自签证书啦[最佳实践]

文件启动容器后,访问 https://rancher.cncfstack.com 根据提示进行相关配置。登录成功后会看到如下页面:

在环境中有一个默认的Kubernetes集群(基于K3s)可以满足基本学习使用,如果需要创建新的集群,可以点击【创建】按钮,添加新的集群。

2. Rancher 单机安装的原理

在上面步骤中使用 Docker 运行了单机的 Rancher 和 Kubernetes 集群,这在开发测试环境或者个人电脑上使用非常方便,但是生产环境强烈建议使用 HelmChart 的方式部署高可用的 Rancher 集群。

在宿主机上 docker ps 实际只能看到一个容器

bash 复制代码
# docker ps
CONTAINER ID   IMAGE                                                   COMMAND                  CREATED        STATUS        PORTS                                                                          NAMES
4f010bc232a1   harbor.cncfstack.com/rancher/rancher:v2.12.3            "entrypoint.sh --no-..."   6 days ago     Up 6 days     0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp   rancher

只有1个容器是怎么运行一套完整的 Kuberentes 集群的呢?这就需要用到一种技术叫 DIND(docker-in-docker),可以参考这篇文章《容器嵌套,降本增效(Docker-in-Docker 三类解决方案)

我们可以通过 Linux 命令 ps auxf 命令查看系统进程树结构,如下图

从图中可以看出最外层 moby 进程就是 docker ps 看到的 rancher 容器。

在 rancher 容器内运行了 tini 来作为主进程进行管理,然后运行了 k3s 来启动 Kubernetes 集群,k3s 内启动了etcd、kube-apiserver、kube-controller-manager、kube-scheduler等组件,所以在进程中只能看到一个 k3s server进程。然后启动了 CoreDNS等模块来运行完整的 Kubernetes 集群。

在集群中使用的是 Containerd 运行时,在 rancher 容器无法使用 docker 命令,但可以使用 ctr 命令来管理容器。

比如查看容器列表

bash 复制代码
root@iv-ydsh9dfsdadsht8f2:~# docker exec -it rancher /bin/bash
bash-4.4# ctr container ls
CONTAINER                                                           IMAGE                                                                   RUNTIME
01972be55ba87e0fd4752c3bf7a36f6badfff1f215ed8b743b8d516d575fc93f    harbor.cncfstack.com/rancher/fleet:v0.13.4                              io.containerd.runc.v2
02608d50bd8aa3a2c6c0bccca5f8aa2731a47dc27826e4613de963c472a2e1d6    harbor.cncfstack.com/rancher/fleet:v0.13.4                              io.containerd.runc.v2
07b75ae86f69d2c7c142ed8dd1e843056422d54ac44b835f241149ac2664c321    docker.io/rancher/mirrored-pause:3.6                                    io.containerd.runc.v2
18e0efc634bff32f4a433106e32f0bd02b5b4658541f44b09e07c9a75c03def5    harbor.cncfstack.com/rancher/fleet:v0.13.4                              io.containerd.runc.v2
3578de9e0f96e88e6424f27ccde19a0c1959516d3b1ca92aa352a6f183c08133    harbor.cncfstack.com/rancher/rancher-agent:v2.12.3                      io.containerd.runc.v2
3ffd9f6f1d16e5340d6ccdc1b596e82278b550ab6405152dcdc12b991e32ac02    docker.io/rancher/mirrored-pause:3.6                                    io.containerd.runc.v2
4d6837a603d5a1f72910183bed354523960a7100d21230d0f93bb9c48838aea7    harbor.cncfstack.com/rancher/fleet:v0.13.4                              io.containerd.runc.v2
5c3825958f248e35f5e50d8b1f1fccaa2fc14730fddf971cd23bcc90fe8c63b8    docker.io/rancher/mirrored-pause:3.6                                    io.containerd.runc.v2
60a137e496cff184e0d554138a9db1cc407d5833cc60ce96ea9f8f32a5d2aa6f    harbor.cncfstack.com/rancher/rancher-agent:v2.12.3                      io.containerd.runc.v2
7b2bac750c92fd94055b0630a39dbd820bafac8286be1a3b15bc04094a758aad    harbor.cncfstack.com/rancher/rancher-agent:v2.12.3                      io.containerd.runc.v2
7e2f4335906641bdb6b902af75106dd502b1784d4624543780c4b048a02c96e8    harbor.cncfstack.com/rancher/fleet-agent:v0.13.4                        io.containerd.runc.v2
93635facef30f4bc6854680076420a6f15661f1bf44e8c42389c92ba22634d77    harbor.cncfstack.com/rancher/fleet:v0.13.4                              io.containerd.runc.v2
a311aa83de6f0f03f7f99a8a0a9020e56f728358ebcba6a3c1f235ebd7493d7c    harbor.cncfstack.com/rancher/mirrored-cluster-api-controller:v1.10.2    io.containerd.runc.v2
a53166e00d5936043c771b2282718ab017e3d6b76096de58c1836fc89cee3526    harbor.cncfstack.com/rancher/remotedialer-proxy:v0.5.0                  io.containerd.runc.v2
ad3e171cc1affbf29d29a3dc2d851b6c2914fde8a98fa257cebfe4b0e7d50f5f    docker.io/rancher/mirrored-pause:3.6                                    io.containerd.runc.v2
b2b8d9bccbb06a6f397e11c185e2a46efcb9936f2247b267adf74ae81969225a    harbor.cncfstack.com/rancher/system-upgrade-controller:v0.16.3          io.containerd.runc.v2
c4d42ce2956edf9b4c9bb299183999ffc150075bbb33c2177c0df630b3c8cabb    docker.io/rancher/mirrored-pause:3.6                                    io.containerd.runc.v2
ce008011c92d12b8fdd6853b54cc4d35da0d3fc41257542a932e1b169168fc16    docker.io/rancher/mirrored-pause:3.6                                    io.containerd.runc.v2
d7017e579bdbd3139cbcb00287ee7393290fe1e64709de3d86e6156e025563e3    docker.io/rancher/mirrored-pause:3.6                                    io.containerd.runc.v2
db8d723d8b545d5eee11f71b7cd67ebdf8b51039f09800c1570281ff21d5e8f2    docker.io/rancher/mirrored-pause:3.6                                    io.containerd.runc.v2
ea4d1d59374fb8b6bcf005043bb60a5ac346325850d3221a1f5a8dddfe3f3680    docker.io/rancher/mirrored-pause:3.6                                    io.containerd.runc.v2
ed70a01fd7efc92ba9476dee0385486b93d5353dc16a8aee7bc82d42bfb00414    docker.io/rancher/mirrored-pause:3.6                                    io.containerd.runc.v2
eea4dca040afb1cd67050fcbbeffd02c525a123ad7aae50c41dfa2df61b74331    harbor.cncfstack.com/rancher/rancher-webhook:v0.8.3                     io.containerd.runc.v2
fbda39d7f6932adf64c827b8518be1feb03cadab4928795cd199621629008c89    docker.io/rancher/mirrored-pause:3.6                                    io.containerd.runc.v2
fec0d4d2a96967804303d3d072d654a2c57498ed3810f8875c8297555789a014    docker.io/rancher/mirrored-coredns-coredns:1.12.1                       io.containerd.runc.v2
ffa46d8782fc47d0f35986d500803de58beb45f6c230a77c7cdc841c5c58f8aa    docker.io/rancher/mirrored-pause:3.6                                    io.containerd.runc.v2

3. 配置Keycloak提供SSO统一登录

SSO登录可以统一管理用户的账号信息,给 Rancher 配置 Keycloak 登录主要分为以下几步

  • 3.1. 在 Keycloak 中创建一个 Rancher 客户端
  • 3.2. 在 Rancher 中配置 Keycloak
  • 3.3. 在 Keycloak 配置 Rancher 回调地址

3.1. 在 Keycloak 中创建一个 Rancher 客户端

在 Keycloak 中新建一个客户端,如定义客户端ID为 rancher。 对于有效的重定向 URI 可以直接根据域名来拼接填写,也可以在 Rancher 中配置配置过程中看到这个回调地址,后面步骤回再次说明。

除了基本信息,还需要开启"功能配置"中的客户端认证。

创建客户端后,会生成一个 Secret,请保存好。

3.2. 在 Rancher 中配置 Keycloak

在 Rancher 中找到 用户-> 认证-> Keycloak(OIDC)

在详细配置页面主要填写如下配置

  • 客户端ID:与 Keyclaok 中的ID一致 (如rancher)
  • 客户端Secret:在 Keycloak 的客户端的凭证中查看
  • 端点URL:是 Keycloak的默认地址(如https://keycloak.cncfstack.com
  • Realm: 是 Keycloak 中管理的多租户,默认为 master,我这里为 cs

然后保存配置。

3.3. 在 Keycloak 配置 Rancher 回调地址

在 Rancher 中填写配置时或者在创建成功后回提示回调地址,如 https://rancher.cncfstack.com/verify-auth

将这个地址填写到 Keycloak 的客户端配置中,即 步骤 3.1 中填写的回调地址。

然后就可以基于 SSO 登录进行登录。

在线体验

藏云阁官方提供了在线的 Rancher 体验服务,地址为 https://rancher.cncfstack.com

该环境使用SSO统一登录,你可以用于学习 Rancher 和 Kuberentes 使用。

注意:由于环境资源有限,环境不定期会重置,将会清空所有数据,请勿保存重要数据。

相关推荐
xian_wwq1 天前
【学习笔记】攻击链贯穿端边云!边缘网络访问三大核心风险预警
笔记·学习·安全·边缘计算
深蓝海拓1 天前
PySide6从0开始学习的笔记(一) 学前班
笔记·学习
EveryPossible1 天前
优先级调整练习1
大数据·学习
逐辰十七1 天前
FreeRTOS 中断管理 (Chapter 17) 核心学习大纲
学习
智行众维1 天前
【用户心得】SCANeR™Studio学习笔记(六):人因工程Pack——一站式搞定驾驶模拟的多模态数据同步
笔记·学习·自动驾驶·汽车·仿真·scaner·人因工程
kissgoodbye20121 天前
cadence学习之基础知识
网络·学习
xian_wwq1 天前
【学习笔记】基于人工智能的火电机组全局性能一体化优化研究
人工智能·笔记·学习·火电
阿蒙Amon1 天前
JavaScript学习笔记:6.表达式和运算符
javascript·笔记·学习
potato_15541 天前
Windows11系统安装Isaac Sim和Isaac Lab记录
人工智能·学习·isaac sim·isaac lab
我命由我123451 天前
python-dotenv - python-dotenv 快速上手
服务器·开发语言·数据库·后端·python·学习·学习方法