k8s的PV,PVC自动创建

  此部署使用传统的pv,pvc方式做持久化数据存储,而是使用storageclass调用provisioner,自动给pod创建的pvc分配pv并绑定,从而达到持久化存储的效果。可根据自己需求创建相关的pv,pvc。

安装NFS服务

NFS Server IP(服务端):172.30.93.2
NFS Client IP(客户端):172.30.93.3

NFS Server端安装NFS

操作主机 172.30.93.2

# 1.安装nfs与rpc

yum install -y nfs-utils rpcbind

# 查看是否安装成功

rpm -qa | grep nfs

rpm -qa | grep rpcbind

# 2.创建共享存储文件夹,并授权

mkdir -p /nfs/k8s_data

chmod 777 /nfs/k8s_data/

# 3.配置nfs

vim /etc/exports

/nfs/k8s_data 172.30.93.0/24(rw,no_root_squash,no_all_squash,sync)

# 4.启动服务

systemctl start nfs

systemctl start rpcbind

#添加开机自启

systemctl enable nfs

systemctl enable rpcbind

# 5.配置生效

exportfs -r

# 6.查看挂载情况

showmount -e localhost

#输出下面信息表示正常

 NFS Client安装NFS

操作主机:除了NFS server,其他所有主机

yum -y install nfs-utils

创建持久卷PVC

当很多的数据卷需要创建或者管理时,Kubernetes解决这个问题的方法是提供动态配置PV的方法,可以自动创建PV。管理员可以部署PV配置器(provisioner),然后定义对应的StorageClass,这样开发者在创建PVC的时候就可以选择需要创建存储的类型,PVC会把StorageClass传递给PV provisioner,由provisioner自动创建PV。

所以这里使用了StorageClass的类型当做就持久化方案。

1、创建一个持久卷

pv-nfs.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-nfs
  labels:
    pv: nfs
spec:
  capacity:											#容量为2G
    storage: 2G
  accessModes:										#访问模式为允许多节点以读写方式挂载,可以有多个访问模式
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain				#回收策略
  nfs:												#定义nfs服务器的信息
    server: 172.30.93.2
    path: /home/k8s_data
    readOnly: false

storage修改为目录大小

server ip换成主机的ip

2、创建ServiceAccount账号

