1.创建自定义模板 helm create <模板名称>
helm create mychart 是一个用于创建一个新的 Helm chart 的命令。Helm 是 Kubernetes 的包管理器,用于定义、安装和升级 Kubernetes 应用。
当你运行 helm create mychart 命令时,Helm 会创建一个新的目录结构,其中包含一个基本的 Helm chart。这个 chart 是一个用于定义 Kubernetes 应用的模板,它包含许多有用的文件和文件夹,如 Chart.yaml(描述 chart 的元数据),values.yaml(用于存储默认值和提示用户输入的提示)和 templates/(定义 Kubernetes 资源对象的模板)。
使用命令创建了 chart,可以使用 helm package 命令将其打包为 .tgz 文件,使用 helm install 或 helm upgrade 命令将安装到 Kubernetes 集群中。
# 使用命令创建自定义 chart 包 [root@master01 hpro]# helm create mychart Creating mychart [root@master01 hpro]# [root@master01 hpro]# # 可以看到已经创建了 [root@master01 hpro]# ls mychart # 文件包跟以前拉取的包没有什么区别 # 文件作用前面已经讲过 [root@master01 hpro]# cd mychart/ [root@master01 mychart]# ls charts Chart.yaml templates values.yaml ### 文件中 # Chart.yaml 存放chrat属性信息 # templates 编写yaml文件 # yaml 文件可以使用全局变量 # templates 把这个文件清空使用k8s快速创建
2.清空 templates 文件夹使用 k8s命令导出YAML
# 清空 templates 文件夹 [root@master01 mychart]# cd templates/ [root@master01 templates]# ls deployment.yaml _helpers.tpl hpa.yaml ingress.yaml NOTES.txt serviceaccount.yaml service.yaml tests # 可以看到已经清空 [root@master01 templates]# rm -rf * [root@master01 templates]# ls
3.接着我们用命令创建YAML
# 前提是同学们有k8s基础啊 kubectl create deploy web-test --image=nginx --dry-run -o yaml > web-deploy.yaml
这条命令是在 Kubernetes 集群中创建一个新的部署(Deployment)对象,创建一个名为 web-test
,并使用 nginx
镜像作为容器的基础。命令解释如下:
kubectl
: 这个就不多说了。create
: 用于创建新的资源对象。deploy
: 表示创建的是一个 Deployment 对象,即一种在集群中自动扩展和管理的应用程序容器化实例的资源。web-test
: 自定义的 Deployment 的名称。--image=nginx
: 指定容器镜像为nginx
。--dry-run
: 模拟执行命令,而不会真正地创建资源。可以在不实际创建对象的情况下查看输出结果。-o yaml
: 这将输出格式设置为 YAML,用于配置文件和数据序列化。> web-deploy.yaml
: 这将输出重定向到名为web-deploy.yaml
的文件中。如果该文件已存在,它将被覆盖;如果不存在,它将被创建。
4. 快速创建svc
kubectl expose deployment web-test --port=80 --target-port=80 --type=NodePort --dry-run -o yaml > servics.yaml
这条命令用于在 Kubernetes 集群中暴露一个已存在的 Deployment(在本例中为 web-test
),并获取其服务定义。命令解释如下:
kubectl
: 这个就不多说了。expose
: 用于将一个或多个 Pod 暴露为 Kubernetes 服务。deployment web-test
: 表示资源名为web-test
的 Deployment。--port=80
: 指定要暴露的端口号为 80。--target-port=80
: 指定目标端口号也为 80,通常用于匹配容器内运行的服务的端口。--type=NodePort
: 指定要创建的服务类型为 NodePort。--dry-run
: 模拟执行命令,而不会真正地创建资源。可以在不实际创建对象的情况下查看输出结果。-o yaml
: 这将输出格式设置为 YAML,这是一个人类可读的格式,常用于配置文件和数据序列化。> servics.yaml
: 重定向到名为servics.yaml
的文件中。如果该文件已存在,将被覆盖;如果不存在,它将被创建。
5.这是我使用 k8s快速创建命令创建的,在(templates)文件夹下
[root@master01 templates]# ls servics.yaml web-deploy.yaml
6.使用helm创建自定义的模板 helm install <自定义名字> <文件夹>
# 使用Helm创建 [root@master01 hpro]# helm install web1 mychart/ NAME: web1 LAST DEPLOYED: Sun Jan 14 01:10:06 2024 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None # 可以看到创建的 pod和svc [root@node1 test]# kubectl get svc -A NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 203d default web-test NodePort 10.103.178.251 <none> 80:30187/TCP 39s [root@node1 test]# kubectl get pod -A NAMESPACE NAME READY STATUS RESTARTS AGE default nginx-dep1-cf6cfcf66-2sh46 0/1 Completed 0 37d default web-test-5f547489c6-rm5c8 0/1 ContainerCreating 0 63s
6.通过helm卸载 helm uninstall <应用名称>
# 通过helm卸载 [root@node1 test]# helm uninstall web1 release "web1" uninstalled
7.版本记录 helm upgrade <自定义名字> <文件夹>
[root@master01 hpro]# helm install web1 mychart/ NAME: web1 LAST DEPLOYED: Sun Jan 14 01:14:16 2024 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None # 如果helm中yaml修改了要升级使用-可以看到 REVISION: 2 是2了 [root@master01 hpro]# helm upgrade web1 mychart/ Release "web1" has been upgraded. Happy Helming! NAME: web1 LAST DEPLOYED: Sun Jan 14 01:14:23 2024 NAMESPACE: default STATUS: deployed REVISION: 2 TEST SUITE: None