首页 > 其他分享 >kubernete 部署 local-pv-provisioner

kubernete 部署 local-pv-provisioner

时间:2022-10-13 22:00:35浏览次数:51  
标签:local disks mnt fast provisioner helm kubernete

目的

在K8s中无状态的部署挂载方式选择hostpath方式,当容器重启后,pod漂移到其它节点,数据将丢失。所以选择local provisioner 方式,目的是pod重启后,能走自动寻找到之前部署的host,并将host上文件加载到pod中

1.准备工作

1.1下载部署包

包中含有local provisioner helm chart 

wget https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner/archive/refs/tags/v2.4.0.tar.gz 

1.2安装helm 

curl -OL https://get.helm.sh/helm-v3.6.3-linux-amd64.tar.gz
tar -xf helm-v3.6.3-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin/
# 因为已下载了 v2.4.0.tar.gz ,所以helm不用加上helm源
tar -xf v2.4.0.tar.gz

 2.开始部署

2.1 创建storageclass 

storageclass命名fast-disks

kubectl apply -f deployment/kubernetes/example/default_example_storageclass.yaml

2.2  创建namespace 

kubectl create ns fast-disks

2.3 修改 provisioner  charts values.yaml

注意:修改3处  

classes:
- name: fast-disks # Defines name of storage classe. 这是storage class的名字,接下来创建storage class是必须与这里的名字一致,默认都是fast-disks
hostDir: /mnt/fast-disks    # 加载的目录,这个目录需要提前在每个worker上建好

image: googleimages/local-volume-provisioner:v2.4.0  #镜像需要用这个,原文中镜像是无法下载的

vim helm/provisioner/values.yaml

 2.4  使用helm 创建 部署的yaml文件

helm template -f helm/provisioner/values.yaml lvm-storage --namespace fast-disks ./helm/provisioner > local-volume-provisioner.generated.yaml

helm template -f <path-to-your-values-file> <release-name> --namespace <namespace> ./helm/provisioner > local-volume-provisioner.generated.yaml
edit local-volume-provisioner.generated.yaml

注意:创建yaml成功后,需要修改ClusterRole权限,不然部署后pod启动会报没有足够的权限获取node的信息

 2.5  执行部署

kubectl create -f local-volume-provisioner.generated.yaml

2.6 挂载目录

在每个worker节点上创建目录 /mnt/fast-disks,并执行如下脚本

因上面配置的挂载目录为/mnt/fast-disks,因此需要在/mnt/fast-disks创建一个目录,比如pv1,然后将/dev/vg1/k8s-volume挂载到/mnt/fast-disks/pv1,/mnt/fast-disks目录下的每一个挂载点都会自动生成为一个pv,挂载之后使用kubectl get pv查看
这个需要做个mount欺骗,让worker认为有磁盘挂载

#!/bin/bash
for i in $(seq 1 5); do
  mkdir -p /mnt/fast-disks-bind/vol${i}
  mkdir -p /mnt/fast-disks/vol${i}
  mount --bind /mnt/fast-disks-bind/vol${i} /mnt/fast-disks/vol${i}
done

 创建成功后,会看到每个节点上有5个pv,我是两个节点一共10个pv

 2.7 创建pvc

没有加namespace ,默认default

 查看pv情况,pv和pvc绑定成功

 查看具体创建在worker节点,/mnt/fast-disks/vol4目录

3 测试

部署nginx, 挂载 /etc/nginx/conf.d,挂载成功

注意:local的挂载,是将worker节点上的目录挂载到pod里面,而不是将pod的目录加载到woker节点上

如你部署了一个nginx, 那/etc/nginx/conf.d/defaut.conf 并不会挂载到worker01的/mnt/fast-disks/vol3,所以你在woker01节点上新建一个,看是否同步pod里面

至此,local-pv-provisioner 部署完成

标签:local,disks,mnt,fast,provisioner,helm,kubernete
From: https://www.cnblogs.com/younger5/p/16789781.html

相关文章

  • ThreadLocal原理及使用场景
    ​ThreadLocal意为线程本地变量,用于解决多线程并发时访问共享变量的问题。​所谓的共享变量指的是在堆中的实例、静态属性和数组;对于共享数据的访问受Java的内存模型(JMM......
  • Kubernetes--Ingress资源类型
    Ingress资源类型基于HTTP暴露的每个Service资源均可发布于一个独立的FQDN主机名之上,如“www.ik8s.io”;也可发布于某主机上的URL路径之上,从而将它们整合到同一个Web站......
  • create a kubernetes CRD
    installpackage  pip3installjinja2pip3installyq FunctionforJinja2Render  justpastethefollowcodetoyourterminaljinji2_render(){yf=$1......
  • localStorage的使用
    一、什么是localStorage、sessionStorage在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cook......
  • mac big sur 运行cocos报raise ValueError, ‘unknown locale: %s‘ % localename错误
    ndk,ant,sdk,java_home环境配置正确情况下运行cocos报: raiseValueError,'unknownlocale:%s'%localename ,系统语言为英文版本 控台台输入open-e.bash_profile增......
  • 装饰器、global与nonlocal
    目录global与nonlocal函数名的多种用法闭包函数装饰器简介装饰器推导流程装饰器模版装饰器语法糖作业global与nonlocalglobalmoney=666defindex():globalmone......
  • Kubernetes--创建Ingress资源
    创建Ingress资源Ingress资源是基于HTTP虚拟主机或URL的转发规则,它在资源配置清单的spec字段中嵌套了rules、backend和tls等字段进行定义。下面的示例中定义了一个Ingress......
  • kubernetes核心实战(八)--- service
    13、service四层网络负载创建[root@k8s-master-node1~/yaml/test]#[root@k8s-master-node1~/yaml/test]#vimmy-app.yaml[root@k8s-master-node1~/yaml/test]#catmy-......
  • kubernetes核心实战(二)---Pod+ReplicaSet
    3、podPod是可以在Kubernetes中创建和管理的、最小的可部署的计算单元。Pod(就像在鲸鱼荚或者豌豆荚中)是一组(一个或多个)容器;这些容器共享存储、网络、以及怎样运行这些......
  • kubernetes核心实战(五)--- StatefulSets
    7、StatefulSetsStatefulSet是用来管理有状态应用的工作负载API对象。StatefulSet用来管理Deployment和扩展一组Pod,并且能为这些Pod提供序号和唯一性保证。和Depl......