快速開始
• Clone 項目
git clone https://github.com/nacos-group/nacos-k8s.git
• 簡單例子
如果你使用簡單方式快速啟動,請注意這是沒有使用持久化卷的,可能存在資料丟失風險:
cd nacos-k8s chmod +x quick-startup.sh ./quick-startup.sh
• 測試
o 服務註冊
• curl -X PUT 'http://cluster-ip:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'
o 服務發現
• curl -X GET 'http://cluster-ip:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName'
o 發佈配置
• curl -X POST "http://cluster-ip:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=helloWorld"
o 獲取配置
curl -X GET "http://cluster-ip:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"
部署 NFS
創建角色
kubectl create -f deploy/nfs/rbac.yaml
如果的K8S命名空間不是default,請在部署RBAC之前執行以下腳本:
# Set the subject of the RBAC objects to the current namespace where the provisioner is being deployed $ NS=$(kubectl config get-contexts|grep -e "^\*" |awk '{print $5}') $ NAMESPACE=${NS:-default} $ sed -i'' "s/namespace:.*/namespace: $NAMESPACE/g" ./deploy/nfs/rbac.yaml
創建 ServiceAccount 和部署 NFS-Client Provisioner
kubectl create -f deploy/nfs/deployment.yaml
創建 NFS StorageClass
kubectl create -f deploy/nfs/class.yaml
驗證NFS部署成功
kubectl get pod -l app=nfs-client-provisioner
部署資料庫
部署主庫
cd nacos-k8s
kubectl create -f deploy/mysql/mysql-master-nfs.yaml
部署從庫
cd nacos-k8s
kubectl create -f deploy/mysql/mysql-slave-nfs.yaml
驗證資料庫是否正常工作
# master kubectl get pod NAME READY STATUS RESTARTS AGE mysql-master-gf2vd 1/1 Running 0 111m # slave kubectl get pod mysql-slave-kf9cb 1/1 Running 0 110m
部署Nacos
修改 deploy/nacos/nacos-pvc-nfs.yaml
data: mysql.master.db.name: "主庫名稱" mysql.master.port: "主庫埠" mysql.slave.port: "從庫埠" mysql.master.user: "主庫用戶名" mysql.master.password: "主庫密碼"
創建 Nacos
kubectl create -f nacos-k8s/deploy/nacos/nacos-pvc-nfs.yaml
驗證Nacos節點啟動成功
kubectl get pod -l app=nacos NAME READY STATUS RESTARTS AGE nacos-0 1/1 Running 0 19h nacos-1 1/1 Running 0 19h nacos-2 1/1 Running 0 19h
擴容測試
在擴容前,使用 kubectl exec獲取在pod中的Nacos集群設定檔資訊
for i in 0 1; do echo nacos-$i; kubectl exec nacos-$i cat conf/cluster.conf; done
StatefulSet控制器根據其序數索引為每個Pod提供唯一的主機名稱。 主機名稱採用 - 的形式。 因為nacos StatefulSet的副本欄位設置為2,所以當前集群檔中只有兩個Nacos節點位址
nacos-nodeport-svc.yaml
apiVersion: v1 kind: Service metadata: name: nacos-nodeport labels: app: nacos annotations: service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" spec: ports: - port: 8848 name: server nodePort: 31390 selector: app: nacos type: NodePort