【云原生】k8s 管理平台 rancher

news2024/11/15 20:05:13

文章目录

    • 一、概述
    • 二、Rancher 架构
    • 三、安装 Rancher
      • 1)安装Helm
      • 2)安装ingress-controller
      • 3)为 Rancher 创建命名空间
      • 4)选择 SSL 配置
      • 5)安装 cert-manager
      • 6)通过 Helm 安装 Rancher
      • 2)添加 Helm Chart 仓库
      • 7)Rancher web
    • 四、Harbor 对接 Rancher
      • 1)安装 Harbor
        • 1、配置hosts
        • 2、创建stl证书
        • 3、开始安装 nfs-provisioner
        • 4、开始安装 Harbor
          • 【1】创建 Namespace
          • 【2】创建证书秘钥
          • 【3】添加 Chart 库
          • 【4】通过helm安装harbor
      • 3)安装helm-push插件
      • 4)helm 增加harbor 源
      • 5)helm-push 示例
      • 6)在Rancher关联Harbor
      • 7)通过Rancher安装、更新、卸载应用

一、概述

前面我们编排了很多chart包,需要一个管理平台来管理,所以这里介绍一款非常简洁和实用的管理平台Rancher;Rancher 是一个 Kubernetes 管理工具,Rancher 基于 Kubernetes 添加了新的功能,包括统一所有集群的身份验证和 RBAC,让系统管理员从一个位置控制全部集群的访问。

Rancher 的作用:

  • Rancher 可以创建来自 Kubernetes 托管服务提供商的集群,创建节点并安装 Kubernetes或者导入在任何地方运行的现有 Kubernetes 集群
  • Rancher 可以为集群和资源提供更精细的监控和告警,将日志发送到外部提供商,并通过应用商店(Application Catalog)直接集成 Helm。
  • Rancher 可以与外部CI/CD 系统 对接。没有的话,你也可以使用 Rancher 提供的 Fleet 自动部署和升级工作负载。
  • 可以通过Rancher 安装、卸载、升级应用。

官方文档:https://docs.ranchermanager.rancher.io/zh/
GitHub:https://github.com/rancher/rancher-docs

二、Rancher 架构

大多数 Rancher 2.x 软件均运行在 Rancher Server 上。Rancher Server 包括用于管理整个 Rancher 部署的所有软件组件。下图展示了 Rancher 2.x 的上层架构。
在这里插入图片描述

三、安装 Rancher

这里使用helm部署将Rancher 部署在k8s上,k8s环境部署可以参考我这篇文章:【云原生】无VIP稳定性和可扩展性更强的k8s高可用方案讲解与实战操作

1)安装Helm

关于Helm介绍与部署可以参考我以下几篇文章:

  • 【云原生】Helm 架构和基础语法详解
  • 【云原生】Helm 常用命令(chart 安装、升级、回滚、卸载等操作)
# 下载包
wget https://get.helm.sh/helm-v3.9.4-linux-amd64.tar.gz
# 解压压缩包
tar -xf helm-v3.9.4-linux-amd64.tar.gz
# 制作软连接
ln -s /opt/helm/linux-amd64/helm /usr/local/bin/helm
# 验证
helm version
helm help

2)安装ingress-controller

# 可以先把镜像下载,再安装
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.2.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1

wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.2.0/deploy/static/provider/cloud/deploy.yaml
# 修改镜像地址
sed -i 's@k8s.gcr.io/ingress-nginx/controller:v1.2.0\(.*\)@registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.2.0@' deploy.yaml
sed -i 's@k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1\(.*\)$@registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1@' deploy.yaml

###还需要修改两地方
#1、kind: 类型修改成DaemonSet,replicas: 注销掉,因为DaemonSet模式会每个节点运行一个pod
#2、在添加一条: hostnetwork:true
#3、把LoadBalancer修改成NodePort
#4、在--validating-webhook-key下面添加- --watch-ingress-without-class=true
#5、设置master节点可调度
kubectl taint nodes k8s-master-168-0-113 node-role.kubernetes.io/control-plane:NoSchedule-
kubectl taint nodes k8s-master2-168-0-116 node-role.kubernetes.io/control-plane:NoSchedule-