rbac.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: nfs-client-provisioner
  namespace: default
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: nfs-client-provisioner-runner
rules:
  - apiGroups: [""]
    resources: ["persistentvolumes"]
    verbs: ["get", "list", "watch", "create", "delete"]
  - apiGroups: [""]
    resources: ["persistentvolumeclaims"]
    verbs: ["get", "list", "watch", "update"]
  - apiGroups: ["storage.k8s.io"]
    resources: ["storageclasses"]
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources: ["events"]
    verbs: ["create", "update", "patch"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: run-nfs-client-provisioner
subjects:
  - kind: ServiceAccount
    name: nfs-client-provisioner
    namespace: default
roleRef:
  kind: ClusterRole
  name: nfs-client-provisioner-runner
  apiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: leader-locking-nfs-client-provisioner
  namespace: default
rules:
  - apiGroups: [""]
    resources: ["endpoints"]
    verbs: ["get", "list", "watch", "create", "update", "patch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: leader-locking-nfs-client-provisioner
  namespace: default
subjects:
  - kind: ServiceAccount
    name: nfs-client-provisioner
    namespace: default
roleRef:
  kind: Role
  name: leader-locking-nfs-client-provisioner
  apiGroup: rbac.authorization.k8s.io

# 创建资源

kubectl apply -f  rbac.yaml

3、创建provisioner

provisioner(也可称为供应者、置备程序、存储分配器)(nfs-client-provisioner.yaml)

修改yaml里面的ip

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-client-provisioner
  labels:
    app: nfs-client-provisioner
  namespace: default
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: nfs-client-provisioner
  template:
    metadata:
      labels:
        app: nfs-client-provisioner
    spec:
      serviceAccountName: nfs-client-provisioner				#这个serviceAccountName就是上面创建ServiceAccount账号
      containers:
        - name: nfs-client-provisioner
          image: quay.io/external_storage/nfs-client-provisioner:latest
          volumeMounts:
            - name: nfs-client-root
              mountPath: /persistentvolumes
          env:
            - name: PROVISIONER_NAME			#PROVISIONER_NAME的值就是本清单的顶部定义的name
              value: nfs-client-provisioner
            - name: NFS_SERVER					#这个NFS_SERVER参数的值就是nfs服务器的IP地址
              value: 172.30.93.2
            - name: NFS_PATH					#这个NFS_PATH参数的值就是nfs服务器的共享目录
              value: /home/k8s_data
      volumes:
        - name: nfs-client-root
          nfs:									#这里就是配置nfs服务器的ip地址和共享目录
            server: 172.30.93.2
            path: /home/k8s_data

# 创建资源

kubectl apply -f nfs-client-provisioner.yaml

4、创建StorageClass

nfs-storageclass.yaml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: nfs-storageclass
provisioner: nfs-client-provisioner				#provisioner参数定义置备程序
reclaimPolicy: Retain							#回收策略,默认是Delete
parameters:
  archiveOnDelete: "false"

# 创建资源:

kubectl apply -f nfs-storageclass.yaml

以上创建好以后,如下显示running

5、测试storageclass是否可用

绑定即可。

  • 15
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
k8s自动离线部署(高可用),百度下载连接(永久有效,且免费) 当前可选安装版本----------------------------------------------------------------------------------------------------------------------------------------- Kubernetes 1.16.2  -->Docker版本18.09.7-3、18.09.8-3、18.09.9-3、19.03.0-3、19.03.1-3、19.03.2-3、19.03.3-3、19.03.4-3 Kubernetes 1.15.4  -->Docker版本18.09.7-3、18.09.8-3、18.09.9-3、19.03.0-3、19.03.1-3、19.03.2-3、19.03.3-3、19.03.4-3 Kubernetes 1.15.3  -->Docker版本18.09.7-3、18.09.8-3、18.09.9-3、19.03.0-3、19.03.1-3、19.03.2-3、19.03.3-3、19.03.4-3 当前---------------------------------------------------------------------------------------------------------------------------------------------------- 版本:kubernetes(k8s)离线自动化安装系统-v2.6(基于CentOS7.4/7.5/7.6/7.7版本) 升级内容: 1、增加多master集群节点部署功能,即配置文件configs/k8shostlist.ini支持多master节点集群加入 2、增加etcd集群分离部署支持,通过systemctl进行管理,即配置文件configs/etcdhostlist.ini支持多master节点集群加入。 3、经过测试,所有master、node节点依次注入停机故障进行测试,所有业务pod实现100%正常漂移,漂移过程中,出现业务服务响应延时增加现象,但无业务响应异常发生。 4、此版本实现100%一键安装,安装前,整理好配置文件,上传安装包到初始安装主机,直接执行安装脚本,无需任何其他手动处理,即可完成etcd、k8s集群环境搭建。 5、此版本实现了除dockerhub外,所有关键模块,无单点的解决方案。 6、此版本高可用解决方案,对于apiServer的endpoint(k8s.master.com:6443),通过配置/etc/hosts(域名:IP,1:n)模拟VIP, 生产环境下,可以给集群内所有master节点分配一个VIP(k8s.master.com),以避免软负载的流量风暴影响运行稳定性 历史---------------------------------------------------------------------------------------------------------------------------------------------------- 版本:kubernetes(k8s)离线自动化安装系统-v2.5(基于CentOS7.4/7.5/7.6/7.7版本) 升级内容: 1、增加traefik部署以及相关资源创建,除master节点外,其余node节点默认开启服务访问权限 2、demo同时支持ingress和NodePort两种服务发布模式。分别通过虚拟域名+path和NodePort端口即可方案demo服务 3、实现k8s已发布service自动发现和适配能力,在线看板实时动态显示 4、主要模块开机自启动脚本优化,以确保集群所有节点重启后,所有服务运行正常 历史---------------------------------------------------------------------------------------------------------------------------------------------------- 版本:K8s离线自动化安装系统-v2.4(基于CentOS7.4及以上版本) 升级内容: 1、私服镜像仓库搭建支撑harbor、docker-registry 2、安装配置,增加私服镜像仓库端口配置,harbor的admin用户密码配置 3、安装进度条,Ctrl+C支持强制退出,支持保持安装进度和卸载 4、安装帮助文档、使用帮助文档更新 历史---------------------------------------------------------------------------------------------------------------------------------------------------- 版本:K8s离线自动化安装系统-v2.3(基于CentOS7.4及以上版本) 升级内容: 1、增加监控模块heapster部署和配置 2、部署kubernetesui/dashboard最新版 3、授权serviceAccount:dashboard账户获取最大访问权限,满足dashboardUI操作需要 4、安装完成界面,增加dashboard访问URL提示,以及登录dashboard门户的账户token 历史----------------------------------------------------------------------------------------------------------------------------------------------------

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值