安装 Helm3 管理 Kubernetes 应用
文章转载自:http://www.mydlq.club/article/51/
系统环境:
- Helm 版本:v3.5.0
- Kubernetes 版本:v1.18.2
一、Helm 介绍
Helm 是一款能够帮助你管理 Kubernetes 应用的程序,它可以让你创建自己的应用模板(chart),然后模板来创建配置很多可自定义参数,每次我们只需要设定很少或者不设置参数(使用默认参数)就可以将应用部署到 Kubernetes 中,后期就可以通过 Helm 来进行升级、回滚、删除等等操作的管理。
Helm 的 Charts 类似于应用商店,里面存有很多公司提供不同应用的模板,例如常部署的 Redis、Mysql、Nginx 等等,可以让我们很方便的采用别人的模板,然后进行一定的配置,就能在我们的 Kubernetes 集群中创建对应的应用。
Helm 还经常与 CI\CD 配置使用,在这个过程中用于维护应用程序的安装、升级、回滚等操作。
如上,现在学习如何安装、使用 Helm,已经是学习如何使用 Kubernetes 的重要部分了,下面将记录一下这个安装过程。
二、下载并安装 Helm 客户端
访问 Helm Github 下载页面 https://github.com/helm/helm/releases 找到最新的客户端,里面有不同系统下的包,这里我们选择 Linux amd64,然后在 Linux 系统中使用 Wget 命令进行下载。
#下载Helm客户端
$ wget https://get.helm.sh/helm-v3.5.0-linux-amd64.tar.gz
接下来解压下载的包,然后将客户端放置到 /usr/local/bin/ 目录下:
#解压 Helm
$ tar -zxvf helm-v3.5.0-linux-amd64.tar.gz
#复制客户端执行文件到 bin 目录下,方便在系统下能执行 helm 命令
$ cp linux-amd64/helm /usr/local/bin/
注意:helm 客户端需要下载到安装了 kubectl 并且能执行能正常通过 kubectl 操作 kubernetes 的服务器上,否则 helm 将不可用。
安装好k8s集群后默认安装的helm3了
三、添加 Chart 仓库
在 Helm 中默认是不会添加 Chart 仓库,所以这里我们需要手动添加,下面是添加一些常用的 Charts 库,命令如下:
$ helm repo add elastic https://helm.elastic.co
$ helm repo add gitlab https://charts.gitlab.io
$ helm repo add harbor https://helm.goharbor.io
$ helm repo add bitnami https://charts.bitnami.com/bitnami
增加完仓库后,需要执行更新命令,将仓库中的信息进行同步:
$ helm repo update
注意:如果有的仓库不能正常解析,请更换 DNS 地址,在测试过程中,发现有的能正常解析,有的不能。如果还不行,就直接将域名和对应的地址写死在 Host 文件中。
四、Helm 的基本操作
安装应用
通过 Helm 在 Repo 中查询可安装的 Nginx 包:
$ helm search repo nginx
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/nginx 5.3.1 1.17.10 Chart for the nginx server
bitnami/nginx-ingress-controller 5.3.21 0.32.0 Chart for the nginx Ingress controller
bitnami/kong 1.1.4 2.0.4 Kong is a scalable, open source API layer (aka ...
安装测试:
- n:指定安装的 Namespace
$ helm install nginx bitnami/nginx -n mydlqcloud
查看应用状态
$ helm status nginx -n mydlqcloud # 实际操作时具体版本有变化
NAME: nginx
LAST DEPLOYED: Thu Apr 7 16:39:49 2022
NAMESPACE: mydlqcloud
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: nginx
CHART VERSION: 10.0.0
APP VERSION: 1.21.6
** Please be patient while the chart is being deployed **
NGINX can be accessed through the following DNS name from within your cluster:
nginx.mydlqcloud.svc.cluster.local (port 80)
To access NGINX from outside the cluster, follow the steps below:
1. Get the NGINX URL by running these commands:
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
Watch the status with: 'kubectl get svc --namespace mydlqcloud -w nginx'
export SERVICE_PORT=$(kubectl get --namespace mydlqcloud -o jsonpath="{.spec.ports[0].port}" services nginx)
export SERVICE_IP=$(kubectl get svc --namespace mydlqcloud nginx -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo "http://${SERVICE_IP}:${SERVICE_PORT}"
自定义参数安装应用
Helm 中支持使用自定义 yaml 文件和 --set
命令参数对要安装的应用进行参数配置,使用如下:
查看应用 chart 可配置参数
首先使用 helm show values {仓库名称}/{应用名称} 来查看对应应用的可配置参数:
$ helm show values bitnami/nginx
image:
registry: docker.io
repository: bitnami/nginx
tag: 1.17.10-debian-10-r33
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
......(太长,略)
方式一:使用自定义 values.yaml 文件安装应用
(1)、创建自定义配置文件 values.yaml
$ cat > values.yaml << EOF
image:
registry: docker.io
repository: bitnami/nginx
resources:
limits:
cpu: 1000m
memory: 1024Mi
requests:
cpu: 1000m
memory: 1024Mi
EOF
(2)、使用自定义配置文件运行应用
$ helm install -f values.yaml bitnami/nginx
方式二:使用 --set 配置参数进行安装
--set
参数是在使用 helm 命令时候添加的参数,可以在执行 helm 安装与更新应用时使用,多个参数间用","隔开,使用如下:
如果配置文件和 --set 同时使用,则 --set 设置的参数会覆盖配置文件中的参数配置。
$ helm install --set 'registry.registry=docker.io,registry.repository=bitnami/nginx' bitnami/nginx
对于 --set
写配置参数,Helm 官方对于不同的配置类型给出了不同的写法,如下:
卸载应用
卸载应用,并保留安装记录
$ helm uninstall nginx -n mydlqcloud --keep-history
卸载应用,不保留安装记录
$ helm delete nginx -n mydlqcloud
查看全部应用(包含安装和卸载的应用)
$ helm list -n mydlqcloud --all
升级应用
创建新的配置参数文件 values.yaml:
$ cat > values.yaml << EOF
service.type: NodePort
service.nodePorts.http: 30002
EOF
应用更新:
$ helm upgrade -f values.yaml nginx bitnami/nginx -n mydlqcloud
查看新配置是否生效:
$ helm get values nginx -n mydlqcloud
USER-SUPPLIED VALUES:
service.nodePorts.http: 30002
service.type: NodePort
应用回滚
如果升级过程发生错误,进行回滚,首先查看应用的历史版本:
$ helm history nginx -n mydlqcloud
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Fri May 8 06:46:56 2020 superseded nginx-5.3.1 1.17.3 Install complete
2 Fri May 8 06:46:56 2020 deployed nginx-5.3.1 1.17.3 Upgrade complete
知道 REVISION 号后就可以进行回滚操作:
$ helm rollback nginx 1 -n mydlqcloud
Rollback was a success! Happy Helming!
渲染模板
如果想查看通过指定的参数渲染的 Kubernetes 部署资源模板,可以通过下面命令:
$ helm template bitnami/nginx -n mydlqcloud
可以看到渲染的模板如下:
---
# Source: nginx/templates/svc.yaml
apiVersion: v1
kind: Service
metadata:
name: RELEASE-NAME-nginx
labels:
app.kubernetes.io/name: nginx
helm.sh/chart: nginx-5.3.1
app.kubernetes.io/instance: RELEASE-NAME
app.kubernetes.io/managed-by: Helm
spec:
type: LoadBalancer
externalTrafficPolicy: "Cluster"
ports:
- name: http
port: 80
targetPort: http
selector:
app.kubernetes.io/name: nginx
app.kubernetes.io/instance: RELEASE-NAME
---
# Source: nginx/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: RELEASE-NAME-nginx
labels:
app.kubernetes.io/name: nginx
helm.sh/chart: nginx-5.3.1
app.kubernetes.io/instance: RELEASE-NAME
app.kubernetes.io/managed-by: Helm
spec:
selector:
matchLabels:
app.kubernetes.io/name: nginx
app.kubernetes.io/instance: RELEASE-NAME
replicas: 1
template:
metadata:
labels:
app.kubernetes.io/name: nginx
helm.sh/chart: nginx-5.3.1
app.kubernetes.io/instance: RELEASE-NAME
app.kubernetes.io/managed-by: Helm
spec:
containers:
- name: nginx
image: docker.io/bitnami/nginx:1.17.3-debian-10-r63
imagePullPolicy: "IfNotPresent"
ports:
- name: http
containerPort: 8080
安装 Helm3 管理 Kubernetes 应用的更多相关文章
- 三、安装并配置Kubernetes Node节点
1. 安装并配置Kubernetes Node节点 1.1 安装Kubernetes Node节点所需服务 yum -y install kubernetes 通过yum安装kubernetes服 ...
- CentOS7系列--5.3CentOS7中配置和管理Kubernetes
CentOS7配置和管理Kubernetes Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展.如果你曾经用过Docker容器技术部署容器,那么可以将D ...
- K8s集群安装--最新版 Kubernetes 1.14.1
K8s集群安装--最新版 Kubernetes 1.14.1 前言 网上有很多关于k8s安装的文章,但是我参照一些文章安装时碰到了不少坑.今天终于安装好了,故将一些关键点写下来与大家共享. 我安装是基 ...
- [转帖]K8s集群安装--最新版 Kubernetes 1.14.1
K8s集群安装--最新版 Kubernetes 1.14.1 http://www.cnblogs.com/jieky/p/10679998.html 原作者写的比较简单 大略流程和跳转的多一些 改天 ...
- openshift 4.3中安装helm3并通过helm方式部署应用
openshift 4.3中安装helm3并通过helm方式部署应用 简介 Helm是一个命令行界面(CLI)工具,可简化将应用程序和服务部署到OpenShift Container Platform ...
- 在客户端电脑使用 kubectl 远程管理 Kubernetes
日常工作中,可能需要在自己的笔记本电脑上执行 kubectl 命令以管理远程 Linux 服务器上的 Kubernetes 集群.通过调用 kubernetes API 来实现对 Kubernetes ...
- [转]centos6.6 rpm安装与管理
centos6.6 rpm安装与管理 原文地址:http://www.centoscn.com/CentOS/2015/0414/5182.html rpm包管理:安装.升级.卸载.查询.检验 安 ...
- 安装docker管理工具rancher
http://blog.csdn.net/freewebsys/article/details/51136562 docker(2):安装docker管理工具rancher rancher是一个Doc ...
- OpenStack安装部署管理中常见问题解决方法
一.网络问题-network 更多网络原理机制可以参考<OpenStack云平台的网络模式及其工作机制>. 1.1.控制节点与网络控制器区别 OpenStack平台中有两种类型的物理节点, ...
随机推荐
- Tapdata PDK 生态共建计划启动!Doris、OceanBase、PolarDB、SequoiaDB 等十余家厂商首批加入
2022年4月7日,Tapdata 正式启动 PDK 插件生态共建计划,致力于全面连接数据孤岛,加速构建更加开放的数据生态,以期让各行各业的使用者都能释放数据的价值,随时获取新鲜的数据.截至目前, ...
- 【一知半解】synchronied
synchronized是什么 synchronized是java同步锁,同一时刻多个线程对同一资源进行修改时,能够保证同一时刻只有一个线程获取到资源并对其进行修改,因此保证了线程安全性. synch ...
- python特殊运算符
一.逻辑运算符 x = False y = True print(x & y)#仅在布尔中使用 print(x and y)#并且 print(x | y)#仅在布尔中使用 print(x o ...
- WPS前骨干历时10年打造新型软件,Excel用户:我为此改用WPS
办公软件本质是降本增效,我们常见的金山WPS软件.微软office Excel.仓库管理WMS.生产管理MES等都是如此,但是有一款软件却让人变得更"懒惰",而且还是针对于有进取心 ...
- 使用uart串口接收模块接收信号,控制led灯闪烁
功能描述: 使用遵循uart协议的接收模块接收控制信号,用来控制led的闪烁. 设计输入: 1.uart输入信号 2.时钟信号 3.复位信号 4.led信号 设计思路: 总体上:前面已经写了串口接收模 ...
- WPF 实现用户头像选择器
制作一个用户头像选择器仿 WeGame 制作一个用户头像选择Canvas为父控件所实现,展示图片使用Image,Path当作上方的蒙版; Canvas:主要用途方便移动Image,设置ClipToBo ...
- 一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上安装配置Python3.10开发环境
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_200 时光荏苒,过隙白驹,即将进入2022年,著名敏捷开发语言Python也放出了3.10最终版,本次我们来展示一下在不同的系统和 ...
- 163_技巧_Power BI 一键批量建立自定义字段参数
163_技巧_Power BI 一键批量建立自定义字段参数 一.背景 在 2022 年 5 月开始,Power BI 新增了一个非常有用的功能字段参数.再也不用写一串的 SWITCH 了.字段参数的效 ...
- 用VS Code搞Qt6:编译附加模块
上一次水文中,老周所介绍的是编译 Qt 的基础模块-- qtbase.一次性编译所有代码可以一劳永逸,但体积相当大,编译时间较长,CPU负载大发热大,风扇转得猛,电费交得多.因此老周更喜欢分开来编译. ...
- jQuery 查找父元素的函数 parent 和 parents 的区别
函数 描述 parent([expr]) 查找子节点childNode的父节点,不包括祖先节点 parents([expr]) 查找子节点childNode的父节点,包括祖先节点 Talk is ch ...