kubectl apply -f deploy.yaml

3)为 Rancher 创建命名空间

kubectl create namespace cattle-system

4)选择 SSL 配置

Rancher Management Server 默认需要 SSL/TLS 配置来保证访问的安全性。

你可以从以下三种证书来源中选择一种,用于在 Rancher Server 中终止 TLS:

  • Rancher 生成的 TLS 证书:要求你在集群中安装 cert-manager。Rancher 使用 cert-manager 签发并维护证书。Rancher 会生成自己的 CA 证书,并使用该 CA 签署证书。然后 cert-manager负责管理该证书。
  • Let’s Encrypt:Let’s Encrypt 选项也需要使用 cert-manager。但是,在这种情况下,cert-manager 与 Let’s Encrypt 的特殊颁发者相结合,该颁发者执行获取 Let’s Encrypt 颁发的证书所需的所有操作(包括请求和验证)。此配置使用 HTTP 验证(HTTP-01),因此负载均衡器必须具有可以从互联网访问的公共 DNS 记录。
  • 你已有的证书:使用已有的 CA 颁发的公有或私有证书。Rancher 将使用该证书来保护 WebSocket 和 HTTPS 流量。在这种情况下,你必须上传名称分别为 tls.crt 和 tls.key的 PEM 格式的证书以及相关的密钥。如果你使用私有 CA,则还必须上传该 CA 证书。这是由于你的节点可能不信任此私有 CA。Rancher 将获取该 CA 证书,并从中生成一个校验和,各种 Rancher 组件将使用该校验和来验证其与 Rancher 的连接。

5)安装 cert-manager

# 下载
wget https://github.com/cert-manager/cert-manager/releases/download/v1.7.1/cert-manager.crds.yaml

# 安装
kubectl apply -f cert-manager.crds.yaml

# 查看
kubectl get pods --namespace cert-manager

在这里插入图片描述

6)通过 Helm 安装 Rancher

helm install rancher rancher-stable/rancher \
  --namespace cattle-system \
  --set hostname=rancher.my.org \
  --set bootstrapPassword=admin

在这里插入图片描述
NOTES

NAME: rancher
LAST DEPLOYED: Thu Dec  1 23:45:23 2022
NAMESPACE: cattle-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Rancher Server has been installed.

NOTE: Rancher may take several minutes to fully initialize. Please standby while Certificates are being issued, Containers are started and the Ingress rule comes up.

Check out our docs at https://rancher.com/docs/

If you provided your own bootstrap password during installation, browse to https://rancher.my.org to get started.

If this is the first time you installed Rancher, get started by running this command and clicking the URL it generates:

echo https://rancher.my.org/dashboard/?setup=$(kubectl get secret --namespace cattle-system bootstrap-secret -o go-template=‘{{.data.bootstrapPassword|base64decode}}’)


To get just the bootstrap password on its own, run:

kubectl get secret --namespace cattle-system bootstrap-secret -o go-template=‘{{.data.bootstrapPassword|base64decode}}{{ “\n” }}’



Happy Containering!

等待 Rancher 运行:

kubectl -n cattle-system rollout status deploy/rancher
Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available...
deployment "rancher" successfully rolled out

kubectl get pods  -n cattle-system -owide

在这里插入图片描述

【温馨提示】有些版本是需要指定ingressClassName,这里我安装的这个版本就需要,要不然访问web报404,而且还没有ADDRESS

kubectl edit ingress rancher -n cattle-system

在这里插入图片描述

2)添加 Helm Chart 仓库

### 1. 添加 Helm Chart 仓库
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable

7)Rancher web

如果上面的域名没有解析,可以加hosts

192.168.182.110 rancher.my.org

获取web地址

echo https://rancher.my.org/dashboard/?setup=$(kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}')

# 获取登录密码
kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}{{ "\n" }}'

web地址:https://rancher.my.org
在这里插入图片描述
如果安装在k8s上会自动获取k8s信息,当然也可以当入已其它已存在的k8s集群。
在这里插入图片描述

四、Harbor 对接 Rancher

1)安装 Harbor

1、配置hosts

192.168.192.110 myharbor.com

2、创建stl证书

