k8s helm实战

Posted luoguo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s helm实战相关的知识,希望对你有一定的参考价值。

helm3使用

一.helm架构

二.helm安装和常见命令

wget https://get.helm.sh/helm-v3.0.2-linux-amd64.tar.gz
tar zvxf helm-v3.0.2-linux-amd64.tar.gz
mv linux-amd64/helm /usr/bin/
#配置国内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 update
#查看配置的存储库
helm repo list
helm search repo stable
helm repo remove aliyun
#常用命令
helm search repo stable/mysql 查看mysql定义
helm list 查看安装应用
helm pull stable/mysql 拉取mysql
helm install mysql.tgz #本地存档安装
helm install path/to/foo #chart目录安装
helm install http://example.com/charts/msql.tgz #完整url

三.helm使用案例之安装mysql

helm install db stable/mysql #安装
helm status db  #查看状态
helm show values stable/mysql > values.yaml  查看配置
#需要提前创建pv
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv33     #pv名称
spec:
  capacity:          #存储能力,一个pv对象都要指定一个存储能力,目前仅支持存储空间的设置
    storage: 8Gi    #存储空间
  accessModes:
    - ReadWriteOnce       #访问模式
      #persistentVolumeReclaimPolicy: Recycle        #回收策略
  nfs:          #服务模式 (nfs、ceph、hostpath等)
    path: /data/k8s-volume/db      #共享数据目录挂载点
    server: 10.206.16.4         #nfs服务器地址
~     

###修改values.yaml
helm show values stable/mysql > values.yaml #到处values
helm install db2 -f values.yaml stable/mysql #应用values
#命令行替代方式
helm install db --set persistence.storageClass="managed-nfs-storage" stable/mysql

四.制作一个helm包

helm create nginx-demo  #创建nginx helm
#删除template里面的内容
kubectl create deployment web --image=nginx --dry-run -o yaml > deployment.yaml
kubectl create deployment web --image=nginx 
kubectl expose deployment web --port=80 --target-port=80 --dry-run -o yaml > service.yaml
kubectl delete deployment web --image=nginx 
helm  install web  --dry-run /root/helm/nginx   #调试是否正确
helm install web /root/helm/nginx  #安装
#定义values参数形式传递给
#deployment.yaml定义
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    chart:  .Chart.Name 
    app:  .Release.Name 
  name:  .Release.Name 
spec:
  replicas:  .Values.replicas 
  selector:
    matchLabels:
      app:  .Values.label 
  strategy: 
  template:
    metadata:
      creationTimestamp: null
      labels:
        app:  .Values.label 
    spec:
      containers:
      - image:  .Values.image : .Values.imageTag 
        name:  .Release.Name 
        resources: 
status: 
#service.yaml参数化
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    chart:  .Chart.Name
    app:  .Release.Name 
  name:  .Release.Name
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app:  .Values.label
status:
  loadBalancer: 
#values.yaml定义
replicas: 3
image: nginx
imageTag: 1.17
label: nginx

# 调试是否正确
helm install web --dry-run /root/nginx/
#安装
helm install web /root/nginx/
#升级
 helm  upgrade  web  /root/helm/nginx
 kubectl  get ep #查看endpoint
#单独设置某个参数的值
 helm upgrade  web --set replicas=2 /root/helm/nginx

以上是关于k8s helm实战的主要内容,如果未能解决你的问题,请参考以下文章

k8s实战之理解helm

k8s实战之理解helm

云原生之kubernetes实战使用helm在k8s集群下部署DataEase可视化分析平台

云原生之kubernetes实战在k8s下部署Redis集群

云原生之kubernetes实战在k8s环境下部署Wordpress应用服务

云原生之kubernetes实战在k8s环境下部署Spark分布式计算平台