4. 云原生之kubesphere基础服务搭建

news2024/12/28 2:43:20

文章目录

  • 安装kubesphere插件
  • 服务暴露
    • NodePort方式
    • LoadBalancer方式
      • 安装 OpenELB
      • 部署eip资源
      • 配置网关
        • 启动网关
        • 创建路由
        • 测试网关路由
        • ingress高级功能
        • 在服务中配置LoadBalancer
  • 基础设施部署
    • 服务部署建议
      • helm仓库
      • 添加helm仓库
    • 运维相关
      • 部署gitlab
      • 部署nexus3
      • 部署harbor
    • 研发相关

安装kubesphere插件

官网参考:概述

  1. 资源定义->搜索clusterconfiguration

image.png

  1. 点击进入编辑ks-installer

image.png

  1. 编辑内容如下

若是担心内容存在出入可使用内容对比工具在线文本比对工具 | 菜鸟工具
替换内容确定后会自动安装相关插件

apiVersion: installer.kubesphere.io/v1alpha1
kind: ClusterConfiguration
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: >
      {"apiVersion":"installer.kubesphere.io/v1alpha1","kind":"ClusterConfiguration","metadata":{"annotations":{},"labels":{"version":"v3.3.2"},"name":"ks-installer","namespace":"kubesphere-system"},"spec":{"alerting":{"enabled":false},"auditing":{"enabled":false},"authentication":{"jwtSecret":""},"common":{"core":{"console":{"enableMultiLogin":true,"port":30880,"type":"NodePort"}},"es":{"basicAuth":{"enabled":false,"password":"","username":""},"elkPrefix":"logstash","externalElasticsearchHost":"","externalElasticsearchPort":"","logMaxAge":7},"gpu":{"kinds":[{"default":true,"resourceName":"nvidia.com/gpu","resourceType":"GPU"}]},"minio":{"volumeSize":"20Gi"},"monitoring":{"GPUMonitoring":{"enabled":false},"endpoint":"http://prometheus-operated.kubesphere-monitoring-system.svc:9090"},"openldap":{"enabled":false,"volumeSize":"2Gi"},"redis":{"enabled":false,"volumeSize":"2Gi"}},"devops":{"enabled":false,"jenkinsMemoryLim":"8Gi","jenkinsMemoryReq":"4Gi","jenkinsVolumeSize":"8Gi"},"edgeruntime":{"enabled":false,"kubeedge":{"cloudCore":{"cloudHub":{"advertiseAddress":[""]},"service":{"cloudhubHttpsNodePort":"30002","cloudhubNodePort":"30000","cloudhubQuicNodePort":"30001","cloudstreamNodePort":"30003","tunnelNodePort":"30004"}},"enabled":false,"iptables-manager":{"enabled":true,"mode":"external"}}},"etcd":{"endpointIps":"192.168.31.21,192.168.31.22,192.168.31.23","monitoring":false,"port":2379,"tlsEnable":true},"events":{"enabled":false},"logging":{"enabled":false,"logsidecar":{"enabled":true,"replicas":2}},"metrics_server":{"enabled":false},"monitoring":{"gpu":{"nvidia_dcgm_exporter":{"enabled":false}},"node_exporter":{"port":9100},"storageClass":""},"multicluster":{"clusterRole":"none"},"network":{"ippool":{"type":"none"},"networkpolicy":{"enabled":false},"topology":{"type":"none"}},"openpitrix":{"store":{"enabled":false}},"persistence":{"storageClass":""},"servicemesh":{"enabled":false,"istio":{"components":{"cni":{"enabled":false},"ingressGateways":[{"enabled":false,"name":"istio-ingressgateway"}]}}},"terminal":{"timeout":600},"zone":"cn"}}
  labels:
    version: v3.3.2
  name: ks-installer
  namespace: kubesphere-system