# 生成 CA 证书私钥
openssl genrsa -out ca.key 4096
# 生成 CA 证书
openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Guangdong/L=Shenzhen/O=harbor/OU=harbor/CN=myharbor.com" \
 -key ca.key \
 -out ca.crt
# 创建域名证书,生成私钥
openssl genrsa -out myharbor.com.key 4096
# 生成证书签名请求 CSR
openssl req -sha512 -new \
    -subj "/C=CN/ST=Guangdong/L=Shenzhen/O=harbor/OU=harbor/CN=myharbor.com" \
    -key myharbor.com.key \
    -out myharbor.com.csr
# 生成 x509 v3 扩展
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=myharbor.com
DNS.2=*.myharbor.com
DNS.3=hostname
EOF
#创建 Harbor 访问证书
openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in myharbor.com.csr \
    -out myharbor.com.crt

3、开始安装 nfs-provisioner

# 添加chart源
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/

# 开始安装
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
  --namespace=nfs-provisioner \
  --create-namespace \
  --set image.repository=willdockerhub/nfs-subdir-external-provisioner \
  --set image.tag=v4.0.2 \
  --set replicaCount=2 \
  --set storageClass.name=nfs-client \
  --set storageClass.defaultClass=true \
  --set nfs.server=192.168.182.110 \
  --set nfs.path=/opt/nfsdata

查看

kubectl get pods,deploy,sc -n nfs-provisioner

在这里插入图片描述

4、开始安装 Harbor

【1】创建 Namespace
kubectl create ns harbor
【2】创建证书秘钥
kubectl create secret tls myharbor.com --key myharbor.com.key --cert myharbor.com.crt -n harbor
kubectl get secret myharbor.com -n harbor
【3】添加 Chart 库
helm repo add harbor https://helm.goharbor.io
【4】通过helm安装harbor
helm install myharbor --namespace harbor harbor/harbor \
  --set expose.ingress.hosts.core=myharbor.com \
  --set expose.ingress.hosts.notary=notary.myharbor.com \
  --set-string expose.ingress.annotations.'nginx\.org/client-max-body-size'="1024m" \
  --set expose.tls.secretName=myharbor.com \
  --set persistence.persistentVolumeClaim.registry.storageClass=nfs-client \
  --set persistence.persistentVolumeClaim.jobservice.storageClass=nfs-client \
  --set persistence.persistentVolumeClaim.database.storageClass=nfs-client \
  --set persistence.persistentVolumeClaim.redis.storageClass=nfs-client \
  --set persistence.persistentVolumeClaim.trivy.storageClass=nfs-client \
  --set persistence.persistentVolumeClaim.chartmuseum.storageClass=nfs-client \
  --set persistence.enabled=true \
  --set externalURL=https://myharbor.com \
  --set harborAdminPassword=Harbor12345

这里稍等一段时间在查看资源状态

kubectl get ingress,svc,pods,pvc -n harbor

在这里插入图片描述
这里ingress也是没有Address,而且访问也是404,还是跟上面一样的处理,在ingress中添加如下:

ingressClassName: nginx

修改

kubectl edit ingress myharbor-ingress -n harbor
kubectl edit ingress myharbor-ingress-notary -n harbor

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3)安装helm-push插件

GitHub地址:https://github.com/chartmuseum/helm-push

mkdir -p /root/.local/share/helm/plugins/helm-push

wget https://github.com/chartmuseum/helm-push/releases/download/v0.10.3/helm-push_0.10.3_linux_amd64.tar.gz

tar zxvf helm-push_0.10.3_linux_amd64.tar.gz -C /root/.local/share/helm/plugins/helm-push

# 查看插件
helm plugin list
helm cm-push --help

在这里插入图片描述
在这里插入图片描述

4)helm 增加harbor 源

# chartrepo,固定参数,bigdata自定义项目
helm repo add local-harbor --username=admin --password=Harbor12345 https://myharbor.com/chartrepo/bigdata/ --ca-file /opt/k8s/helm-push/ca.crt

证书下载
在这里插入图片描述

5)helm-push 示例

helm repo add my-repo https://charts.bitnami.com/bitnami
helm pull my-repo/redis
tar -xf redis-17.3.13.tgz
helm install my-redis ./redis

