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.2name: ks-installernamespace: kubesphere-system
spec:alerting:enabled: trueauditing:enabled: trueauthentication:jwtSecret: ''common:core:console:enableMultiLogin: trueport: 30880type: NodePortes:basicAuth:enabled: falsepassword: ''username: ''elkPrefix: logstashexternalElasticsearchHost: ''externalElasticsearchPort: ''logMaxAge: 7gpu:kinds:- default: trueresourceName: nvidia.com/gpuresourceType: GPUminio:volumeSize: 20Gimonitoring:GPUMonitoring:enabled: falseendpoint: 'http://prometheus-operated.kubesphere-monitoring-system.svc:9090'openldap:enabled: falsevolumeSize: 2Giredis:enabled: falsevolumeSize: 2Gidevops:enabled: truejenkinsMemoryLim: 8GijenkinsMemoryReq: 2GijenkinsVolumeSize: 8Giedgeruntime:enabled: falsekubeedge:cloudCore:cloudHub:advertiseAddress:- ''service:cloudhubHttpsNodePort: '30002'cloudhubNodePort: '30000'cloudhubQuicNodePort: '30001'cloudstreamNodePort: '30003'tunnelNodePort: '30004'enabled: falseiptables-manager:enabled: truemode: externaletcd:endpointIps: '192.168.31.21,192.168.31.22,192.168.31.23'monitoring: falseport: 2379tlsEnable: trueevents:enabled: truelogging:enabled: truelogsidecar:enabled: truereplicas: 2metrics_server:enabled: truemonitoring:gpu:nvidia_dcgm_exporter:enabled: falsenode_exporter:port: 9100storageClass: ''multicluster:clusterRole: nonenetwork:ippool:type: caliconetworkpolicy:enabled: truetopology:type: weave-scopeopenpitrix:store:enabled: truepersistence:storageClass: ''servicemesh:enabled: falseistio:components:cni:enabled: falseingressGateways:- enabled: falsename: istio-ingressgatewayterminal:timeout: 600zone: 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.13interface: ens192protocol: 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-stoppedhostname: '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/nexus3container_name: nexus3restart: alwaysenvironment:- TZ=Asia/Shanghaiports:- 1003:8081volumes:- ./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.crtprivate_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.rhkb.cn/news/227109.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【c语言】飞机大战(1)

提前准备好游戏要的素材,可以到爱给网去找,飞机大战我们需要的是一个我方战机图片,一个背景图,三个敌方战机的图,我方战机的图片,敌方战机的图片,并且将图片和.cpp放在同一文件夹下. 这里创建.…

回归预测 | Python实现OOA-LightGBM基于人工鱼鹰优化算法优化LightGBM的多输入单输出数据回归预测模型 (多指标,多图)

