一、下載文件git
https://github.com/dotbalo/k8s/
二、建立namespacegithub
kubectl create namespace public-service
若是不使用public-service,須要更改全部yaml文件的public-service爲你namespace。後端
sed -i "s#public-service#YOUR_NAMESPACE#g" *.yaml
三、建立持久化pvapi
此處採用的是靜態PV方式,後端使用的是NFS,爲了方便擴展可使用動態PV較好。cookie
[root@nfs rabbitmq-cluster-1]# cat /etc/exports /k8s/rmq-cluster/rabbitmq-cluster-1/ *(rw,sync,no_subtree_check,no_root_squash) /k8s/rmq-cluster/rabbitmq-cluster-2/ *(rw,sync,no_subtree_check,no_root_squash) /k8s/rmq-cluster/rabbitmq-cluster-3/ *(rw,sync,no_subtree_check,no_root_squash)
[root@k8s-master01 rabbitmq-cluster]# pwd /root/efk/rabbitmq-cluster [root@k8s-master01 rabbitmq-cluster]# ls rabbitmq-cluster-ss.yaml rabbitmq-pv.yaml rabbitmq-secret.yaml rabbitmq-service-lb.yaml rabbitmq-configmap.yaml rabbitmq-rbac.yaml rabbitmq-service-cluster.yaml README.md
建立集羣app
[root@k8s-master01 rabbitmq-cluster]# kubectl apply -f .
四、查看測試
pods、pv、pvcurl
[root@k8s-master01 rabbitmq-cluster]# kubectl get pods -n public-service NAME READY STATUS RESTARTS AGE rmq-cluster-0 1/1 Running 0 40m rmq-cluster-1 1/1 Running 0 39m rmq-cluster-2 1/1 Running 0 39m
[root@k8s-master01 rabbitmq-cluster]# kubectl get pv -n public-service NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pv-rmq-1 4Gi RWX Recycle Bound public-service/rabbitmq-storage-rmq-cluster-2 rmq-storage-class 49m pv-rmq-2 4Gi RWX Recycle Bound public-service/rabbitmq-storage-rmq-cluster-1 rmq-storage-class 49m pv-rmq-3 4Gi RWX Recycle Bound public-service/rabbitmq-storage-rmq-cluster-0 rmq-storage-class 49m [root@k8s-master01 rabbitmq-cluster]# kubectl get pvc -n public-service NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE rabbitmq-storage-rmq-cluster-0 Bound pv-rmq-3 4Gi RWX rmq-storage-class 48m rabbitmq-storage-rmq-cluster-1 Bound pv-rmq-2 4Gi RWX rmq-storage-class 48m rabbitmq-storage-rmq-cluster-2 Bound pv-rmq-1 4Gi RWX rmq-storage-class 48m [root@k8s-master01 rabbitmq-cluster]#
services,此時使用的NodePort方式,可改成traefik模式spa
[root@k8s-master01 rabbitmq-cluster]# kubectl get services -n public-service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE rmq-cluster ClusterIP None <none> 5672/TCP 1h rmq-cluster-balancer NodePort 10.107.221.85 <none> 15672:30051/TCP,5672:31892/TCP 1h
五、訪問測試code
經過NodePort的端口
帳號密碼:guest
六、存在問題
上述yaml中有個secret
[root@k8s-master01 rabbitmq-cluster]# cat rabbitmq-secret.yaml kind: Secret apiVersion: v1 metadata: name: rmq-cluster-secret namespace: public-service stringData: cookie: ERLANG_COOKIE password: RABBITMQ_PASS url: amqp://RABBITMQ_USER:RABBITMQ_PASS@rmq-cluster-balancer username: RABBITMQ_USER
定義了username和password,而後在rabbitmq-cluster-ss.yaml引用做爲默認帳號密碼,並且在configmap中也禁用了guest,可是沒有生效。此問題待解決。
贊助做者: