kubernetes应用的包管理工具——Helm的安装、部署、构建Helm Chart、图形化kubeapps的部署

本文介绍了Kubernetes应用的包管理工具Helm的使用,包括Helm的安装、配置第三方Chart库,以及如何构建和部署Helm Chart。此外,还详细阐述了如何通过Helm部署metrics-server、nfs-client-provisioner应用,并重点讲解了部署kubeapps以实现Helm的图形化管理,包括kubeapps的安装、登陆和使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Helm介绍与安装

1.1 Helm介绍

Helm是Kubernetes 应用的包管理工具,主要用来管理 Charts,类似Linux系统的 yum。
Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。

• 对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用 版本并发布应用到软件仓库。
• 对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单 的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序。

在这里插入图片描述

Helm V3 与 V2 最大的区别在于去掉了tiller:
在这里插入图片描述


1.2 Helm安装

官网:https://helm.sh/docs/intro/
下载软件包:helm-v3.1.1-linux-amd64.tar.gz

1.安装Helm

[kubeadm@server1 ~]$ mkdir helm
[kubeadm@server1 ~]$ cd helm/
[kubeadm@server1 helm]$ ls
helm-v3.2.4-linux-amd64.tar.gz
[kubeadm@server1 helm]$ tar zxf helm-v3.2.4-linux-amd64.tar.gz
[kubeadm@server1 helm]$ ls
helm-v3.2.4-linux-amd64.tar.gz  linux-amd64
[kubeadm@server1 helm]$ cd linux-amd64/
[kubeadm@server1 linux-amd64]$ ls
helm  LICENSE  README.md
[kubeadm@server1 linux-amd64]$ mv helm /usr/local/bin/
mv: cannot move ‘helm’ to ‘/usr/local/bin/helm’: Permission denied
[kubeadm@server1 linux-amd64]$ sudo mv helm /usr/local/bin/
[kubeadm@server1 linux-amd64]$ helm 
LICENSE    README.md  

在这里插入图片描述


2.设置helm命令补齐

echo "source <(helm completion bash)" >> ~/.bashrc

[kubeadm@server1 ~]$ echo "source <(helm completion bash)" >> ~/.bashrc
[kubeadm@server1 ~]$ source ~/.bashrc
[kubeadm@server1 ~]$ helm 
completion  env         install     package     repo        show        test        verify      
create      get         lint        plugin      rollback    status      uninstall   version     
dependency  history     list        pull        search      template    upgrade     

在这里插入图片描述


3.Helm 添加第三方 Chart 库

helm repo add stable http://mirror.azure.cn/kubernetes/charts/
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

[kubeadm@server1 ~]$ helm search repo
Error: no repositories configured
[kubeadm@server1 ~]$ helm repo add stable http://mirror.azure.cn/kubernetes/charts/ 
"stable" has been added to your repositories
[kubeadm@server1 ~]$ helm repo list
NAME   URL                                      
stable http://mirror.azure.cn/kubernetes/charts/
[kubeadm@server1 ~]$ helm search repo redis
NAME                             CHART VERSION APP VERSION DESCRIPTION                             
stable/prometheus-redis-exporter 3.4.1         1.3.4       Prometheus exporter for Redis metrics 
stable/redis                     10.5.7        5.0.7       DEPRECATED Open source, advanced key-value stor...
stable/redis-ha                  4.4.4         5.0.6       Highly available Kubernetes implementation of R...
stable/sensu                     0.2.3         0.28        Sensu monitoring framework backed by the Redis ...

在这里插入图片描述

3. Helm 部署

helm search repo redis 查询
helm show values stable/redis-ha 查看部署值

支持多种安装方式:(helm默认读取~/.kube/config信息连接k8s集群)
helm install redis-ha stable/redis-ha
helm install redis-ha redis-ha-4.4.0.tgz
helm install redis-ha path/redis-ha
helm install redis-ha https://example.com/charts/redis-ha-4.4.0.tgz

