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

文章目录

  • 安装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可视化操作部署

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Maven】linux部署maven

简介 最近学习hyperledger-fabric超级账本(区块链),需要使用到java和maven,所以重新学习了一下如何部署maven,这里附上参考文档。在附上官方网站的下载地址:https://maven.apache.org/download.cgi。首先去…

Linux性能优化全景指南

Part1 Linux性能优化 1、性能优化性能指标 高并发和响应快对应着性能优化的两个核心指标:吞吐和延时 应用负载角度:直接影响了产品终端的用户体验系统资源角度:资源使用率、饱和度等 性能问题的本质就是系统资源已经到达瓶颈,但…

DM、Oracle、GaussDB、Kingbase8(人大金仓数据库)和HIVE给列增加注释

DM数据库给列增加注释 1、创建表 CREATE TABLE test222 ( id int NOT NULL PRIMARY KEY, name varchar(1000) DEFAULT NULL, email varchar(1000) DEFAULT NULL, phone varchar(1000) DEFAULT NULL ) 2、给列添加注释 comment on column TEST222.NAME is 这是一个列注释; 例如…

蓝牙物联网移动硬件数据传输系统解决方案

随着传感器技术、网络技术和数据传输技术的不断发展,人们对智能设备的需求日渐增强,利用传感器技术可以对周围环境进行准确和全面的感知,获取到实时信息,从而在网络中进行传输和共享,再通过服务器对各种数据进行保存、分析和挖掘等…

3.云原生之kubesphere运维

文章目录 k8s节点状态介绍配置宿主机使用k8s内部域名使用KubeKey 升级kubesphere使用KubeKey添加节点使用KubeKey下架节点使用k8s命令添加新节点k8s集群备份与恢复环境准备备份与还原在集群A和B中安装Velero集群A备份操作集群B还原备份操作 注意:所有节点运维操作前…

互联网加竞赛 基于CNN实现谣言检测 - python 深度学习 机器学习

文章目录 1 前言1.1 背景 2 数据集3 实现过程4 CNN网络实现5 模型训练部分6 模型评估7 预测结果8 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于CNN实现谣言检测 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐&am…

从0到1浅析Redis服务器反弹Shell那些事

文章目录 前言Redis服务1.1 特点与应用1.2 安装与使用1.3 语法和配置1.4 未授权访问 反弹Shell2.1 Web服务写入Webshell2.2 Linux定时任务反弹shell2.3 /etc/profile.d->反弹shell2.4 写入ssh公钥登录服务器2.5 利用Redis主从复制RCE2.6 SSRF漏洞组合拳->RCE 总结 前言 …

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

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

传统项目基于tomcat cookie单体会话升级分布式会话解决方案

传统捞项目基于servlet容器 cookie单体会话改造分布式会话方案 ##引入redis,spring-session依赖 <!--redis依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>&…

RabbitMQ详解

RabbitMQ 概念 RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。 AMQP &#xff1a;Advanced Message Queue&#xff0c;高级消息队列协议。它是应用层协议的一个开放标准&#xff0c;为面向消息的中间件设计&#xff0c;基于此协议的客户端与消息中间件可传递消息&a…

企业品牌推广在国外媒体投放的意义和作用何在?

海外广告投放是企业在国际市场推广的重要战略&#xff0c;具有多种形式&#xff0c;包括社交媒体广告、短视频广告、电视广告等。这些广告形式在传播信息、推动销售、塑造品牌形象等方面发挥着独特的作用。 其中软文发稿是一种注重叙事和信息传递的广告形式&#xff0c;对于企…

LT8612UX-HDMI2.0 to HDMI2.0 and VGA Converter with Audio,支持三通道视频DAC

HDMI2.0 to HDMI2.0 and VGA Converter with Audio 1. 描述 LT8612UX是一个HDMI到HDMI和vga转换器&#xff0c;它将HDMI2.0数据流转换为HDMI2.0信号和模拟RGB信号。 它还输出8通道I2S和SPDIF信号&#xff0c;使高质量的7.1通道音频。 LT8612UX支持符合HDMI2.0/ 1.4规范的…

Unity坦克大战开发全流程——游戏场景——玩家—小地图

游戏场景——玩家—小地图 先在场景中再创建一个摄像机&#xff0c;然后将其挂载的AudioListener组件移除&#xff08;一山不能容二虎&#xff09;&#xff0c;然后再在project中创建一个RenderTexure 然后再把这个RenderTexure拖拽到我们之前创建的texMap上即可 然后将摄像机改…

Android 13 默认关闭 快速打开相机

介绍 在设置菜单的手势界面里&#xff0c;快速打开相机是默认开启的&#xff0c;此功能当开启时连续点击两次电源键会打开相机&#xff0c;现在客户需要默认关闭。 效果展示 修改 这里一开始想到的就是配置文件&#xff0c;在路径下果然找到了,从注释中看使我们需要的&#x…

蓝牙物联网灯控设计方案

蓝牙技术是当前应用最广泛的无线通信技术之一&#xff0c;工作在全球通用的 2.4GHZ 的ISM 频段。蓝牙的工作距离约为 100 米&#xff0c;具有一定的穿透性&#xff0c;没有方向限制。具有低成本、抗干扰能力强、传输质量高、低功耗等特点。蓝牙技术组网比较简单&#xff0c;无需…

钡铼技术集IO数据采集可编程逻辑控制PLC无线4G环保物联网关

背景 数据采集传输对于环保企业进行分析和决策是十分重要的&#xff0c;而实时数据采集更能提升环保生产的执行力度&#xff0c;从而采取到更加及时高效的措施。因此实时数据采集RTU成为环保企业的必备产品之一。 产品介绍 在推进环保行业物联网升级过程中&#xff0c;环保RTU在…

TCP/IP的五层网络模型

6.1应用层 此时做的数据就是进行分割&#xff0c;可以根据自身需要进行分割&#xff0c;比如通过逗号 此时就可以把应用层的数据通过操作系统api&#xff0c;交给传输层 6.2传输层 只是把刚才的应用层数据&#xff0c;基础拼接上传输层的报头 传输层典型的协议&#xff1a…

css 用多个阴影做出光斑投影的效果 box-shadow

css 用多个阴影做出光斑投影的效果 box-shadow 你首先需要知道的一点是 box-shadow 可以接收多个值&#xff0c;也就是可以设置多个阴影&#xff0c;这样就可以做一个类似光斑投影的效果。 一、效果 二、代码 里面用到了我一些 scss 工具方法&#xff0c;不过不影响&#xf…

RabbitMQ消息存储JSON格式反序列化

如果发送消息消息体为实体类对象数据&#xff0c;交换机接收消息经由路由键发送给队列。需要实现数据反序列化操作。实现JSON格式的反序列化操作 Rabbitmq的反序列化接口 MessageConverter&#xff0c;它的实现类有 Jackson2JsonMessageConverter的反序列化实现类&#xff0c…

Java智慧工地源码,Spring Cloud +UniApp +MySql技术开发,支持多端展示

智慧工地解决方案依托计算机技术、物联网、云计算、大数据、人工智能、VR&AR等技术相结合&#xff0c;为工程项目管理提供先进技术手段&#xff0c;构建工地现场智能监控和控制体系&#xff0c;弥补传统方法在监管中的缺陷&#xff0c;最线实现项目对人、机、料、法、环的全…