推送harbor

# 推送,接【目录】
helm cm-push ./redis local-harbor --ca-file /opt/k8s/helm-push/ca.crt

# 推送,接【压缩包】
helm cm-push redis-17.3.13.tgz local-harbor --ca-file /opt/k8s/helm-push/ca.crt

# 推送,指定版本,--version
helm cm-push ./redis --version="17.3.13" local-harbor --ca-file /opt/k8s/helm-push/ca.crt

# 强制推送,--force
helm cm-push --force redis-17.3.13.tgz local-harbor

在这里插入图片描述

6)在Rancher关联Harbor

在这里插入图片描述
因为我这里证书是不可信的,所以是异常的,所以这里添加一个bitnami测试验证。
在这里插入图片描述

7)通过Rancher安装、更新、卸载应用

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
安装、更新,卸载非常简单,这里就不过多的讲解了,有任何疑问欢迎给我留言,k8s 管理平台 rancher 简单的介绍和简单使用就先到这里了,后续会持续更新【云原生+大数据】相关的文章,请小伙伴耐心等待~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/56730.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电子签名-为你的数据签字画押

博主&#xff1a;爱码叔 个人博客站点&#xff1a; icodebook 公众号&#xff1a;漫话软件设计 专注于软件设计与架构、技术管理。擅长用通俗易懂的语言讲解技术。对技术管理工作有自己的一定见解。文章会第一时间首发在个站上&#xff0c;欢迎大家关注访问&#xff01; 更多密…

[附源码]Python计算机毕业设计SSM绝味鸭脖连锁店信息系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

2023年天津天狮学院专升本市场营销专业《管理学》考试大纲

2023天津天狮学院高职升本科市场营销专业入学考试《管理学》考试大纲一、考试性质 《管理学》专业课程考试是天津天狮学院市场营销专业高职升本入学考试的必考科目之一&#xff0c;其性质是考核学生是否达到了升入本科继续学习的要求而进行的选拔性考试。《管理学》考试大纲的编…

xcode登陆appleid报错:连接appleid服务器时出错

问题现象&#xff1a; xcode登陆appleid时一直报错&#xff1a;连接appleid服务器时出错 更换连接的wifi也一样报错&#xff0c;怀疑是因为Charles代理导致 解决办法&#xff1a; 网络连接 → 高级 → 代理 → 去掉 勾选【网页代理(HTTP)】

自动化之路:telnet的自动登录脚本

前言 为了测试telnet&#xff0c;首先&#xff0c;要保证系统已经安装了telnet&#xff0c;并且还得有一个端口能用,就是1-65536那个PORT。 一 搭建telenet环境并测试 1 首先查看telnet运行状态&#xff1a; lkmaoubuntu:~$ netstat -a | grep telnet lkmaoubuntu:~$ 输出为…

Linux 文本处理命令 - chmod

chmod命令&#xff1a;修改文件或目录的权限 chmod命令使用数字修改文件权限 Linux 系统中&#xff0c;文件的基本权限由 9 个字符组成&#xff0c;以 rwxrw-r-x 为例&#xff0c;我们可以使用数字来代表各个权限&#xff0c;各个权限与数字的对应关系如下&#xff1a; r --…

【c/c++算法】曼哈顿算法简单运用

✨曼哈顿算法&#x1f996;1.曼哈顿距离算法&#xff1a;&#x1f422;2.例题&#xff1a;打印菱形曼哈顿算法讲解&#xff1a;&#x1f995;3.曼哈顿算法例题解释&#xff1a;&#x1f996;1.曼哈顿距离算法&#xff1a; 我们很早以前就学过了两点间距离公式&#xff0c;欧式…

vue纯手写思维导图,拒绝插件(代码cv即用)

vue纯手写思维导图&#xff0c;拒绝插件(代码cv即用) 已完成功能点&#xff1a;折叠、放大、缩小、移动 后续增加功能点&#xff1a;添加、删除 先看结果&#xff1a; 有这么个需求&#xff0c;按照层级关系&#xff0c;把表格放在思维导图上&#xff0c;我第一时间想到用插件…

【Matplotlib绘制图像大全】(十六):Matplotlib绘制虚线折线图