spec:
  alerting:
    enabled: true
  auditing:
    enabled: true
  authentication:
    jwtSecret: ''
  common:
    core:
      console:
        enableMultiLogin: true
        port: 30880
        type: NodePort
    es:
      basicAuth:
        enabled: false
        password: ''
        username: ''
      elkPrefix: logstash
      externalElasticsearchHost: ''
      externalElasticsearchPort: ''
      logMaxAge: 7
    gpu:
      kinds:
        - default: true
          resourceName: nvidia.com/gpu
          resourceType: GPU
    minio:
      volumeSize: 20Gi
    monitoring:
      GPUMonitoring:
        enabled: false
      endpoint: 'http://prometheus-operated.kubesphere-monitoring-system.svc:9090'
    openldap:
      enabled: false
      volumeSize: 2Gi
    redis:
      enabled: false
      volumeSize: 2Gi
  devops:
    enabled: true
    jenkinsMemoryLim: 8Gi
    jenkinsMemoryReq: 2Gi
    jenkinsVolumeSize: 8Gi
  edgeruntime:
    enabled: false
    kubeedge:
      cloudCore:
        cloudHub:
          advertiseAddress:
            - ''
        service:
          cloudhubHttpsNodePort: '30002'
          cloudhubNodePort: '30000'
          cloudhubQuicNodePort: '30001'
          cloudstreamNodePort: '30003'
          tunnelNodePort: '30004'
      enabled: false
      iptables-manager:
        enabled: true
        mode: external
  etcd:
    endpointIps: '192.168.31.21,192.168.31.22,192.168.31.23'
    monitoring: false
    port: 2379
    tlsEnable: true
  events:
    enabled: true
  logging:
    enabled: true
    logsidecar:
      enabled: true
      replicas: 2
  metrics_server:
    enabled: true
  monitoring:
    gpu:
      nvidia_dcgm_exporter:
        enabled: false
    node_exporter:
      port: 9100
    storageClass: ''
  multicluster:
    clusterRole: none
  network:
    ippool:
      type: calico
    networkpolicy:
      enabled: true
    topology:
      type: weave-scope
  openpitrix:
    store:
      enabled: true
  persistence:
    storageClass: ''
  servicemesh:
    enabled: false
    istio:
      components:
        cni:
          enabled: false
        ingressGateways:
          - enabled: false
            name: istio-ingressgateway
  terminal:
    timeout: 600
  zone: cn
  1. 查看安装情况

image.png

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f

服务暴露

NodePort方式

image.png
点击编辑外部访问,选择NodePort,随机分配暴露端口
image.png

LoadBalancer方式

安装 OpenELB

进入应用商店搜索OpenELB进行安装,安装0.2.6版本,无需修改配置直接安装

0.5.0版本会出现连接失败问题,导致容器不同重启

image.png
image.png

部署eip资源

  1. 编辑layer2-eip.yaml
apiVersion: network.kubesphere.io/v1alpha2
kind: Eip
metadata:
  name: layer2-eip
spec:
  address: 192.168.31.11-192.168.31.13
  interface: ens192
  protocol: layer2
  1. 部署eip
kubectl apply -f layer2-eip.yaml
  1. 查看eip
[root@ksmaster21 yaml]# kubectl get eip
NAME                CIDR                          USAGE   TOTAL
layer2-eip          192.168.31.11-192.168.31.13   3       3

配置网关

  1. 在应用商店搜索nginx部署用于测试
启动网关

image.png
image.png

lb.kubesphere.io/v1alpha1:openelb
protocol.openelb.kubesphere.io/v1alpha1:layer2
eip.openelb.kubesphere.io/v1alpha2:layer2-eip

创建路由

本质是ingress-nginx,适合http类型的请求进行转发

image.png
image.pngimage.png
image.png

当上图网关地址出现信息则表格成功

测试网关路由
  1. 在ikuai中配置端口映射
  2. 使用域名:端口访问

image.png

ingress高级功能
  1. 高级功能通过注释实现,参考:ingress-nginx注解配置

image.png

在服务中配置LoadBalancer

mysql、redis需通过tcp连接,需在服务中配置外部访问
image.png
image.png

lb.kubesphere.io/v1alpha1:openelb
protocol.openelb.kubesphere.io/v1alpha1:layer2
eip.openelb.kubesphere.io/v1alpha2:layer2-eip

基础设施部署

服务部署建议

  1. 应用商店(添加三方应用商店)
  2. helm部署
  3. 编写k8s资源部署【资源多概念多】
  4. docker-compose转化为k8s资源部署
  5. docker-compose转化为k8s资源,在转化helm【定制化】
  6. 原生docker部署
  7. 自制应用

