k8s實(shí)戰之理解helm
2021-11-03 15:08:49
shuai.chang
helm V3的特性:
架構改變,去掉Tiller,直接helm通過(guò)kubeconfig連接apiserver
release名稱(chēng)可以在不同命令空間重用
chart支持放到docker鏡像倉庫
K8S部署一個(gè)應用的流程如下
編寫(xiě) yaml : deployment service ingress
1.0創(chuàng )建 deployment模板
kubectl create deployment nginx --image=nginx --dry-run -o yaml > deployment.yaml
1.1啟動(dòng)nginx pod
kubectl apply -f deployment.yaml
1.2檢查pod服務(wù)
kubectl get pods
2.0創(chuàng )建service資源
kubectl expose deployment nginx --port=80 --target-port=80 --type=NodePort --dry-run -o yaml > service.yaml
2.1.啟動(dòng)service服務(wù)
kubectl apply -f service.yaml
2.2檢查service端口
kubectl get svc
3.0訪(fǎng)問(wèn)該nginx服務(wù)
其中一個(gè)node節點(diǎn)ip+31190端口
kubectl describe pod `web-dc77dd8db-7r8k5`
有問(wèn)題查看構建鏡像的構建
helm 解決了如下管理應用的問(wèn)題
1. 如何將這些yaml作為一個(gè)整體管理?
2. 這些yaml文件如何高效復用?
3. 不支持應用級別的版本管理
開(kāi)始實(shí)戰
wget http://120.78.77.38/file/helm-v3.0.0-linux-amd64.tar.gz
#也可以去官網(wǎng)下載
tar -xf helm-v3.0.0-linux-amd64.tar.gz && cd linux-amd64
mv helm /usr/bin/ #將helm二進(jìn)制文件拷貝到宿主機/bin下
配置helm微軟源地址
helm repo add stable http://mirror.azure.cn/kubernetes/charts/
檢查配置源地址
helm repo list
通過(guò)helm安裝一個(gè)k8s-ui
1.通過(guò)helm安裝軟件
helm search repo weave #去倉庫中查找weave的程序包
helm install ui stable/weave-scope #安裝
kubectl get pods 檢查
2.修改配置文件,并訪(fǎng)問(wèn)
ClusterIP改成 NodePort
kubectl edit svc ui-weave-scope
kubectl get svc #可以看到暴露的端口
http://192.168.106.103:32055/
創(chuàng )建一個(gè)mychart包管理模板
helm create mychart
#刪除templates/目錄下的文件/將之前nginx的deployment和service yaml文件拷貝過(guò)來(lái)
rm -rf /templates/*
mv /root/deployment.yaml ./
mv /root/service.yaml ./
kubectl delete svc web #刪除之前的nginx svc
kubectl delete deployment web #刪除之前的nginx pod
cd /root
helm install web mychart/
執行完會(huì )自動(dòng)創(chuàng )建deployment和service
修改更新helm
helm upgrade web mychart
helm list 檢測服務(wù)
通過(guò)修改helm全局變量模板deployment/service
關(guān)鍵信息創(chuàng )建應用
# vim values.yaml
replicaCount: 1
image: zhangfan5391621/java-demo
tag: latest
label: java-demo
port: 8080
修改deployment.yaml(關(guān)鍵信息為變量定義信息)
# 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(關(guān)鍵信息為變量定義信息)
# 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/ #檢測配置變量是否正確生效
helm install web1 mychart/ 創(chuàng )建應用
通過(guò)定義變量成功創(chuàng )建了應用
查看helm創(chuàng )建的應用
helm 擴容
helm upgraded web1 --set replicas=3 mychart/ #擴容副本3個(gè)
回滾
helm rollback web1 1 #將web1回滾到第一個(gè)版本