背景
当你点进了该篇文章对于什么是kubernetes、kafka、zookeeer应该都有所了解了吧。在此就不多加以解释和强调,用两个字描述就是:碉堡了!
本文章的重点
基于k8s 部署单机kafka 挂载本机nfs。
新建一个部署文件目录:mkdir /opt/kubernetes/kafka-k8s,并进入该目录。
那就可以开始上yaml文件:
前奏
1、节点安装nfs
yum -y install nfs-utils
2、创建nfs目录
mkdir -p /nfs/data/
3、修改权限
chmod -R 777 /nfs/data
4、编辑export文件,这个文件就是nfs默认的配置文件
vim /etc/exports
添加以下权限配置
(1) * 任意主机可以使用NFS服务
(2) rw 该主机对该共享目录有读写权限
(3) async 资料会先暂存于内存中,而非直接写入硬盘
(4) no_root_squash 登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限,单词squash是压缩压扁的意思。
/nfs/data *(rw,no_root_squash,sync)
#配置生效
exportfs -r
#查看生效
exportfs
5、启动rpcbind、nfs服务
systemctl restart rpcbind && systemctl enable rpcbind
systemctl restart nfs && systemctl enable nfs
#查看 RPC 服务的注册状况
rpcinfo -p localhost
#showmount测试
showmount -e <你的主机ip>
#node节点安装客户端、开机启动
yum -y install nfs-utils
systemctl start nfs && systemctl enable nfs
6、注册nfs-client-provisioner nfs-client-provisioner.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: nfs-client-provisioner
namespace: mo
---
kind: Deployment
apiVersion: apps/v1
metadata:
namespace: mo
name: nfs-client-provisioner
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
#app.kubernetes.io/instance: nfs-client-provisioner
app: nfs-client-provisioner
template:
metadata:
labels:
app: nfs-client-provisioner
spec:
serviceAccountName: nfs-client-provisioner
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
value: fuseim.pri/ifs
- name: NFS_SERVER
value: <你的主机ip>
- name: NFS_PATH
value: /nfs/data
volumes:
- name: nfs-client-root
nfs:
server: <你的主机ip>
path: /nfs/data
7、StorageClass 注册 storageClass.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-storage
namespace: mo
parameters:
archiveOnDelete: "true" #设置为"false"时删除PVC不会保留数据,"true"则保留数据
mountOptions:
- hard #指定为硬挂载方式
- nfsvers=4 #指定NFS版本
provisioner: fuseim.pri/ifs
reclaimPolicy: Retain
8、给nfs-client-provisioner安排权限 rbacd.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: mo
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