helm仓库

  1. https://kubernetes.github.io/ingress-nginx:
    这是 Ingress Nginx 官方维护的 Helm 仓库。它提供了 Ingress Nginx 控制器的 Helm Chart,用于在 Kubernetes 集群中部署和管理 Ingress Nginx。
  2. https://charts.kubesphere.io/main:
    这是 KubeSphere 官方维护的 Helm 仓库。KubeSphere 是一个开源的 Kubernetes 容器平台,该仓库提供了一系列与 KubeSphere 相关的 Helm Charts,用于部署和管理 KubeSphere 的各个组件和功能。
  3. https://mirror.kaiyuanshe.cn/kubernetes/charts/:
    这是开源社区开源中国维护的 Helm 仓库镜像。它提供了一系列常用的 Kubernetes Helm Charts,包括各种应用、服务和工具的 Charts。
  4. https://mirror.azure.cn/kubernetes/charts/:
    这是 Azure 中国区官方维护的 Helm 仓库镜像。它提供了一系列常用的 Kubernetes Helm Charts,包括各种应用、服务和工具的 Charts。
  5. https://charts.helm.sh/stable:
    这是 Helm 官方维护的稳定版本 Helm 仓库。它提供了广泛使用的各种应用、服务和工具的稳定版本 Charts。然而,自 Helm 3.0 版本起,Helm 官方不再维护这个仓库,而是鼓励开发者将 Charts 发布到其他仓库。
  6. https://charts.bitnami.com/bitnami:
    这是 Bitnami 维护的 Helm 仓库。Bitnami 提供了许多流行应用的 Helm Charts,使用户能够轻松地在 Kubernetes 上部署和管理这些应用。
  7. https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts:
    这是阿里云官方维护的 Helm 仓库。它提供了一系列常用的 Kubernetes Helm Charts,包括各种应用、服务和工具的 Charts。阿里云还提供了其他地区的镜像仓库。

添加helm仓库

image.png
image.png

运维相关

运维相关基础设施特点是部署后基本就不会再动,出于稳定性考虑,可以考虑部署在k8s集群之外,好处在于:

  1. 避免个人在玩kubesphere时,把集群搞奔溃恢复不了
  2. 使用docker-compose部署比在kubesphere部署门槛低
  3. 使用docker-compose部署方便进行迁移

部署gitlab

汉化版:https://github.com/twang2218/gitlab-ce-zh
docker-compose.yaml

version: '2'
services:
    gitlab:
      image: 'twang2218/gitlab-ce-zh:11.1.4'
      restart: unless-stopped
      hostname: 'gitlab.example.com'
      environment:
        TZ: 'Asia/Shanghai'
        GITLAB_OMNIBUS_CONFIG: |
          # 使用服务内部域名
          external_url 'http://192.168.31.8'
          gitlab_rails['time_zone'] = 'Asia/Shanghai'
          # 需要配置到 gitlab.rb 中的配置可以在这里配置,每个配置一行,注意缩进。
          # 比如下面的电子邮件的配置:
          # gitlab_rails['smtp_enable'] = true
          # gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
          # gitlab_rails['smtp_port'] = 465
          # gitlab_rails['smtp_user_name'] = "xxxx@xx.com"
          # gitlab_rails['smtp_password'] = "password"
          # gitlab_rails['smtp_authentication'] = "login"
          # gitlab_rails['smtp_enable_starttls_auto'] = true
          # gitlab_rails['smtp_tls'] = true
          # gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'
      ports:
        - '1000:80'
        - '1001:443'
        - '1002:22'
      volumes:
        - config:/etc/gitlab
        - data:/var/opt/gitlab
        - logs:/var/log/gitlab
volumes:
    config:
    data:
    logs:

登录http://192.168.31.8后台修改密码

部署nexus3

访问地址: http://ip:8081/

3.17版本密码改成随即的了,而且登录时候提示密码在/nexus-data/admin.password里

version: "3.3"
services:
  nexus:
    image: sonatype/nexus3
    container_name: nexus3
    restart: always
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 1003:8081
    volumes:
      - ./nexus-data:/nexus-data

注意:最好使用mkdir创建nexus-data目,并使用chmod -R 777设置权限,不然启动会报错
image.png

部署harbor

通过应用商店部署,核心在于TLS/SSL的配置,若是不清楚可采用docekr-compose进行部署修改。
自行选择版本:https://github.com/goharbor/harbor/releases
迅雷下载:https://storage.googleapis.com/harbor-releases/release-2.10.0/harbor-offline-installer-v2.10.0.tgz
Docker-compose部署Harbor实操
官网安装文档
helm部署harbor参考:【K8S教程】Helm方式部署Harbor

  1. 下载安装包
wget https://storage.googleapis.com/harbor-releases/release-2.10.0/harbor-offline-installer-v2.10.0.tgz
  1. 解压
tar -xzvf harbor-offline-installer-v2.10.0.tgz
  1. 查看解压目录

image.png

  1. 修改harbor.yml配置

将 harbor.yml.tmpl命名为harbor.yml,主要修改配置如下:

hostname: 域名或ip
https:
  port: 443
  # 证书路径
  certificate: /data/harbor/cart/harbor.crt
  private_key: /data/harbor/cart/harbor.key 
harbor_admin_password: 登录密码
database:
  password: 数据库密码
data_volume: /data/harbor
  1. 生成ssl证书,并拷贝到指定位置
    1. 如购买了ssl证书可直接使用,若没有则参考官网:配置harbor对https的访问
    2. 使用购买的证书和生成的证书区别:生成的证书需要再harbor和docker上都配置
    3. 将ssl证书拷贝到指定位置
  2. 首次安装执行安装命令
./install.sh

安装后会生成docker-compse.yaml文件 ,若出现端口冲突问题请修改docker-compse.yaml文件修改nginx端口为1004

  1. 编译
./prepare
  1. 使用docker-compose命令重启

研发相关

研发相关的基础设施特点:

  1. 变动也比较少,但比运维相关基础设施变动高
  2. 业务服务会与这些组件交互,从性能角度考虑建议部署到k8s中

研发相关组件mysql、redis、nacos等,这儿不详细介绍,部署方式介绍两种:

  1. 通过应用商店部署
  2. 习惯docker-compose方式部署的,可以转化为kubesphere可视化操作部署

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

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

相关文章

【图像分类】【深度学习】【轻量级网络】【Pytorch版本】ShuffleNet_V2模型算法详解

【图像分类】【深度学习】【轻量级网络】【Pytorch版本】ShuffleNet_V2模型算法详解 文章目录 【图像分类】【深度学习】【轻量级网络】【Pytorch版本】ShuffleNet_V2模型算法详解前言ShuffleNet_V2讲解四条实用指导思想G1:相等的通道宽度可以降低存储访问成本G2:大量的分组卷积…

在IntelliJ IDEA中精通Git配置与使用:全面指南

目录 1 前言2 idea中使用git的准备2.1 在 IntelliJ IDEA 中配置 Git2.2 配置 Git 忽略文件 3 在IntelliJ IDEA中使用Git的基本步骤3.1 项目导入到 Git3.2 查看与切换版本信息 4 在 IntelliJ IDEA 中使用分支4.1 创建分支4.2 无冲突合并4.3 冲突合并 5 结语 1 前言 版本控制是现…

JavaScript:正则表达式

JavaScript:正则表达式 什么是正则表达式正则表达式语法定义正则表达式判断是否有匹配的字符串查找匹配的字符串 正则表达式匹配法则元字符边界符量词字符类 什么是正则表达式 正则表达式用于匹配字符串中字符的组合模式。 正则表达式会依据其自身语法,…

电脑怎么检测手机配置信息

目录 摘要 引言 用户登录工具和连接设备 查看设备信息,电池信息 查看硬盘信息 硬件信息 查看 基带信息 销售信息 摘要 本文介绍了如何使用克魔助手工具在电脑上检测手机的配置信息。通过该工具,用户可以全面了解手机的硬件和操作系统信息&#xff…

大语言模型发展史

前言 2023年可谓是生成式AI元年,大语言模型从崭露头角到锋芒毕露,已然成为人工智能领域的关键推动力。这一创新性的技术不仅在自然语言处理领域崭露头角,更深刻地改变了我们对人机交互、智能助手和信息处理的认知。那么大语言模型的发展历程…

STM32CubeMX教程10 RTC 实时时钟 - 周期唤醒、闹钟A/B事件和备份寄存器

目录 1、准备材料 2、实验目标 3、实验流程 3.0、前提知识 3.1、CubeMX相关配置 3.1.1 、时钟树配置 3.1.2、外设参数配置 3.1.3 、外设中断配置 3.2、生成代码 3.2.1、外设初始化函数调用流程 3.2.2、外设中断函数调用流程 3.2.3、添加其他必要代码 4、常用函数 …

听GPT 讲Rust源代码--src/tools(34)

File: rust/src/tools/clippy/clippy_lints/src/collection_is_never_read.rs 文件"collection_is_never_read.rs"位于Rust源代码中的clippy_lints工具中,其作用是检查在集合类型(如Vec、HashMap等)的实例上执行的操作是否被忽略了…

[Angular] 笔记 19:路由参数

油管视频 Route Parameters 路由参数是跟在 url 后面的数字,字符串,或者 数字字符串,例如如下 url 中的 123,此类参数会传给后端: www.facebook.com/profile/123 首先将 pokemon-template-form 组件移到 pokeman-ba…

