Helm(一)新手必看
官网地址支持中文界面https://helm.shHelm是什么?Helm在K8S当中扮演的角色相当于,在centos中的yum,可以很好的把yaml文件进行打包部署到K8S集群当中。Helm优势如果使用之前的方式部署,少量的应用,比较适合,管理起来不是那么费事儿,但是如果部署微服务项目,可能有几十上百的yaml文件,那么后期管理升级就太费劲了,Helm很好解决了这个问题。Helm的三个概念Hel
官网地址
支持中文界面
https://helm.sh
Helm是什么?
Helm在K8S当中扮演的角色相当于,在centos中的yum,可以很好的把yaml文件进行打包部署到K8S集群当中。
Helm优势
如果使用之前的方式部署,少量的应用,比较适合,管理起来不是那么费事儿,但是如果部署微服务项目,可能有几十上百的yaml文件,那么后期管理升级就太费劲了,Helm很好解决了这个问题。
Helm的三个概念
- Helm:就是一个客户端的命令行工具,可以理解为kubectl。
- tiller:部署在K8S集群当中,用于接收Helm发来的请求(在V3版本以后已经移除)
- chart:将yaml文件集合,使用chart进行管理。
- relese:基于chart的部署实体,一个chart被hemk运行以后都会生成一个relese在K8S集群中运行。
整体可以理解为helm=kubectl,chart=yaml文件集合,relese=pod,初学者可以先行这样理解有个概念,后续在针对性理解。
版本架构变化
图片为“B站尚硅谷”出品
安装helmV3
链接:https://pan.baidu.com/s/1iBO6zi8yeuADZvM88ZR0tA 提取码:46m6
复制这段内容后打开百度网盘手机App,操作更方便哦–来自百度网盘超级会员V2的分享
tar xvf helm-v3.0.0-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin/
helm version
version.BuildInfo{Version:"v3.0.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}
在V3版本中,这样就可以使用了,但是在V2版本中,需要授权,还需要安装tiller,具体V2安装可以查看其他文档,我没写嘿嘿嘿!
添加chart仓库地址
因为官方仓库地址在国外,你懂的。
#微软
helm repo add stable http://mirror.azure.cn/kubernetes/charts
#阿里
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo add aliyuncs https://apphub.aliyuncs.com
#查看是否添加成功
helm repo list
#NAME URL
#stable http://mirror.azure.cn/kubernetes/charts
#aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
#更新源
helm repo update
感觉像不像配置yum仓库??哈哈哈哈
至此,helm就已经部署完毕了,接下来演示helm使用。
快速部署
列出当前所有能使用的chart——类似于docker search
helm search repo nginx
NAME CHART VERSION APP VERSION DESCRIPTION
aliyun/nginx-ingress 0.9.5 0.10.2 An nginx Ingress controller that uses ConfigMap...
aliyun/nginx-lego 0.3.1 Chart for nginx-ingress-controller and kube-lego
aliyuncs/nginx 5.1.5 1.16.1 Chart for the nginx server
aliyuncs/nginx-ingress 1.30.3 0.28.0 An nginx Ingress controller that uses ConfigMap...
aliyuncs/nginx-ingress-controller 5.3.4 0.29.0 Chart for the nginx Ingress controller
aliyuncs/nginx-lego 0.3.1 Chart for nginx-ingress-controller and kube-lego
aliyuncs/nginx-php 1.0.0 nginx-1.10.3_php-7.0 Chart for the nginx php server
stable/nginx-ingress 1.41.3 v0.34.1 DEPRECATED! An nginx Ingress controller that us...
stable/nginx-ldapauth-proxy 0.1.6 1.13.5 DEPRECATED - nginx proxy with ldapauth
stable/nginx-lego 0.3.1 Chart for nginx-ingress-controller and kube-lego
aliyun/gcloud-endpoints 0.1.0 Develop, deploy, protect and monitor your APIs ...
stable/gcloud-endpoints 0.1.2 1 DEPRECATED Develop, deploy, protect and monitor..
安装——神似yum -y install哈哈哈
格式:helm install 新名字 charit
helm install nginx aliyuncs/nginx
#查看
helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
nginx default 1 2021-06-10 02:35:21.579608615 -0400 EDT deployed nginx-5.1.5 1.16.1
#查看详细信息
helm status nginx
NAME: nginx
LAST DEPLOYED: Thu Jun 10 02:35:21 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Get the NGINX URL:
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
Watch the status with: 'kubectl get svc --namespace default -w nginx'
export SERVICE_IP=$(kubectl get svc --namespace default nginx --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}")
echo "NGINX URL: http://$SERVICE_IP/"
pod已经运行了
kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-7f5bc7bbf-wjbsc 1/1 Running 0 3m32s
svc
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 11d
nginx LoadBalancer 10.1.175.118 <none> 80:30360/TCP,443:32118/TCP 17m
测试可用性
访问IP为pod运行在哪个node上的IP,这是因为没有ingress。
curl -I 192.168.100.140:30360
HTTP/1.1 200 OK
Server: nginx/1.16.1
卸载
helm uninstall nginx
自主部署
快速部署是不是很像yum安装?什么依赖包都给你整理好了直接下载使用,自主部署相当于源码包安装,依赖需要自己解决。
创建chart模板
会生成几个模板
helm create web1
ls web1/
charts Chart.yaml templates values.yaml
模板讲解
- charts:没啥鸡毛太大用,存放子chart的地方。 chart.yaml:chart的一些默认值
- Chart.yaml:chart的默认值。
- templates:yaml文件集合的地方。
- values.yaml:全局变量,yanl文件当中可以引用,这也就意味着,你在yaml文件中版本信息引用变量,后期升级直接改values.yaml即可。
创建yaml
这里就不再写了,直接生成了,一定要在templates里编辑yaml文件,别问问什么,“王八的屁股——规定”
cd web1/templates/
rm -rf ./*
#deployment.yaml
kubectl create deployment web1 --image=nginx -o yaml > nginx-deployment.yaml
kubectl create -f nginx-deployment.yaml
kubectl get pod
web1-74b5695598-v89z6 1/1 Running 0 31s
#svc.yaml
kubectl expose deployment web1 --port=80 --target-port=80 --type=NodePort -o yaml > svc.yaml
删除
之前创建只是为了生成svc
kubectl delete -f nginx-deployment.yaml
生成chart
格式:helm install 名称 目录
helm install nginx web1/
NAME: nginx
LAST DEPLOYED: Thu Jun 10 07:28:11 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
查看chart
helm ls
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
nginx default 1 2021-06-10 07:28:11.586300723 -0400 EDT deployed web1-0.1.0 1.16.0
测试
curl -I 192.168.100.140:31743
HTTP/1.1 200 OK
Server: nginx/1.21.0
更多推荐
所有评论(0)