回归预测 | Python实现OOA-LightGBM基于人工鱼鹰优化算法优化LightGBM的多输入单输出数据回归预测模型 (多指标,多图) 目录 回归预测 | Python实现OOA-LightGBM基于人工鱼鹰优化算法优化LightGBM的多输入单输出数据回归预测模型 (…

vue+element+springboot实现多张图片上传

1.需求说明 2.实现思路 3.el-upload组件主要属性说明 4.前端传递MultipartFile数组与服务端接收说明 5.完整代码 1.需求说明 动态模块新增添加动态功能,支持多张图片上传.实现过程中对el-upload组件不是很熟悉,踩了很多坑,当然也参考过别的文章,发现处理很…

2023总结与展望--Empirefree

今年一篇博客都没写过了,好像完全在忙在工作和生活上面了,珍惜自我,保持热情,2024对我好点 文章目录 🔥1. 年终总结1.1.学习工作计划1.2. 生活计划1.3 个人总结 🔥2. 未来展望 🔥1. 年终总结 1…

Windows Server 2012一键安装PHP5.4.45环境-护卫神

Windows Server 2012一键安装PHP环境(PHP5.4FastCGI模式) (hws.com)护卫神PHP套件|mysql安装|php环境|安装php (hws.com) 护卫神PHP套件|mysql安装|php环境|安装php

【无标题】《巴黎图书馆》,又发现一本书

我喜愛看的书(https://img-blog.csdnimg.cn/8cd84d33e6724f09a46831f75abe6464.jpg)在这里插入图片描述

Linux命令:wc -l计算文件中的行数

wc -l是一个Linux命令,用于计算文件中的行数。以下是wc -l命令的详细说明: 命令格式:wc -l [文件名] 选项: -l:仅计算文件中的行数。 用法: 如果不指定文件名,则wc -l命令将从标准输入读取数…

Nature | 大型语言模型(LLM)能够发现和产生新知识吗?

大型语言模型(LLM)是基于大量数据进行预训练的超大型深度学习模型。底层转换器是一组神经网络,这些神经网络由具有自注意力功能的编码器和解码器组成。编码器和解码器从一系列文本中提取含义,并理解其中的单词和短语之间的关系。通…

封装uniapp签字板

新开发的业务涉及到签字功能,由于是动态的表单,无法确定它会出现在哪里,不得已封装模块。 其中涉及到一个难点就是this的指向性问题, 第二个是微信小程序写法, 我这个写法里用了u-view的写法,可以自己修改组…

JavaScript:正则表达式

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

关键字:abstract关键字

在 Java 中,abstract是一个关键字,用于修饰类和方法。当一个类被声明为抽象类时,它不能被实例化,只能被其他类继承。同时,抽象类可以包含抽象方法,抽象方法没有方法体,只包含方法的签名&#xf…

计算机网络复习5

传输层——端到端 文章目录 传输层——端到端功能传输层的寻址与端口UDPTCPTCP连接管理TCP可靠传输TCP流量控制TCP拥塞控制网络拥塞的处理 功能 从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同…

年度总结和规划

年度总结和规划 目录概述需求: 设计思路实现思路分析1.技术总结2.管理总结3.职业计划比较 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait…

准备用vscode代替sourceinsight

vscode版本1.85.1 有的符号,sourceinsight解析不到。 看网上说vscode内置了ripgrep,但ctrlshiftf在文件里查找的时候,速度特别慢,根本不像ripgrep的速度。ripgrep的速度是很快的。 但今天再查询,速度又很快了&#x…

Python武器库开发-武器库篇之上传本地仓库到Git(三十八)

武器库篇之上传本地仓库到Git(三十八) 当我们在Git中创建远程仓库和进行了SSH key免密登陆之后,我们点击 Your respositories 可以查看我们所创建的远程仓库,如图所示: 如果我们需要将本地的仓库上传到Git,首先我们需要建立一个本…

2023-12-29 服务器开发-centos-安装php8

摘要: 2023-12-29 服务器开发-centos-安装php8 centos-安装php8 必备条件 Minimal CentOS 8 / RHEL 8User with sudo rightsInternet Connection (1) 更新系统 更新系统 $ sudo dnf update $ sudo dnf upgrade 重启系统 $ sudo reboot (2) 启用 EPEL & Remi 软件库…

修改源码,element的el-table合并,处理合并产生的hover样式问题

1、确认自己element-ui的版本号 2、此element-ui下的lib包是修改过hover样式的包,如何替换自己文件下的node_modules中的包 修改后将lib文件夹中文件替换你项目中/node_module/element-ui/Lib中的文件问题??如果替换开发环境中的node_module的包无法升级到测试环境,因为nod…

FPGA设计时序约束十四、Set_External_Delay

一、序言 在时序约束中对clock的约束还存在一种特殊的延时约束set external delay。set external delay如字面含义,设置外部的时延值,但这个外部时延主要是指反馈时延,即信号从FPGA的output端口输出后经过外部电路回到输入端口的时延值。 二…

基于js和html的骰子游戏

介绍: 1.游戏者选择“大”时,三个骰子点数之和为11-18时,游戏者获胜。2.游戏者选择“小”时,三个骰子点数之和为3-10时,游戏者获胜。3.如果游戏者选择具体点数,则根据三个骰子的点数计算,如果与…

AI大模型时代下运维开发探索第二篇:基于大模型(LLM)的数据仓库

在SREWorks社区聚集了很多进行运维数仓建设的同学,大家都会遇到类似的挑战和问题: 数仓中存储大量数据消耗成本,但很多存储的数据却并没有消费。进数仓的ETL学习成本高、管理成本高,相关同学配合度低,以及上游结构改动…