k8s部署nacos
- 环境信息
1.AWS环境 2.kubernetes 3.数据库aws rds
4.istio ingress
- 参考文档
https://github.com/foxiswho/k8s-nacos-sentinel-rocketmq-zipkin-elasticsearch-redis-mysql
- 准备
1.首先AWS开通RDS数据库,准备好初始化数据库的表结构,否则会出现问题 2.准备好k8s环境 3.istio ingress进行出网域➜ nacos cat nacos-no-pvc.yaml
➜ nacos ll total 56 -rw-r--r-- 1 zzy staff 412B 1 20 18:08 ingress-ap.yaml -rw-r--r-- 1 zzy staff 123B 1 20 18:02 ingress-denyall.yaml -rw-r--r-- 1 zzy staff 2.8K 1 21 18:00 nacos-no-pvc.yaml -rw-r--r-- 1 zzy staff 3.0K 1 21 17:49 nacos-no-pvc.yaml.bad -rw-r--r-- 1 zzy staff 2.7K 1 21 17:12 nacos-no-pvc.yaml20220120 -rw-r--r-- 1 zzy staff 639B 1 21 19:24 nacos-test-ingress.yaml -rw-r--r-- 1 zzy staff 374B 1 21 17:35 ubuntu.yaml ➜ nacos cat nacos-no-pvc.yaml20220120 #GG##使用自建数据库;使用Ingress发布配置后台### --- apiVersion: v1 kind: Service metadata: name: nacos-headless labels: app: nacos-headless spec: ports: - port: 8848 name: server targetPort: 8848 selector: app: nacos --- apiVersion: v1 kind: ConfigMap metadata: name: nacos-cm data: mysql.host: "xxxxxxxx.ap-southeast-1.rds.amazonaws.com" ##AWS数据库地址 mysql.db.name: "nacos" ##数据库名称 mysql.port: "3306" ##数据库端口 mysql.user: "mysqluser" ##数据库用户 mysql.password: "123456" ##数据库用户密码 --- apiVersion: apps/v1 kind: StatefulSet metadata: name: nacos spec: serviceName: nacos-headless replicas: 3 template: metadata: labels: app: nacos annotations: pod.alpha.kubernetes.io/initialized: "true" spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: "app" operator: In values: - nacos-headless topologyKey: "kubernetes.io/hostname" containers: - name: k8snacos imagePullPolicy: Always image: nacos/nacos-server:latest resources: requests: memory: "2Gi" cpu: "1000m" ports: - containerPort: 8848 name: client env: - name: NACOS_REPLICAS value: "3" - name: MYSQL_SERVICE_HOST valueFrom: configMapKeyRef: name: nacos-cm key: mysql.host - name: MYSQL_SERVICE_DB_NAME valueFrom: configMapKeyRef: name: nacos-cm key: mysql.db.name - name: MYSQL_SERVICE_PORT valueFrom: configMapKeyRef: name: nacos-cm key: mysql.port - name: MYSQL_SERVICE_USER valueFrom: configMapKeyRef: name: nacos-cm key: mysql.user - name: MYSQL_SERVICE_PASSWORD valueFrom: configMapKeyRef: name: nacos-cm key: mysql.password - name: MODE value: "cluster" - name: NACOS_SERVER_PORT value: "8848" - name: PREFER_HOST_MODE value: "hostname" - name: NACOS_SERVERS value: "nacos-0.nacos-headless.default.svc.cluster.local:8848 nacos-1.nacos-headless.default.svc.cluster.local:8848 nacos-2.nacos-headless.default.svc.cluster.local:8848" selector: matchLabels: app: nacos
###值得注意的是
- name: NACOS_SERVERS 部分的值一定要修改为你部署的namespace,不让会在部署java任务的时候报错,一定要注意!!!!!!!!!!巨坑
- istio部署ingress暴露
➜ nacos cat nacos-test-ingress.yaml apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: nacos-headless namespace: default spec: selector: istio: ingressgateway # use istio default controller servers: - port: number: 80 name: http protocol: HTTP hosts: - "nacos-test.XXX.com" --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: nacos-headless namespace: default spec: hosts: - "nacos-test.XXX.com" gateways: - nacos-headless http: - match: - uri: prefix: / route: - destination: host: nacos-headless port: number: 8848 ➜ nacos
- 验证配置
➜ nacos kubectl get vs -nnacos NAME GATEWAYS HOSTS AGE nacos-headless ["nacos-headless"] ["nacos.XXX.com"] 3d11h nacos-headless-2 ["nacos-headless"] ["nacos-test.XXX.com"] 3d11h ➜ nacos kubectl get gw -nnacos NAME AGE nacos-headless 3d11h

默认的nacos账号密码是:nacos/nacos
- 坑!!!!
1.数据库初始化导入数据库使用标准的数据格式。
2.- name: NACOS_SERVERS 部分的值一定要修改为你部署的namespace,不让会在部署java任务的时候报错,一定要注意!!!!!!!!!!巨坑
3.nacos数据库修改密码
默认的nacos账号密码都是nacos 但是导入带有数据的数据库时会出现登录用户密码错误的问题 解决办法: 直接连接数据库进行修改user的表 密码是被加密的可以使用一下的密码明文为admin $2a$10$YrC76q2zs2zLLlUljW5MzubUS0L2hKtMYfjDQCmtWkNLFjFTCf9zO

注意:修改完数据库需要重新apply一下,这时候登录nacos报密码错误时,修改密码,再次重启nacos,才能登录
浙公网安备 33010602011771号