前言 大家好,我是阿光。 本专栏整理了《Matplotlib绘制图像大全》,内包含了各种常见的绘图方法,以及Matplotlib各种内置函数的使用方法,帮助我们快速便捷的绘制出数据图像。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmMatp…

三翼鸟,用两年开启下一个十年

这段时间以来&#xff0c;我和亲朋好友的居家生活时间都增加了&#xff0c;以前一直存在但被忽视的不便体验&#xff0c;也开始凸显出来。比如在家就餐频次高了&#xff0c;厨房小白会为不会做饭而苦恼&#xff1b;智能设备的很多功能&#xff0c;依然需要手动操作……这些琐碎…

【大数据入门核心技术-Zookeeper】(二)ZAB协议介绍

目录 一、什么是Zab协议 二、Zab协议的4个阶段 1、选举阶段(Leader Election) 2、发现阶段(Discovery) 3、同步阶段(Synchronization) 4、广播阶段(Broadcase) 一、什么是Zab协议 ZAB协议&#xff0c;全称 Zookeeper Atomic Broadcast&#xff08;Zookeeper 原子广播协议…

Keras文本和序列(三)

本篇涉及的内容 如何对文本分词 什么是词嵌入&#xff0c;如何使用词嵌入 什么是循环网络&#xff0c;如何使用循环网络 如何堆叠 RNN 层和使用双向 RNN&#xff0c;以构建更加强大的序列处理模型 如何使用一维卷积神经网络来处理序列 如何结合一维卷积神经网络和 RNN 来处…

焱融全闪系列科普| 为什么 SSD 需要 NVMe?

NVMe 的由来 目前机械硬盘大多数使用 SATA (Serial ATA Advanced Host Controller Interface) 接口&#xff0c;接口协议为 AHCI&#xff0c;是 Intel 联合多家公司研发的系统接口标准。AHCI 最大队列深度为 32&#xff0c;即主机最多可以发 32 条命令给 HDD 或 SSD 执行&…

【观察】软通动力:以数智化技术创新,赋能每一个降碳场景

毫无疑问&#xff0c;“碳达峰、碳中和”已成为当今世界最为紧迫的使命&#xff0c;目前全球已有110多个国家相继承诺“碳中和”目标。同样&#xff0c;2020年9月&#xff0c;中国也提出了到2030年实现“碳达峰”&#xff0c;并努力争取2060年前实现“碳中和”的“双碳”目标&a…

六、组件的生命周期与组件间之间的数据共享

一、组件的生命周期 1.1、生命周期 & 生命周期函数 生命周期&#xff08;Life Cycle&#xff09;是指一个组件从创建→远行→销毁的整个阶段&#xff0c;强调的是一个时间段。 生命周期函数&#xff1a;是由vue框架提供的内置函数&#xff0c;会伴随着组件的生命周期&…

阿里云安装mysql、nginx、redis

目录 安装mysql 安装nginx ​编辑安装redis 先看一下系统基本信息 安装mysql rpm -qa | grep mariadb 卸载mariadb rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64 wget -i http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm yum -y install my…

【使用 BERT 的问答系统】第 7 章 :BERT 模型的未来

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

(八) 共享模型之管程【活跃性】

一、多把锁&#xff08;P114&#xff09; 一间大屋子有两个功能&#xff1a;睡觉、学习&#xff0c;互不相干。 现在小南要学习&#xff0c;小女要睡觉&#xff0c;但如果只用一间屋子&#xff08;一个对象锁&#xff09;的话&#xff0c;那么并发度很低 解决方法是准备多个房间…

项目复习:基于TCP的文件服务器

ser.c(服务器): #include "./fun.h"int main(int argc,const char * argv[]) {//1.判断入参if(argc!3){fprintf(stderr,"入参为空&#xff0c;请检查\n");return -1;}//端口号转整型int portatoi(argv[2]);//变量声明struct sockaddr_in sin;int sinLensi…

axios.defaults.baseURL的三种配置方法

axios.defaults.baseURL的三种配置方法目录概述需求&#xff1a;设计思路实现思路分析1.少2.2.动态获取请求地址3.3.采用配置文件参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,m…