最新要闻
- 全球视讯!特斯拉叫停与比亚迪合作?比亚迪回应:不实信息
- 环球即时:苹果人事巨震:11位高管扎堆离职 库克也要降薪40%
- 微头条丨燃油车 真凉透了吗
- 【天天时快讯】采用全新NT架构:新Windows端QQ首个版本将于24日发布
- 世界资讯:剧版打破多项纪录!爱奇艺考虑拍《狂飙》电影版 网友评论两级分化
- 天天快资讯:免费玩没戏 《暗黑4》不会加入微软XGP:四五百块还是要花的
- 首位华裔奥斯卡影后!杨紫琼84岁母亲喜极而泣 为女儿感到自豪
- 多举措提高职教吸引力 助力职业教育“强起来”“活起来”
- 焦点简讯:曝苹果最快2024年商用MicroLED屏:比OLED更香
- 今日快讯:7月1日普及!我国将全面淘汰传统后视镜 都换汽车电子后视镜:上游供应链已准备好
- 全球今日报丨老人捡钱不愿归还 女孩崩溃下跪引网友愤怒:律师称可起诉 专家喊话不能仗着年龄大
- 环球新动态:适合买二手的硬件只有4个:学会省1000元
- 当前通讯!“自杀式”降价杀红眼:燃油车真凉透了?
- 乘客出地铁黄鹤楼站的统一姿势:集体反站拍摄绝美夜景
- 天天动态:大爷充29万做美容反悔起诉退钱:宣称能打通“任督二脉”等
- 世界聚焦:硅谷银行破产:在营销号那儿 咋又成美国赢了?
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
世界快消息!k8s的Helm 工具安装
一、Helm 概述
1.1 helm 简介
在 Kubernetes 中部署容器云的应用也是一项有挑战性的工作,Helm 就是为了简化在 Kubernetes 中安装部署容器云应用的一个客户端工具。通过 helm 能够帮助开发者定义、安装和升级 Kubernetes 中的容器云应用,同时也可以通过 helm 进行容器云应用的分享。在 Kubeapps Hub 中提供了包括 Redis、MySQL 和 Jenkins 等常见的应用,通过 helm 可以使用一条命令就能够将其部署安装在自己的 Kubernetes 集群中。
Helm 是管理 Kubernetes 包的工具,Helm 能提供下面的能力:
(相关资料图)
- 创建新的 charts(图表)
- 将 charts 打包成 tgz 文件
- 与 chart 仓库交互
- 安装和卸载 Kubernetes 的应用
- 管理使用 Helm 安装的 charts 的生命周期
1.2 helm 架构
Helm 架构由 Helm 客户端、Tiller 服务器端和 Chart 仓库所组成;Tiller 部署在 Kubernetes 中,Helm 客户端从 Chart 仓库中获取 Chart 安装包,并将其安装部署到 Kubernetes 集群中。
1.3 helm 的重要概念
- Charts:是创建 Kubernetes 应用实例的信息集合,也就是一个 helm 的程序包,它包含了运行一个 k8s 应用所有需要的镜像、依赖关系和资源定义等,必要时还会包含 Service 资源定义,它类似于 yum 的 rpm 文件
- Repository:Chart 仓库,用于集中存储和分发 Charts。
- Config:应用程序实例化安装时运行使用的配置信息
- Release:chart 的运行实例,包含特定的 config
1.3.1Helm3 与 Helm2 的区别
Helm2 是 C/S 架构,主要分为客户端 helm 和服务端 Tiller。在 Helm 2 中,Tiller 是作为一个 Deployment 部署在 kube-system 命名空间中,很多情况下,我们会为 Tiller 准备一个 ServiceAccount ,这个 ServiceAccount 通常拥有集群的所有权限。用户可以使用本地 Helm 命令,自由地连接到 Tiller 中并通过 Tiller 创建、修改、删除任意命名空间下的任意资源。
在 Helm 3 中,Tiller 被移除了。新的 Helm 客户端会像 kubectl 命令一样,读取本地的 kubeconfig 文件,使用我们在 kubeconfig 中预先定义好的权限来进行一系列操作。
1.4 helm 组件
在 Helm 中有两个主要的组件,即 Helm 客户端和 Tiller 服务器
1.4.1 helm 客户端
是一个供终端用户使用的命令行工具
客户端负责如下的工作:
- 本地 chart 开发
- 管理仓库
- 与 Tiller 服务器交互(发送需要被安装的 charts、请求关于发布版本的信息、请求更新或者卸载已安装的发布版本)
1.4.2 Tiller 服务器
Tiller 是 helm 的服务器端,一般运行于 kubernetes 集群之上,定义 tiller 的 ServiceAccount,并通过 ClusterRoleBinding 将其绑定至集群管理员角色 cluster-admin,从而使得它拥有集群级别所有的最高权限
Tiller 服务器负责如下的工作:
- 监听来自于 Helm 客户端的请求
- 组合 chart 和配置来构建一个发布
- 在 Kubernetes 中安装,并跟踪后续的发布
- 通过与 Kubernetes 交互,更新或者 chart
二、部署 Helm
官网
Helm 的官方网站 https://helm.sh/
2.1 安装 helm
//下载二进制 Helm client 安装包https://github.com/helm/helm/tags
tar -zxvf helm-v3.6.0-linux-amd64.tar.gzmv linux-amd64/helm /usr/local/bin/helm version
//命令补全source <(helm completion bash)
2.2使用 helm 安装 Chart
//添加常用的 chart 仓库
//添加常用的 chart 仓库,helm repo add bitnami https://charts.bitnami.com/bitnamihelm repo add stable http://mirror.azure.cn/kubernetes/chartshelm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/chartshelm repo add incubator https://charts.helm.sh/incubator
//更新 charts 列表
helm repo update helm repo list
//查看 stable 仓库可用的 charts 列表
helm search repo stable
//删除 incubator 仓库
helm repo remove incubator
//查看 chart 信息
helm show chart stable/mysql #查看指定 chart 的基本信息helm show all stable/mysql #获取指定 chart 的所有信息
//安装 chart
helm install my-redis bitnami/redis [-n default] #指定 release 的名字为 my-redis,-n 指定部署到 k8s 的 namespacehelm install bitnami/redis --generate-name #不指定 release 的名字时,需使用 –generate-name 随机生成一个名字
//查看所有 release
helm ls helm list
//查看指定的 release 状态
helm status my-redis
//删除指定的 release
helm uninstall my-redis
2.3Helm 自定义模板
charts 除了可以在 repo 中下载,还可以自己自定义,创建完成后通过 helm 部署到 k8s。
//拉取 chart
mkdir /opt/helmcd /opt/helmhelm pull stable/mysqllsmysql-1.6.9.tgztar xf mysql-1.6.9.tgzyum install -y treetree mysqlmysql├── Chart.yaml├── README.md├── templates│ ├── configurationFiles-configmap.yaml│ ├── deployment.yaml│ ├── _helpers.tpl│ ├── initializationFiles-configmap.yaml│ ├── NOTES.txt│ ├── pvc.yaml│ ├── secrets.yaml│ ├── serviceaccount.yaml│ ├── servicemonitor.yaml│ ├── service.yaml│ ├── ingress.yaml│ └── tests│ ├── test-configmap.yaml│ └── test.yaml└── values.yaml
可以看到,一个 chart 包就是一个文件夹的集合,文件夹名称就是 chart 包的名称。
#chart 是包含至少两项内容的helm软件包:(1)软件包自描述文件 Chart.yaml,这个文件必须有 name 和 version(chart版本) 的定义(2)一个或多个模板,其中包含 Kubernetes 清单文件:●NOTES.txt:chart 的“帮助文本”,在用户运行 helm install 时显示给用户●deployment.yaml:创建 deployment 的资源清单文件●service.yaml:为 deployment 创建 service 的资源清单文件●ingress.yaml: 创建 ingress 对象的资源清单文件●_helpers.tpl:放置模板助手的地方,可以在整个 chart 中重复使用
//创建自定义的 chart
helm create nginxtree nginxnginx├── charts├── Chart.yaml├── templates│ ├── deployment.yaml│ ├── _helpers.tpl│ ├── hpa.yaml│ ├── ingress.yaml│ ├── NOTES.txt│ ├── serviceaccount.yaml│ ├── service.yaml│ └── tests│ └── test-connection.yaml└── values.yamlcat nginx/templates/deployment.yaml
#在 templates 目录下 yaml 文件模板中的变量(go template语法)的值默认是在 nginx/values.yaml 中定义的,只需要修改 nginx/values.yaml 的内容,也就完成了 templates 目录下 yaml 文件的配置。比如在 deployment.yaml 中定义的容器镜像:image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
cat nginx/values.yaml | grep repository
#以上变量值是在 create chart 的时候就自动生成的默认值,你可以根据实际情况进行修改。
//修改 chart
vim nginx/Chart.yamlapiVersion: v2name: nginx #chart名字description: A Helm chart for Kubernetestype: application #chart类型,application或libraryversion: 0.1.0 #chart版本appVersion: 1.16.0 #application部署版本
vim nginx/values.yamlreplicaCount: 1image: repository: nginx pullPolicy: IfNotPresent tag: "latest" #设置镜像标签imagePullSecrets: []nameOverride: ""fullnameOverride: ""serviceAccount: create: true annotations: {} name: ""podAnnotations: {}podSecurityContext: {} # fsGroup: 2000securityContext: {} # capabilities: # drop: # - ALL # readOnlyRootFilesystem: true # runAsNonRoot: true # runAsUser: 1000service: type: ClusterIP port: 80ingress: enabled: true #开启 ingress className: "" annotations: {} # kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: "true" hosts: - host: www.kgc.com #指定ingress域名 paths: - path: / pathType: Prefix #指定ingress路径类型 tls: [] # - secretName: chart-example-tls # hosts: # - chart-example.localresources: limits: cpu: 100m memory: 128Mi requests: cpu: 100m memory: 128Miautoscaling: enabled: false minReplicas: 1 maxReplicas: 100 targetCPUUtilizationPercentage: 80 # targetMemoryUtilizationPercentage: 80nodeSelector: {}tolerations: []affinity: {}
注意:镜像那修改soscscs/myapp,否则会错
//打包 chart
helm lint nginx #检查依赖和模版配置是否正确helm package nginx #打包 chart,会在当前目录下生成压缩包 nginx-0.1.0.tgz
//部署 chart
helm install nginx ./nginx --dry-run --debug #使用 --dry-run 参数验证 Chart 的配置,并不执行安装helm install nginx ./nginx -n default #部署 chart,release 版本默认为 1或者helm install nginx ./nginx-0.1.0.tgz
#可根据不同的配置来 install,默认是 values.yaml
helm install nginx ./nginx -f ./nginx/values-prod.yamlhelm lsNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSIONnginx default 1 2022-01-18 23:43:06.170248683 +0800 CST deployed nginx-0.1.0 1.16.0 kubectl get pod,svcNAME READY STATUS RESTARTS AGEpod/nginx-67779bd969-kq2fm 1/1 Running 0 58mNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/kubernetes ClusterIP 10.96.0.1443/TCP 37hservice/nginx ClusterIP 10.100.0.171 80/TCP 58s
#部署 ingress
wget https://gitee.com/mirrors/ingress-nginx/raw/nginx-0.30.0/deploy/static/mandatory.yamlwget https://gitee.com/mirrors/ingress-nginx/raw/nginx-0.30.0/deploy/static/provider/baremetal/service-nodeport.yamlkubectl apply -f mandatory.yamlkubectl apply -f service-nodeport.yamlkubectl get pod,svc -n ingress-nginxNAME READY STATUS RESTARTS AGEpod/nginx-ingress-controller-54b86f8f7b-jjlnj 1/1 Running 0 79sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/ingress-nginx NodePort 10.101.36.3480:30665/TCP,443:30363/TCP 6skubectl get ingressNAME CLASS HOSTS ADDRESS PORTS AGEnginx www.kgc.com 10.101.36.34 80 58mvim /etc/hosts.....192.168.80.12 node02 www.kgc.comcurl http://www.kgc.com:30665
//修改为 NodePort 访问后,升级
vim nginx/values.yamlservice: type: NodePort port: 80 nodePort: 30080ingress: enabled: falsevim nginx/templates/service.yamlapiVersion: v1kind: Servicemetadata: name: {{ include "nginx.fullname" . }} labels: {{- include "nginx.labels" . | nindent 4 }}spec: type: {{ .Values.service.type }} ports: - port: {{ .Values.service.port }} targetPort: http protocol: TCP name: http nodePort: {{ .Values.service.nodePort }} #指定 nodePort selector: {{- include "nginx.selectorLabels" . | nindent 4 }}
升级 release,release 版本加 1
//回滚#根据 release 版本回滚
helm history nginx #查看 release 版本历史helm rollback nginx 1 #回滚 release 到版本1helm history nginx #nginx release 已经回滚到版本 1REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION 1 Tue Jan 18 23:43:06 2022 superseded nginx-0.1.0 1.16.0 Install complete2 Wed Jan 19 01:02:42 2022 superseded nginx-0.1.0 1.16.0 Upgrade complete3 Wed Jan 19 01:04:52 2022 deployed nginx-0.1.0
#通常情况下,在配置好 templates 目录下的 kubernetes 清单文件后,后续维护一般只需要修改 Chart.yaml 和 values.yaml 即可。
//在命令行使用 --set 指定参数来部署(install,upgrade)release#注:此参数值会覆盖掉在 values.yaml 中的值,如需了解其它的预定义变量参数,可查看 helm 官方文档。
helm upgrade nginx nginx --set image.tag="1.15"
2.4 helm 仓库
helm 可以使用 harbor 作为本地仓库,将自定义的 chart 推送至 harbor 仓库。
//安装 harbor#上传 harbor-offline-installer-v1.9.1.tgz 和 docker-compose 文件到 /opt 目录
cd /optcp docker-compose /usr/local/bin/chmod +x /usr/local/bin/docker-composetar zxf harbor-offline-installer-v1.9.1.tgzcd harbor/vim harbor.ymlhostname: 192.168.80.13harbor_admin_password: Harbor12345 #admin用户初始密码data_volume: /data #数据存储路径,自动创建chart: absolute_url: enabled #在chart中启用绝对urllog: level: info local: rotate_count: 50 rotate_size: 200M location: /var/log/harbor #日志路径
#安装带有 Clair service 和 chart 仓库服务的 Harbor
./install.sh --with-clair --with-chartmuseum
//安装 push 插件#在线安装
helm plugin install https://github.com/chartmuseum/helm-push
#离线安装
wget https://github.com/chartmuseum/helm-push/releases/download/v0.8.1/helm-push_0.8.1_linux_amd64.tar.gzmkdir ~/.local/share/helm/plugins/helm-pushtar -zxvf helm-push_0.8.1_linux_amd64.tar.gz -C ~/.local/share/helm/plugins/helm-pushhelm repo ls
#登录 Harbor WEB UI 界面,创建一个新项目浏览器访问:http://192.168.80.10 ,默认的管理员用户名和密码是 admin/Harbor12345点击 “+新建项目” 按钮填写项目名称为 “chart_repo”,访问级别勾选 “公开”,点击 “确定” 按钮,创建新项目
#添加仓库
helm repo add harbor http://192.168.80.13/chartrepo/chart_repo --username=admin --password=Harbor12345
#注:这里的 repo 的地址是
#推送 chart 到 harbor 中
cd /opt/helmhelm push nginx harbor
#查看 chart_repo 项目中的 Helm Charts
关键词:
世界快消息!k8s的Helm 工具安装
RPC框架JMH测试-chatgpt自动生成
前端设计模式——代理模式
全球视讯!特斯拉叫停与比亚迪合作?比亚迪回应:不实信息
环球即时:苹果人事巨震:11位高管扎堆离职 库克也要降薪40%
微头条丨燃油车 真凉透了吗
【天天时快讯】采用全新NT架构:新Windows端QQ首个版本将于24日发布
世界资讯:剧版打破多项纪录!爱奇艺考虑拍《狂飙》电影版 网友评论两级分化
每日看点!插件化开发详解
关注:读Java性能权威指南(第2版)笔记16_垃圾回收C
全球滚动:京东小程序CI工具实践
巧妙使用SQL Server的计算列实现项目唯一规则快速定制
天天快资讯:免费玩没戏 《暗黑4》不会加入微软XGP:四五百块还是要花的
首位华裔奥斯卡影后!杨紫琼84岁母亲喜极而泣 为女儿感到自豪
世界微资讯!Redis内存碎片深入分析
多举措提高职教吸引力 助力职业教育“强起来”“活起来”
焦点简讯:曝苹果最快2024年商用MicroLED屏:比OLED更香
今日快讯:7月1日普及!我国将全面淘汰传统后视镜 都换汽车电子后视镜:上游供应链已准备好
全球今日报丨老人捡钱不愿归还 女孩崩溃下跪引网友愤怒:律师称可起诉 专家喊话不能仗着年龄大
环球新动态:适合买二手的硬件只有4个:学会省1000元
K8S-Helm
资讯:04-数据类型
环球动态:在Linux中安装containerd作为kubernetes的容器运行时
当前通讯!“自杀式”降价杀红眼:燃油车真凉透了?
乘客出地铁黄鹤楼站的统一姿势:集体反站拍摄绝美夜景
天天动态:大爷充29万做美容反悔起诉退钱:宣称能打通“任督二脉”等
世界聚焦:硅谷银行破产:在营销号那儿 咋又成美国赢了?
从大厂离职后 游戏程序员们过得咋样?
鲍美瑶男朋友大白_鲍美瑶
即时看!第129篇:JS模块化开发
每日快播:Yus框架之nl子级管控指令
鼻炎患者要注意了!今年花粉高峰期来得猛又早:将持续数月
中消协等倡议推广小份菜、半份菜:鼓励线上点餐推出“菜量自动提醒”功能
焦点速读:《流浪地球2》上映51天票房破40亿 豆瓣评分又涨了!导演自曝第三部
AMD技术岗最高头衔!DX10/11发明人、皓龙处理器之父等升任企业院士
22-23(2)第2次线上赛
【打怪升级】【rocketMq】rocket的持久化
Linux进程与线程的基本概念及区别
天天消息!k8s单节点改为高可用和更新证书
世界滚动:这还是中国乒乓球吗?王牌选手接连倒下,对手赢球后开心改签机票
欧盟约法三章:苹果无法对iPhone 15 USB-C加密来限制充电速度
每日快报!董明珠称很烦吹捧她的员工:不敢讲真话 没法信任
环球滚动:高尔夫球“名场面”或消失!剧版《最后生还者2》将修改原作剧情
马来西亚原装进口:猫山王榴莲雪糕4.9元/支四折发车
焦点讯息:联想YOGA Pro系列升级:新机全系标配32GB内存+1TB存储
环球今亮点!清华博士回应送外卖:不是炒作 曾创业欠下了百万元债务
环球今热点:299元 雷神X3电竞路由器上架:512MB内存 可253台设备同时连
即时看!比亚迪又拿大单:英国公司订购5000辆元Plus EV 价格比国内贵了一倍
全球热点!最强消费级PCIe 5.0 SSD有多强!技嘉大雕510K 2TB评测:顺序读写破10GB/s、4K超100MB/s
全球速讯:使用symbolicatecrash工具符号化Crash日志
环球速看:开心档之HTML 属性
全球热门:博雅互动(00434.HK)将于3月23日举行董事会会议以审批全年业绩
世界消息!官方:着力解决自媒体内容失真问题、清除违规吸粉
董明珠称批评人很快乐:帮助对方成长
不受支持的PC强行升级Win11 烦人的水印又回来了 微软回应
快看:PPT既视感!电视剧《狂飙》更换新片头:曾被指抄袭网飞纪录片
天天最资讯丨哈佛大学研究:体力劳动更多的男性生育能力更强
当前热点-网站https 问题记录
出道即封神的ChatGPT,现在怎么样了?
IntelliJ IDEA使用教程——不使用maven管理下导入jar包
每日精选:使用Docker搭建MinIO集群服务
CommonsBeanUtils1反序列化分析
全球快资讯:董明珠:如果员工经常在我面前拍马屁 我就开除他
当前关注:网店因商品拆封拒绝七天无理由退货:最终被罚4万元
焦点!全村停电 男子用比亚迪DM-i给自家全屋供电 邻居:为啥就他家有电?
丫丫伙食新添胡萝卜:但它没碰
天天快讯:剧版《最后生还者》顺利收官:M站评分达84分
CommonsCollections4反序列化分析
环球视讯!前端开发爬虫首选puppeteer
聚焦:subtotal函数的作用_SUBTOTAL函数的用法
环球观天下!中国移动涨停 市值2.1万亿创历史新高 挑战A股第一贵州茅台
今日聚焦!亲肤0刺激 润本婴儿驱蚊喷雾大瓶9.9(超市39.9)
天天视讯!高蛋白低脂美味!舌里减脂鸡胸肉5袋到手12.9元
头条焦点:净利润翻倍 宁德时代在补什么课?
最新资讯:卖事故车被判退一赔三!车主:特斯拉让我赔代步车50万租金
环球消息!【数字化运营】PagerDuty平台与上海道宁帮助您的数字基础设施中自动化、编排和加速响应
LocalDateTime应用比较日期
玩家不用担心 分析师称微软收购动视暴雪只会伤害索尼
全球观焦点:游客吐槽25元看海洋馆就几个鱼缸:现场和家里客厅一样大
环球百事通!樱桃推出KW 9200 MINI超薄键盘:剪刀脚按键、三模连接
全球快资讯丨雅阁车主第一次坐比亚迪汉 自侃像是土包子进城 信仰崩塌
焦点讯息:美国公示丫丫回国相关申请:快回家了!
全球观速讯丨二进制安全——缓冲区溢出
每日看点!数组指针&一维数组&二维数组ve
【环球时快讯】面试官:如何在千万级数据中查询 10W 的数据,都有什么方案?
网络安全(中职组)-B模块:压缩包破解
全球快资讯:Rancher 管理 Kubernetes 集群
李想:L7、L8、L9是世界上最安全的车 副驾坐的是我老婆
天天快报!美版《西游记》定档!阵容强大:奥斯卡影后杨紫琼饰观音、吴彦祖演美猴王
日本原装进口!雀巢金牌速溶黑咖啡大促 28.9元到手
Android 14不再允许“杀后台”!一键加速App别装了
上汽投资成立股权投资合伙企业 出资额5亿
环球快资讯丨解惑:教你在 Arch Linux 终端上更改 WiFi 密码
教程|在矩池云使用 Stable Diffusion web UI v1.5 模型和 ControlNet 插件
【环球新要闻】应聘软件测试 HR 会问到哪些问题?收藏这一篇就够了!
Nebius Welcome Round (Div. 1 + Div. 2)
环球快讯:火山引擎 DataTester:一个 A/B 测试,将一款游戏的核心收益提升了 8%
环球最资讯丨华擎Intel显卡集体降价 最多20%:RTX 3060瞬间不香了
容声冰箱质量怎么样?容声冰箱怎么调温?
oracle是什么软件?oracle怎么创建表空间?