helm pull stable/redis-ha 拉取应用到本地
helm status redis-ha 查看状态
helm uninstall redis-ha 卸载

在这里插入图片描述

[kubeadm@server1 ~]$ cd helm/
[kubeadm@server1 helm]$ helm pull stable/redis-ha 
[kubeadm@server1 helm]$ ls
helm-v3.2.4-linux-amd64.tar.gz  linux-amd64  redis-ha-4.4.4.tgz
[kubeadm@server1 helm]$ tar zxf redis-ha-4.4.4.tgz
[kubeadm@server1 redis-ha]$ helm install redis-ha .
NAME: redis-ha
LAST DEPLOYED: Thu Jul  9 17:15:36 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
Redis can be accessed via port 6379 and Sentinel can be accessed via port 26379 on the following DNS name from within your cluster:
redis-ha.default.svc.cluster.local
To connect to your Redis server:
1. Run a Redis pod that you can use as a client:
   kubectl exec -it redis-ha-server-0 sh -n default
2. Connect using the Redis CLI:
  redis-cli -h redis-ha.default.svc.cluster.local
[kubeadm@server1 redis-ha]$ kubectl get pod
NAME                                      READY   STATUS    RESTARTS   AGE
nfs-client-provisioner-7cc765bb86-24bq5   1/1     Running   0          34m
php-apache-59b89c65c6-rf4s9               1/1     Running   0          51m
redis-ha-server-0                         2/2     Running   0          32s
redis-ha-server-1                         2/2     Running   0          25s
redis-ha-server-2                         2/2     Running   0          21s
[kubeadm@server1 redis-ha]$ kubectl get pvc
NAME                     STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS          AGE
data-redis-ha-server-0   Bound    pvc-8db44c56-8957-4750-be81-ceee8d043c3d   10Gi       RWO            managed-nfs-storage   36s
data-redis-ha-server-1   Bound    pvc-3228e07f-86b1-4e37-95ca-4ce172fdced6   10Gi       RWO            managed-nfs-storage   29s
data-redis-ha-server-2   Bound    pvc-629f15bf-11ab-43c0-ada7-6dc1a6c41129   10Gi       RWO            managed-nfs-storage   25s

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
会轮询显示在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实现主从复制

kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] -- [COMMAND] instead.
Defaulting container name to redis.
Use 'kubectl describe pod/redis-ha-server-0 -n default' to see all of the containers in this pod.
$ redis-cli -h redis-ha-server-0.redis-ha
redis-ha-server-0.redis-ha:6379> set name redhat
OK
redis-ha-server-0.redis-ha:6379> get name
"redhat"
redis-ha-server-0.redis-ha:6379> 
$ redis-cli -h redis-ha-server-1.redis-ha
redis-ha-server-1.redis-ha:6379> get name
"redhat"
redis-ha-server-1.redis-ha:6379> 
$ redis-cli -h redis-ha-server-2.redis-ha
redis-ha-server-2.redis-ha:6379> get name
"redhat"

在这里插入图片描述
实现高可用在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


4.构建 Helm Chart

1.构建一个 Helm Chart

[kubeadm@server1 helm]$ helm create mycharm
Creating mycharm
[kubeadm@server1 helm]$ ls
helm-v3.2.4-linux-amd64.tar.gz  linux-amd64  mycharm  redis-ha  redis-ha-4.4.4.tgz
[kubeadm@server1 helm]$ cd mycharm/
[kubeadm@server1 mycharm]$ ls
charts  Chart.yaml  templates  values.yaml
[kubeadm@server1 mycharm]$ tree .
.
├── charts
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── NOTES.txt
│   ├── serviceaccount.yaml
│   ├── service.yaml
│   └── tests
│       └── test-connection.yaml
└── values.yaml

在这里插入图片描述


2.编写mychart的应用描述信息和编写应用部署信息

mychart的应用描述信息
在这里插入图片描述
应用部署信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值