一、所有k8s节点安装glusterfs客户端
安装客户端
yum install -y glusterfs glusterfs-fuse
在hosts中加入所有gluster的节点
vim /etc/hosts
172.19.12.193 gluster-manager
172.19.12.194 gluster-node1
172.19.12.195 gluster-node2
二、在kubernetes主节点部署
新建名称空间
vim portal-ns1.yaml
piVersion: v1
kind: Namespace
metadata:
name: gcgj-portal
新建endpoints
cd /opt/glusterfs
curl -O https://raw.githubusercontent.com/kubernetes/kubernetes/master/examples/volumes/glusterfs/glusterfs-endpoints.json
vim glusterfs-endpoints.json
{
"kind": "Endpoints",
"apiVersion": "v1",
"metadata": {
"name": "glusterfs-cluster",
"namespace": "gcgj-portal" #如果后面要调用的pod有ns则一定要写ns
},
"subsets": [
{
"addresses": [
{
"ip": "172.19.12.193"
}
],
"ports": [
{
"port": 1990 #这个端口自己随便写
}
]
}
]
}
kubectl apply -f glusterfs-endpoints.json
kubectl get ep
新建服务
curl -O https://raw.githubusercontent.com/kubernetes/kubernetes/master/examples/volumes/glusterfs/glusterfs-service.json
vim glusterfs-service.json
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "glusterfs-cluster",
"namespace": "gcgj-portal"
},
"spec": {
"ports": [
{"port": 1990}
]
}
}
kubectl apply -f glusterfs-service.json
kubectl get svc
新建glusterfs的pod
curl -O https://raw.githubusercontent.com/kubernetes/kubernetes/master/examples/volumes/glusterfs/glusterfs-pod.json
vim glusterfs-pod.json
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "glusterfs",
"namespace": "gcgj-portal"
},
"spec": {
"containers": [
{
"name": "glusterfs",
"image": "nginx",
"volumeMounts": [
{
"mountPath": "/mnt/glusterfs", #自定义本地挂载glusterfs的目录
"name": "glusterfsvol"
}
]
}
],
"volumes": [
{
"name": "glusterfsvol",
"glusterfs": {
"endpoints": "glusterfs-cluster",
"path": "models",
"readOnly": true
}
}
]
}
}
kubectl apply -f glusterfs-pod.json
kubectl get pods
创建pv
vim glusterfs-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: gluster-dev-volume
spec:
capacity:
storage: 8Gi #pv申请的容量大小
accessModes:
- ReadWriteMany
glusterfs:
endpoints: "glusterfs-cluster"
path: "models"
readOnly: false
kubectl apply -f glusterfs-pv.yaml
kubectl get pv
创建pvc
vim glusterfs-pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: glusterfs-gcgj
namespace: gcgj-portal
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 8Gi
kubectl apply -f glusterfs-pvc.yaml
kubectl get pvc
新建应用,测试能否正常挂载
cd /opt/kube-gcgj/portal-test
vim portal-rc1.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: gcgj-portal
namespace: gcgj-portal
spec:
replicas: 1
selector:
app: portal
template:
metadata:
labels:
app: portal
spec:
containers:
- image: 172.19.2.139/gcgj/portal:latest
name: portal
resources:
limits:
cpu: "1"
memory: 2Gi
ports:
- containerPort: 8080
volumeMounts:
- mountPath: /usr/local/tomcat/logs #需要挂载的目录
name: gcgj-portal-log #这里的名字和下面的volumes的name要一致
volumes:
- name: gcgj-portal-log
persistentVolumeClaim:
claimName: glusterfs-gcgj #这里为pvc的名字
vim portal-svc1.yaml
apiVersion: v1
kind: Service
metadata:
name: gcgj-portal
namespace: gcgj-portal
spec:
ports:
- name: portal-svc
port: 8080
targetPort: 8080
nodePort: 30082
selector:
app: portal
type: NodePort
kubectl create -f /opt/kube-gcgj/portal-test
应用启动后到gluster集群对应的目录中查看是否有新日志生成