乐趣区

关于kubernetes:KubeSpace之应用管理

KubeSpace 是一个开源的 DevOps 以及 Kubernetes 多集群治理平台。

Github:https://github.com/kubespace/…

  • DevOps Kubernetes 多集群治理平台 -KubeSpace(零)
  • KubeSpace 之利用治理(一)
  • KubeSpace 之利用商店(二)
  • KubeSpace 最简流水线之构建(三)
  • KubeSpace 最简流水线之部署(四)
  • KubeSpace 最简流水线之公布(五)

    筹备

Golang 服务

当初咱们有一个很简略的 golang http 服务,代码托管在 github。

本地启动 golang 服务,端口为 8000:

go run main.go

申请 http://127.0.0.1:8000/current… 返回以后工夫:

curl http://127.0.0.1:8000/current_time
Hello, current time: 2022-05-08 11:11:33.632898 +0800 CST m=+18.871691849

构建镜像

编译 golang 代码:

CGO_ENABLED=0 LD_FLAGS=-s GOOS=linux go build -o go-app

在代码库中有 Dockerfile,构建服务镜像,并推送到镜像仓库

docker build -t registry.cn-hangzhou.aliyuncs.com/librrary/go-app:v1 .
docker push registry.cn-hangzhou.aliyuncs.com/librrary/go-app:v1

在装有 docker 的服务器运行镜像

docker run -it --rm -p 8000:8000 registry.cn-hangzhou.aliyuncs.com/librrary/go-app:v1

创立利用

在 KubeSpace 平台创立利用非常简单。

创立一个测试环境

首先,创立一个工作空间「测试环境 -1」,工作空间绑定一个 K8s 集群中的命名空间,通过命名空间来隔离不同环境的资源。

如上,「测试环境 -1」绑定 local 集群中的 test-1 命名空间。

创立 go-app 利用

进入到「测试环境 -1」工作空间,进入「利用治理」,点击「创立利用」按钮。

创立利用分为「根本信息」跟「利用配置」两局部。

在根本信息输出如下:

在利用配置中只须要输出镜像即可:

其它配置还包含:

  • 容器组:能够增加多个容器,容器中包含镜像、启动命令、资源配额等配置;
  • 存储:增加内部存储到工作负载,并挂载到容器中,包含 PVC、HostPath、EmptyDir、ConfigMap、Secret、NFS、GlusterFS 等;
  • 网络:配置 DNS 策略,是否应用宿主机网络、PID,以及自定义域名等;
  • 调度:工作负载的调度策略,包含指定节点标签、污点容忍、节点亲和性以及 Pod 亲和反亲和等;
  • 平安:能够对工作负载中的容器限度用户运行以及 sysctl 配置等。

在右上角点击「保留」按钮,会保留以后利用配置为一个新的版本:

至此,一个 go-app 的利用很快创立实现。

装置利用

go-app 利用创立胜利之后,在利用列表能够进行装置。

点击「装置」之后,还能够抉择「利用版本」以及对「利用镜像」、「镜像标签」进行批改。

装置之后,在列表页点击「利用名称」,能够查看利用的资源详情、容器日志、进入容器 Shell 等。

能够看到,go-app 的 Pod 曾经运行失常,拜访 Pod IP,看服务是否失常:

curl http://10.244.0.131:8000/current_time
Hello, current time: 2022-05-08 04:23:22.316105117 +0000 UTC m=+219.645432028

对外拜访

当初,咱们曾经有一个在 K8s 集群内运行的 go-app 服务了。然而集群内部拜访不到,能够通过以下两种形式:

  • Service NodePort
  • Ingress

增加 Service

在利用列表中,点击「编辑」go-app 利用,增加利用端口以及 Service。

如下,go-app 利用容器配置中增加 8000 端口。

如下,首先增加 Service 资源,并抉择 Service 类型为 NodePort,点击「+ 增加服务端口」,其中 NodePort 为「30080」。

配置好 Service 之后,右上角点击「保留」,会对 go-app 利用配置生成一个新的版本,其中版本号批改为「0.0.2」。

创立新的版本之后,在利用列表页,能够对 go-app 进行降级,版本抉择「0.0.2-xxxxxx」。

go-app 降级之后,在集群外拜访集群内任意一台机器的 30080 端口。
如下,其中 10.240.163.1 为宿主机 ip 地址:

curl http://10.240.163.1:30080/current_time
Hello, current time: 2022-05-08 06:03:30.467495512 +0000 UTC m=+57.204330272

配置 Ingress

配置 Ingress 前,请确保您的集群中已装置了 IngressController,具体请参考 https://kubernetes.io/zh/docs…。

在「测试环境 -1」工作空间中,点击左侧导航栏「网络」-「路由」,点击「创立」。

如下,增加 Host 为「go-app」的路由规定,并配置后端服务为咱们之前创立的 go-app Service,端口为「8000」。

创立 Ingress 之后,咱们能够在集群外的本地 hosts 配置域名,并通过域名拜访。

echo '10.240.163.1 go-app' >> /etc/hosts
curl http://go-app/current_time
Hello, current time: 2022-05-08 06:03:30.467495512 +0000 UTC m=+57.204330272

克隆

当初咱们曾经在「测试环境 -1」中初始化创立了 go-app 利用并失常装置运行了,那么能够在该环境进行测试。

这时,go-app 有一个新的性能开发实现要进行测试,减少了 /v2/current_time接口,将返回工夫进行了更好的格式化显示。

curl http://127.0.0.1:8000/v2/current_time
Hello, current time: 2022-05-08 16:16:21

并构建了新的镜像:registry.cn-hangzhou.aliyuncs.com/librrary/go-app:v2

然而「测试环境 -1」还须要测试其余性能,那么咱们能够创立一个新的环境「测试环境 -2」,绑定新的命名空间。

创立实现之后,咱们能够在「测试环境 -1」中,将利用 克隆 到「测试环境 -2」中,疾速初始化新的环境,并装置运行。

在「测试环境 -2」中,对 go-app 进行装置,将镜像标签从「v1」批改为「v2」。

然而装置时,会报错如下,提醒 30080 的端口已被调配:

那么,咱们能够从新换一个端口,编辑 go-app 利用,将 Service 的 NodePort 端口批改为「30081」。

点击「保留」,并将版本号保留为「0.0.3」。

保留之后,装置 go-app 利用,等 go-app 状态为「运行中」后,验证利用是否失常运行:

curl http://10.240.163.1:30081/v2/current_time
Hello, current time: 2022-05-08 08:44:18

OK,出工!

交换沟通

如果您在应用过程中,有任何问题、倡议或性能需要,欢送随时跟咱们交换或提交 issue。

能够在官网扫描 QQ 二维码,退出咱们的 QQ 交换群。

退出移动版