(k8s)Kubernetes本地存储接入

hostpath也是本地存储,为什么要使用local模式的存储呢?

因为创建deployment时,无需指定调度具体节点。会自动调度到pv所在的节点运行。

Tip:local模式存储节点异常后,意味着pod启动不起来

1、创建local模式存储类

复制代码
$ cat <<EOF | kubectl apply -f -
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
EOF

2、创建pv

复制代码
$ cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolume
metadata:
  name: test
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: local-storage
  local:
    path: /data/test-local-pv
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - k8s-node01
EOF

3、创建pvc

复制代码
$ cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-local-pvc
  namespace: default
spec:
  storageClassName: local-storage
  volumeMode: Filesystem
  accessModes: 
  - ReadWriteOnce
  resources:
    requests:
      storage: 10G
EOF

Tip:local模式存储,创建好pv和pvc并不会马上绑定。因为local模式的存储类volumeBindingMode 的值必须是 WaitForFirstConsumer ,所以只有当pod使用pvc时,pv和pvc才进行绑定的。

4、创建业务容器并挂载

复制代码
$ cat <<EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tools
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tools
  template:
    metadata:
      labels:
        app: tools
    spec:
      containers:
      - name: tools
        image: registry.cn-guangzhou.aliyuncs.com/jiaxzeng6918/tools:v1.1
        volumeMounts:
        - name: data
          mountPath: /data
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: test-local-pvc
EOF

5、查看运行pod运行节点

复制代码
$ kubectl get pod -owide
NAME                     READY   STATUS    RESTARTS   AGE     IP             NODE         NOMINATED NODE   READINESS GATES
tools-6f6f7cd4bf-jjlbg   1/1     Running   0          3m16s   10.244.0.209   k8s-node01   <none>           <none>

6、验证pod是否挂载成功

复制代码
$ kubectl exec -it tools-6f6f7cd4bf-jjlbg -- df -h /data
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3        62G  4.1G   58G   7% /data

Tip:local模式存储不能限制存储大小

相关推荐
MC丶科3 小时前
软考架构师90天冲刺|DAY38·第二阶段综合测试-分布式与云原生
分布式·云原生·架构·serverless·service_mesh·软考架构师
hm宋3 小时前
ZooKeeper 容灾切换免重启实践:域名化配置与客户端自动迁移
分布式·zookeeper·云原生
张洛闻Eren4 小时前
云原生k8s【第七课】:集群监控与可观测性
linux·运维·docker·云原生·容器·kubernetes·k8s
Y38153266214 小时前
Docker Compose 服务依赖与健康检查:healthcheck 让容器按正确顺序启动
运维·docker·容器
2601_9652354815 小时前
快速了解docker
docker·容器·dubbo
李昊哲小课16 小时前
Deepin 25 上安装 Docker CE 实战记录
运维·docker·容器·deepin
重生之我来学Python18 小时前
Docker套装的简介、安装、超级详细教程
linux·docker·容器·eureka·github
大大大大晴天️20 小时前
用 Helm、CRD 与 Operator 管大数据:声明式运维如何替代脚本化部署
大数据·云原生
LRL_21 小时前
深入浅出 Kubernetes 控制器:Deployment 与 StatefulSet 核心区别全景图
云原生·容器·kubernetes
起名真的太难了1 天前
Docker 项目部署
docker·容器·eureka