kubernetes:helm的部署、应用(部署nfsclass、部署nginx-ingress、升级和回滚)

1. helm简介

Helm是Deis (https://deis.com/) 开发的一个用于kubernetes的包管理器。每个包称为一个Chart,一个Chart是一个目录。类似Linux系统的yum。

Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。

对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。

对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序。

Helm当前最新版本 v3.2.0 官网:https://helm.sh/docs/intro/

2. helm安装

使用了html-v3.2.0的安装包helm-v3.2.0-linux-amd64.tar.gz

[root@server2 ~]# tar zxf helm-v3.2.0-linux-amd64.tar.gz

[root@server2 ~]# cd linux-amd64/
[root@server2 linux-amd64]# ls
helm  LICENSE  README.md

[root@server2 linux-amd64]# cp helm /usr/local/bin/

命令补齐

[kubeadm@server2 ~]$ echo "source <(helm completion bash)" >> ~/.bashrc

重新登陆生效

[root@server2 ~]# su - kubeadm
Last login: Mon May 11 09:16:14 CST 2020 on pts/1
Last failed login: Mon May 11 11:38:46 CST 2020 on pts/1
There was 1 failed login attempt since the last successful login.
[kubeadm@server2 ~]$ helm 
completion  dependency  get         install     list        plugin      repo        search      status      test        upgrade     version
create      env         history     lint        package     pull        rollback    show        template    uninstall   verify  

Helm 添加第三方 Chart 库:

[kubeadm@server2 ~]$ helm repo add stable http://mirror.azure.cn/kubernetes/charts/
"stable" has been added to your repositories
[kubeadm@server2 ~]$ helm repo list
NAME  	URL                                      
stable	http://mirror.azure.cn/kubernetes/charts/

[kubeadm@server2 ~]$ helm search repo redis
NAME                            	CHART VERSION	APP VERSION	DESCRIPTION                                       
stable/prometheus-redis-exporter	3.4.0        	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部署应用

[kubeadm@server2 ~]$ helm search repo redis-ha -l  # 可以查看redis-ha的所有版本
NAME           	CHART VERSION	APP VERSION	DESCRIPTION                                       
stable/redis-ha	4.4.4        	5.0.6      	Highly available Kubernetes implementation of R...
stable/redis-ha	4.4.3        	5.0.6      	Highly available Kubernetes implementation of R...
stable/redis-ha	4.4.2        	5.0.6      	Highly available Kubernetes implementation of R...
stable/redis-ha	4.4.1        	5.0.6      	Highly available Kubernetes implementation of R...
stable/redis-ha	4.4.0        	5.0.6      	Highly available Kubernetes implementation of R...
stable/redis-ha	4.3.4        	5.0.6      	Highly available Kubernetes implementation of R...
[kubeadm@server2 ~]$ helm pull stable/redis-ha # 拉取应用到本地,默认拉取最新版本

[kubeadm@server2 ~]$ ls  # 拉取了一个redis-ha的压缩包
components.yaml  dashrbac.yaml  kube-flannel.yml  manifest  recommended.yaml  redis-ha-4.4.4.tgz
[kubeadm@server2 ~]$ mkdir helm
[kubeadm@server2 ~]$ tar zxf redis-ha-4.4.4.tgz -C helm/  # 解压到helm目录
[kubeadm@server2 redis-ha]$ sudo yum install tree -y
[kubeadm@server2 redis-ha]$ tree .  # 查看目录结构
.
├── Chart.yaml
├── ci
│   └── haproxy-enabled-values.yaml
├── OWNERS
├── README.md
├── templates
│   ├── _configs.tpl
│   ├── _helpers.tpl
│   ├── NOTES.txt
│   ├── redis-auth-secret.yaml
│   ├── redis-ha-announce-service.yaml
│   ├── redis-ha-configmap.yaml
│   ├── redis-ha-exporter-script-configmap.yaml
│   ├── redis-ha-pdb.yaml
│   ├── redis-haproxy-deployment.yaml
│   ├── redis-haproxy-serviceaccount.yaml
│   ├── redis-haproxy-servicemonitor.yaml
│   ├── redis-haproxy-service.yaml
│   ├── redis-ha-rolebinding.yaml
│   ├── redis-ha-role.yaml
│   ├── redis-ha-serviceaccount.yaml
│   ├── redis-ha-servicemonitor.yaml
│   ├── redis-ha-service.yaml
│   ├── redis-ha-statefulset.yaml
│   └── tests
│       ├── test-redis-ha-configmap.yaml
│       └── test-redis-ha-pod.yaml
└── values.yaml

3 directories, 25 files
3.1 部署一个redis
[kubeadm@server2 redis-ha]$ vim values.yaml
image:
  repository: redis
  tag: 5.0.6-alpine
  pullPolicy: IfNotPresent
需要redis:5.0.6-alpine的镜像
[root@server1 harbor]# docker pull redis:5.0.6-alpine
[root@server1 harbor]# docker tag redis:5.0.6-alpine reg.westos.org/library/redis:5.0.6-alpine
[root@server1 harbor]# docker push reg.westos.org/library/redis
[kubeadm@server2 redis-ha]$ kubectl create namespace redis  # 创建一个redis的namespace
namespace/redis created

[kubeadm@server2 redis-ha]$ helm install redis-ha . -n redis  # 名字redis-ha,.在当前目录,-n redis 指定namepace为redis
NAME: redis-ha
LAST DEPLOYED: Mon May 11 13:04:20 2020
NAMESPACE: redis
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.redis.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 redis

2. Connect using the Redis CLI:

  redis-cli -h redis-ha.redis.svc.cluster.local

[kubeadm@server2 redis-ha]$ kubectl -n redis get all  # redis-ha部署完成
NAME                    READY   STATUS    RESTARTS   AGE
pod/redis-ha-server-0   2/2     Running   0          2m16s
pod/redis-ha-server-1   2/2     Running   0          107s
pod/redis-ha-server-2   0/2     Pending   0          77s

NAME                          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)              AGE
service/redis-ha              ClusterIP   None             <none>        6379/TCP,26379/TCP   2m19s
service/redis-ha-announce
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值