惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
Microsoft Azure Blog
Microsoft Azure Blog
aimingoo的专栏
aimingoo的专栏
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
阮一峰的网络日志
阮一峰的网络日志
Martin Fowler
Martin Fowler
B
Blog
The GitHub Blog
The GitHub Blog
T
Tailwind CSS Blog
Stack Overflow Blog
Stack Overflow Blog
L
LangChain Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
DataBreaches.Net
月光博客
月光博客
人人都是产品经理
人人都是产品经理
IT之家
IT之家
GbyAI
GbyAI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
博客园 - Franky
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Cloudflare Blog
C
Check Point Blog
罗磊的独立博客

博客 on 打工人日志

k8s RKE2 cilium L2 + envoy gateway 安装配置 k8s RKE2 vSphere 存储配置 OpenClaw 全能指南:从安装到进阶自动化实战 (2026 最终版) Kubernetes — skywalking + banyanDB APM监控部署 Kubernetes — promtail + loki + grafana 日志系统部署 k8s master 节点 Unauthorized Kubernetes — metalLB + Traefik 部署 Kubernetes — SSL 证书自动更新 Kubernetes — RKE2 + kube-vip + cilium 部署 使用TLSv1.3 升级nginx和openssl Proxmox VE(PVE) 更新到最新版本 kindle 邮件发送失败,错误代码E999 metallb + ingress-nginx + argocd 本地部署 iStoreOS(旁路由)使用openclash实现dns劫持 异常流量分析:图片库服务黑客入侵 openwrt 硬盘扩容 搭建ip地址检索服务 Kubernetes — k8s 手动安装 1.17.9 SELinux 问题:导致端口无法创建,无法访问 【福利】免费!本地部署!去除视频中移动的物体 通知:《打工人日报》迁移到独立板块 KyBook 3 | calibre-web - IOS系统最佳图书伴侣 Tmux 安装和使用教程 DockerHub 加速镜像部署 - 使用cloudflare 代理 docker的零停机部署 SD-webui 批量处理图片 ubuntu 安装 ComfyUI ubuntu 安装 stable-diffusion-webui 测试策略:微服务架构 单元测试:测试单元质量提升
Kubernetes 创建nfs存储类
2021-12-13 · via 博客 on 打工人日志

Kubernetes 创建 nfs 存储类

首先你需要在别的终端上创建 nfs 服务并能提供 nfs 访问
Kubernetes 不包含内部 NFS 驱动。你需要使用外部驱动为 NFS 创建 StorageClass。
https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner
安装 nfs 驱动

安装 nfs 驱动

1#安装nfs客户端
2apt-get install nfs-common
3git clone https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner.git
4cd nfs-subdir-external-provisioner/deploy
5k3s kubectl create -f rbac.yaml
6vim deployment.yaml
  1. 编辑 deployment.yaml
 1apiVersion: apps/v1
 2kind: Deployment
 3metadata:
 4  name: nfs-client-provisioner
 5  labels:
 6    app: nfs-client-provisioner
 7  # replace with namespace where provisioner is deployed
 8  namespace: default
 9spec:
10  replicas: 1
11  strategy:
12    type: Recreate
13  selector:
14    matchLabels:
15      app: nfs-client-provisioner
16  template:
17    metadata:
18      labels:
19        app: nfs-client-provisioner
20    spec:
21      serviceAccountName: nfs-client-provisioner
22      containers:
23        - name: nfs-client-provisioner
24          image: k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2
25          volumeMounts:
26            - name: nfs-client-root
27              mountPath: /persistentvolumes
28          env:
29            - name: PROVISIONER_NAME
30              value: k8s-sigs.io/nfs-subdir-external-provisioner
31            - name: NFS_SERVER
32              value: 192.168.99.235
33            - name: NFS_PATH
34              value: /volume2/nfs-k8s
35      volumes:
36        - name: nfs-client-root
37          nfs:
38            server: 192.168.99.235
39            path: /volume2/nfs-k8s
  1. 定义存储类
1k3s kubectl create -f deployment.yaml
2k3s kubectl create -f class.yaml

测试存储是否正常

1k3s kubectl create -f test-claim.yaml -f test-pod.yaml
2k3s kubectl delete -f test-claim.yaml -f test-pod.yaml

创建有状态 pods(mysql)

创建 mysql-deployment.yaml

 1apiVersion: v1
 2kind: Service
 3metadata:
 4  name: mysql
 5spec:
 6  ports:
 7    - port: 3306
 8      targetPort: 3306
 9  selector:
10    app: mysql
11  clusterIP: None
12  type: LoadBalancer
13---
14apiVersion: apps/v1
15kind: Deployment
16metadata:
17  name: mysql
18spec:
19  selector:
20    matchLabels:
21      app: mysql
22  strategy:
23    type: Recreate
24  template:
25    metadata:
26      labels:
27        app: mysql
28    spec:
29      containers:
30        - image: mysql:5.7
31          name: mysql
32          env:
33            # Use secret in real usage
34            - name: MYSQL_ROOT_PASSWORD
35              value: password
36          ports:
37            - containerPort: 3306
38              name: mysql
39          volumeMounts:
40            - name: mysql-persistent-storage
41              mountPath: /var/lib/mysql
42      volumes:
43        - name: mysql-persistent-storage
44          persistentVolumeClaim:
45            claimName: mysql-pv-claim

创建 mysql-pv.yaml

 1apiVersion: v1
 2kind: PersistentVolume
 3metadata:
 4  name: mysql-pv-volume
 5spec:
 6  storageClassName: managed-nfs-storage
 7  capacity:
 8    storage: 20Gi
 9  accessModes:
10    - ReadWriteOnce
11  nfs:
12    server: 192.168.99.235
13    path: "/volume2/nfs-k8s"
14---
15apiVersion: v1
16kind: PersistentVolumeClaim
17metadata:
18  name: mysql-pv-claim
19spec:
20  storageClassName: managed-nfs-storage
21  accessModes:
22    - ReadWriteMany
23  resources:
24    requests:
25      storage: 20Gi

部署 mysql

1k3s kubectl apply -f mysql-pv.yaml
2k3s kubectl apply -f mysql-deployment.yaml
3k3s kubectl describe deployment mysql