k8s实战之理解helm
Posted 马哥Linux运维
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s实战之理解helm相关的知识,希望对你有一定的参考价值。
![k8s实战之理解helm](https://image.cha138.com/20210818/1f7d515308644b409d7bf45838e9fd9b.jpg)
helm V3的特性:
-
架构改变,去掉Tiller,直接helm通过kubeconfig连接apiserver
-
release名称可以在不同命令空间重用
-
chart支持放到docker镜像仓库
K8S部署一个应用的流程如下
编写 yaml : deployment service ingress
1.0创建 deployment模板
kubectl create deployment nginx --image=nginx --dry-run -o yaml > deployment.yaml
1.1启动nginx pod
kubectl apply -f deployment.yaml
1.2检查pod服务
kubectl get pods
![k8s实战之理解helm](https://image.cha138.com/20210818/24340d1784044d49b583bd6c1907e3d3.jpg)
2.0创建service资源
kubectl expose deployment nginx --port=80 --target-port=80 --type=NodePort --dry-run -o yaml > service.yaml
2.1.启动service服务
kubectl apply -f service.yaml
2.2检查service端口
kubectl get svc
![k8s实战之理解helm](https://image.cha138.com/20210818/232f3df8e7b4411f89c95eaddc173c6b.jpg)
3.0访问该nginx服务
其中一个node节点ip+31190端口
![k8s实战之理解helm](https://image.cha138.com/20210818/eaf6517cd6314376b892f911f4fd8327.jpg)
kubectl describe pod `web-dc77dd8db-7r8k5`
有问题查看构建镜像的构建
helm 解决了如下管理应用的问题
1. 如何将这些yaml作为一个整体管理?
2. 这些yaml文件如何高效复用?
3. 不支持应用级别的版本管理
开始实战
wget http://120.78.77.38/file/helm-v3.0.0-linux-amd64.tar.gz
#也可以去官网下载
tar -xf helm-v3.0.0-linux-amd64.tar.gz && cd linux-amd64
mv helm /usr/bin/ #将helm二进制文件拷贝到宿主机/bin下
![k8s实战之理解helm](https://image.cha138.com/20210818/8d923058e2624ae3b4335d0a9f8c9178.jpg)
helm repo add stable http://mirror.azure.cn/kubernetes/charts/
helm repo list
通过helm安装一个k8s-ui
1.通过helm安装软件
helm search repo weave #去仓库中查找weave的程序包
![k8s实战之理解helm](https://image.cha138.com/20210818/1738447480ea42fcb7cdf7916610ce09.jpg)
helm install ui stable/weave-scope #安装
![k8s实战之理解helm](https://image.cha138.com/20210818/8bae874ec36b4a1582b68d63dd5786bd.jpg)
kubectl get pods 检查
![k8s实战之理解helm](https://image.cha138.com/20210818/18657c8e8dc44e7689d83304fb605fea.jpg)
![k8s实战之理解helm](https://image.cha138.com/20210818/c8332d636854413cbc68b6cabf594111.jpg)
2.修改配置文件,并访问
ClusterIP改成 NodePort
kubectl edit svc ui-weave-scope
![k8s实战之理解helm](https://image.cha138.com/20210818/e2abcd9936244ebd941c1d73d1477e62.jpg)
kubectl get svc #可以看到暴露的端口
![k8s实战之理解helm](https://image.cha138.com/20210818/1af638cfbacf45b6baad4e440081fc18.jpg)
http://192.168.106.103:32055/
![k8s实战之理解helm](https://image.cha138.com/20210818/669ea5ab16d04af1bfb7a62abeeedd79.jpg)
创建一个mychart包管理模板
helm create mychart
![k8s实战之理解helm](https://image.cha138.com/20210818/faae2e7f96184a218cdb7dc9d8f3d113.jpg)
#删除templates/目录下的文件/将之前nginx的deployment和service yaml文件拷贝过来
rm -rf /templates/*
mv /root/deployment.yaml ./
mv /root/service.yaml ./
![k8s实战之理解helm](https://image.cha138.com/20210818/d880ef545a7a45d0b621abdc795bf037.jpg)
kubectl delete svc web #删除之前的nginx svc
kubectl delete deployment web #删除之前的nginx pod
cd /root
helm install web mychart/
![k8s实战之理解helm](https://image.cha138.com/20210818/be9abda319654d07ab2f23c5da7544ac.jpg)
![k8s实战之理解helm](https://image.cha138.com/20210818/e904a9dcc6ae4a7a9d73c324b8576ad0.jpg)
执行完会自动创建deployment和service
修改更新helm
helm upgrade web mychart
helm list 检测服务
![k8s实战之理解helm](https://image.cha138.com/20210818/1dd85d72bdff447ba4ebdbc428f164b3.jpg)
通过修改helm全局变量模板deployment/service
关键信息创建应用
# vim values.yaml
replicaCount: 1
image: zhangfan5391621/java-demo
tag: latest
label: java-demo
port: 8080
修改deployment.yaml(关键信息为变量定义信息)
# vim deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-dp
spec:
replicas: {{ .Values.replicas }}
selector:
matchLabels:
app: {{ .Values.label }}
template:
metadata:
labels:
app: {{ .Values.label }}
spec:
containers:
- image: {{ .Values.image }}:{{ .Values.tag }}
name: nginx
修改service.yaml(关键信息为变量定义信息)
# vim service.yaml
apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name }}-svc
spec:
ports:
- port: 80
protocol: TCP
targetPort: {{ .Values.port }}
selector:
app: {{ .Values.label }}
type: NodePort
helm install --dry-run web1 mychart/ #检测配置变量是否正确生效
![k8s实战之理解helm](https://image.cha138.com/20210818/273ae7eeb55d4b62a02fa458213e3175.jpg)
helm install web1 mychart/ 创建应用
-
通过定义变量成功创建了应用
![k8s实战之理解helm](https://image.cha138.com/20210818/4e17176637bc42cfa3a5cc243f27799d.jpg)
-
查看helm创建的应用
![k8s实战之理解helm](https://image.cha138.com/20210818/cb20c21f19814486ac3f250667e77fda.jpg)
helm 扩容
helm upgraded web1 --set replicas=3 mychart/ #扩容副本3个
回滚
helm rollback web1 1 #将web1回滚到第一个版本
点击下方“阅读原文”查看更多
以上是关于k8s实战之理解helm的主要内容,如果未能解决你的问题,请参考以下文章
云原生之kubernetes实战在k8s集群下helm工具的安装与使用
云原生之kubernetes实战使用helm在k8s集群下部署DataEase可视化分析平台
云原生之kubernetes实战在k8s下部署Redis集群
云原生之kubernetes实战在k8s环境下部署Wordpress应用服务