【开源】基于Vue+SpringBoot的房屋出售出租系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 房屋销售模块2.2 房屋出租模块2.3 预定意向模块2.4 交易订单模块 三、系统展示四、核心代码4.1 查询房屋求租单4.2 查询卖家的房屋求购单4.3 出租意向预定4.4 出租单支付4.5 查询买家房屋销售交易单 五、免责说明 一、摘…

Matlab:BP神经网络算法,二叉决策树

1、BP神经网络算法 (1)步骤 1.准备训练数据和目标值 2.创建并配置BP神经网络模型 3.训练BP神经网络模型 4.用BP神经网络模型预测数据 例:某企业第一年度营业额为132468,第二年度为158948,第三年度为183737,预测第四年度的营…

相位相关匹配法的opencv C++实现

前言:一个图像拼接的小项目,用途场景,显微图像的拼接,或者只包含x,y平移的图像拼接。本来是显微镜拼接工具,MIST的核心拼接代码,matlab版的,已经开源。下面是地址, GitH…

AI面板识别 - 华为OD统一考试

OD统一考试 (B卷) 分值: 100分 题解: Java / Python / C++ 题目描述 AI识别到面板上有N(1 ≤ N ≤ 100)个指示灯,灯大小一样,任意两个之间无重叠。 由于AI识别误差,每次别到的指示灯位置可能有差异,以4个坐标值描述AI识别的指示灯的大小和位置(左上角x1,y1,右下角x2…

Android NDK打包armeabi平台架包

NDK打包armeabi 1.降低NDK版本和Cmake版本 sdk.dirE\:\\Android\\sdk //指定ndk版本,不指定默认使用最新的NDK ndk.dirE\:\\Android\\sdk\\ndk\\16.1.4479499修改builde.gradle(app) android{defaultConfig{...//配置 AS 工程的 C/C 源文件编译参数externalNativ…

帆软FineBi V6版本经验总结

帆软FineBi V6版本经验总结 BI分析出现背景 ​ 现在是一个大数据的时代,每时每刻都有海量的明细数据出现。这时大数据时代用户思维是:1、数据的爆炸式增长,人们比起明细数据,更在意样本的整体特征、相互关系。2、基于明细的“小…

香橙派 ubuntu实现打通内网,外网双网络,有线和无线双网卡

当香橙派 ubuntu 连了有线,和无线时,默认请求外网时,只走一个网卡,如走了内网网卡,就只能访问内访问,访问不了外网;走了外网网卡就只能访问外网,访问不了内网; 实现双网…

如何使用Docker将.Net6项目部署到Linux服务器(三)

目录 四 安装nginx 4.1 官网下载nginx 4.2 下载解压安装nginx 4.3 进行configure 4.4 执行make 4.5 查看nginx是否安装成功 4.6 nginx的一些常用命令 4.6.1 启动nginx 4.6.2 通过命令查看nginx是否启动成功 4.6.3 关闭Nginx 4.6.5 重启Nginx 4.6.6 杀掉所有Nginx进程 4.…

嵌入式SOC之通用图像处理之OSD文字信息叠加的相关实践记录

机缘巧合 机缘巧合下, 在爱芯元智的xx开发板下进行sdk的开发.由于开发板目前我拿到是当前最新的一版(估计是样品),暂不公开开发板具体型号信息.以下简称板子 .很多优秀的芯片厂商,都会提供与开发板配套的完善的软件以及完善的技术支持(FAE),突然觉得爱芯…

C/C++转WebAssembly及微信小程序调用

上一篇文章讲了C/C如何转WebAssembly,并测试了在Web端调用。本篇内容和上篇一样,介绍C/C包转的.wasm包如何在小程序中调用。 说明 本篇是在上一篇步骤1-4的基础上,再做修改,供微信小程序端调用的方法和步骤。 本篇操作手册可以…

burpsuite模块介绍之repeater

导语 repeater是一个用于手动操作和发送个别HTTP请求的简单工具,它可以帮助您分析应用程序的响应。您可以使用repeater从Burp Suite的任何位置发送内部请求,然后修改请求并发送。通过这种方式,您可以测试和调试应用程序,并对请求…

思福迪运维安全管理系统 任意文件读取漏洞

产品简介 思福迪运维安全管理系统是思福迪开发的一款运维安全管理堡垒机 漏洞概述 由于思福迪运维安全管理系统 GetCaCert路由存在任意文件读取漏洞,攻击者可通过该漏洞在服务器端读取任意文件敏感内容,可能导致攻击者后续获取到相关的服务器权限 资…