k8s 部署nacos,k8s部署kibana
终极管理员 知识笔记 112阅读
nacos2.2.0集群部署。nacos-headless内部集群端口服务nacos-service为了方便ingress转发提供给用户web界面操作requiredDuringSchedulingIgnoredDuringExecution强制反亲和禁止同一个节点部署nacos实列。
1、数据库导入nacos的sql

# 创建数据库create database nacos_config character set utf8mb4 collate utf8mb4_general_ci;# 创建用户create user nacos_config% identified with mysql_native_password by nacos_config_dbYangdouya;# 授权grant all privileges on nacos_config.* to nacos_config%;
sql脚本mysql-schema.sql
注意不同版本nacos的数据表字段有差异可以在安装前从git中按照版本获取nacos sql脚本获取地址
/* * Copyright 1999-2018 Alibaba Group Holding Ltd. * * Licensed under the Apache License, Version 2.0 (the License); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an AS IS BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *//******************************************//* 数据库全名 nacos_config *//* 表名称 config_info *//******************************************/CREATE TABLE config_info ( id bigint(20) NOT NULL AUTO_INCREMENT COMMENT id, data_id varchar(255) NOT NULL COMMENT data_id, group_id varchar(128) DEFAULT NULL, content longtext NOT NULL COMMENT content, md5 varchar(32) DEFAULT NULL COMMENT md5, gmt_create datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, gmt_modified datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 修改时间, src_user text COMMENT source user, src_ip varchar(50) DEFAULT NULL COMMENT source ip, app_name varchar(128) DEFAULT NULL, tenant_id varchar(128) DEFAULT COMMENT 租户字段, c_desc varchar(256) DEFAULT NULL, c_use varchar(64) DEFAULT NULL, effect varchar(64) DEFAULT NULL, type varchar(64) DEFAULT NULL, c_schema text, encrypted_data_key text NOT NULL COMMENT 秘钥, PRIMARY KEY (id), UNIQUE KEY uk_configinfo_datagrouptenant (data_id,group_id,tenant_id)) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_bin COMMENTconfig_info;/******************************************//* 数据库全名 nacos_config *//* 表名称 config_info_aggr *//******************************************/CREATE TABLE config_info_aggr ( id bigint(20) NOT NULL AUTO_INCREMENT COMMENT id, data_id varchar(255) NOT NULL COMMENT data_id, group_id varchar(128) NOT NULL COMMENT group_id, datum_id varchar(255) NOT NULL COMMENT datum_id, content longtext NOT NULL COMMENT 内容, gmt_modified datetime NOT NULL COMMENT 修改时间, app_name varchar(128) DEFAULT NULL, tenant_id varchar(128) DEFAULT COMMENT 租户字段, PRIMARY KEY (id), UNIQUE KEY uk_configinfoaggr_datagrouptenantdatum (data_id,group_id,tenant_id,datum_id)) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_bin COMMENT增加租户字段;/******************************************//* 数据库全名 nacos_config *//* 表名称 config_info_beta *//******************************************/CREATE TABLE config_info_beta ( id bigint(20) NOT NULL AUTO_INCREMENT COMMENT id, data_id varchar(255) NOT NULL COMMENT data_id, group_id varchar(128) NOT NULL COMMENT group_id, app_name varchar(128) DEFAULT NULL COMMENT app_name, content longtext NOT NULL COMMENT content, beta_ips varchar(1024) DEFAULT NULL COMMENT betaIps, md5 varchar(32) DEFAULT NULL COMMENT md5, gmt_create datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, gmt_modified datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 修改时间, src_user text COMMENT source user, src_ip varchar(50) DEFAULT NULL COMMENT source ip, tenant_id varchar(128) DEFAULT COMMENT 租户字段, encrypted_data_key text NOT NULL COMMENT 秘钥, PRIMARY KEY (id), UNIQUE KEY uk_configinfobeta_datagrouptenant (data_id,group_id,tenant_id)) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_bin COMMENTconfig_info_beta;/******************************************//* 数据库全名 nacos_config *//* 表名称 config_info_tag *//******************************************/CREATE TABLE config_info_tag ( id bigint(20) NOT NULL AUTO_INCREMENT COMMENT id, data_id varchar(255) NOT NULL COMMENT data_id, group_id varchar(128) NOT NULL COMMENT group_id, tenant_id varchar(128) DEFAULT COMMENT tenant_id, tag_id varchar(128) NOT NULL COMMENT tag_id, app_name varchar(128) DEFAULT NULL COMMENT app_name, content longtext NOT NULL COMMENT content, md5 varchar(32) DEFAULT NULL COMMENT md5, gmt_create datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, gmt_modified datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 修改时间, src_user text COMMENT source user, src_ip varchar(50) DEFAULT NULL COMMENT source ip, PRIMARY KEY (id), UNIQUE KEY uk_configinfotag_datagrouptenanttag (data_id,group_id,tenant_id,tag_id)) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_bin COMMENTconfig_info_tag;/******************************************//* 数据库全名 nacos_config *//* 表名称 config_tags_relation *//******************************************/CREATE TABLE config_tags_relation ( id bigint(20) NOT NULL COMMENT id, tag_name varchar(128) NOT NULL COMMENT tag_name, tag_type varchar(64) DEFAULT NULL COMMENT tag_type, data_id varchar(255) NOT NULL COMMENT data_id, group_id varchar(128) NOT NULL COMMENT group_id, tenant_id varchar(128) DEFAULT COMMENT tenant_id, nid bigint(20) NOT NULL AUTO_INCREMENT, PRIMARY KEY (nid), UNIQUE KEY uk_configtagrelation_configidtag (id,tag_name,tag_type), KEY idx_tenant_id (tenant_id)) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_bin COMMENTconfig_tag_relation;/******************************************//* 数据库全名 nacos_config *//* 表名称 group_capacity *//******************************************/CREATE TABLE group_capacity ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 主键ID, group_id varchar(128) NOT NULL DEFAULT COMMENT Group ID空字符表示整个集群, quota int(10) unsigned NOT NULL DEFAULT 0 COMMENT 配额0表示使用默认值, usage int(10) unsigned NOT NULL DEFAULT 0 COMMENT 使用量, max_size int(10) unsigned NOT NULL DEFAULT 0 COMMENT 单个配置大小上限单位为字节0表示使用默认值, max_aggr_count int(10) unsigned NOT NULL DEFAULT 0 COMMENT 聚合子配置最大个数0表示使用默认值, max_aggr_size int(10) unsigned NOT NULL DEFAULT 0 COMMENT 单个聚合数据的子配置大小上限单位为字节0表示使用默认值, max_history_count int(10) unsigned NOT NULL DEFAULT 0 COMMENT 最大变更历史数量, gmt_create datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, gmt_modified datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 修改时间, PRIMARY KEY (id), UNIQUE KEY uk_group_id (group_id)) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_bin COMMENT集群、各Group容量信息表;/******************************************//* 数据库全名 nacos_config *//* 表名称 his_config_info *//******************************************/CREATE TABLE his_config_info ( id bigint(20) unsigned NOT NULL, nid bigint(20) unsigned NOT NULL AUTO_INCREMENT, data_id varchar(255) NOT NULL, group_id varchar(128) NOT NULL, app_name varchar(128) DEFAULT NULL COMMENT app_name, content longtext NOT NULL, md5 varchar(32) DEFAULT NULL, gmt_create datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, gmt_modified datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, src_user text, src_ip varchar(50) DEFAULT NULL, op_type char(10) DEFAULT NULL, tenant_id varchar(128) DEFAULT COMMENT 租户字段, encrypted_data_key text NOT NULL COMMENT 秘钥, PRIMARY KEY (nid), KEY idx_gmt_create (gmt_create), KEY idx_gmt_modified (gmt_modified), KEY idx_did (data_id)) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_bin COMMENT多租户改造;/******************************************//* 数据库全名 nacos_config *//* 表名称 tenant_capacity *//******************************************/CREATE TABLE tenant_capacity ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 主键ID, tenant_id varchar(128) NOT NULL DEFAULT COMMENT Tenant ID, quota int(10) unsigned NOT NULL DEFAULT 0 COMMENT 配额0表示使用默认值, usage int(10) unsigned NOT NULL DEFAULT 0 COMMENT 使用量, max_size int(10) unsigned NOT NULL DEFAULT 0 COMMENT 单个配置大小上限单位为字节0表示使用默认值, max_aggr_count int(10) unsigned NOT NULL DEFAULT 0 COMMENT 聚合子配置最大个数, max_aggr_size int(10) unsigned NOT NULL DEFAULT 0 COMMENT 单个聚合数据的子配置大小上限单位为字节0表示使用默认值, max_history_count int(10) unsigned NOT NULL DEFAULT 0 COMMENT 最大变更历史数量, gmt_create datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, gmt_modified datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 修改时间, PRIMARY KEY (id), UNIQUE KEY uk_tenant_id (tenant_id)) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_bin COMMENT租户容量信息表;CREATE TABLE tenant_info ( id bigint(20) NOT NULL AUTO_INCREMENT COMMENT id, kp varchar(128) NOT NULL COMMENT kp, tenant_id varchar(128) default COMMENT tenant_id, tenant_name varchar(128) default COMMENT tenant_name, tenant_desc varchar(256) DEFAULT NULL COMMENT tenant_desc, create_source varchar(32) DEFAULT NULL COMMENT create_source, gmt_create bigint(20) NOT NULL COMMENT 创建时间, gmt_modified bigint(20) NOT NULL COMMENT 修改时间, PRIMARY KEY (id), UNIQUE KEY uk_tenant_info_kptenantid (kp,tenant_id), KEY idx_tenant_id (tenant_id)) ENGINEInnoDB DEFAULT CHARSETutf8 COLLATEutf8_bin COMMENTtenant_info;CREATE TABLE users (username varchar(50) NOT NULL PRIMARY KEY,password varchar(500) NOT NULL,enabled boolean NOT NULL);CREATE TABLE roles (username varchar(50) NOT NULL,role varchar(50) NOT NULL,UNIQUE INDEX idx_user_role (username ASC, role ASC) USING BTREE);CREATE TABLE permissions ( role varchar(50) NOT NULL, resource varchar(255) NOT NULL, action varchar(8) NOT NULL, UNIQUE INDEX uk_role_permission (role,resource,action) USING BTREE);INSERT INTO users (username, password, enabled) VALUES (nacos, $2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu, TRUE);INSERT INTO roles (username, role) VALUES (nacos, ROLE_ADMIN);
2、部署nacos集群
vi nacos-deployment.yaml

## nacos-headless 集群内部服务apiVersion: v1kind: Servicemetadata: name: nacos-headless labels: app: nacos-headless spec: ports: - port: 8848 name: server targetPort: 8848 - port: 9848 name: client-rpc targetPort: 9848 - port: 9849 name: raft-rpc targetPort: 9849 - port: 7848 name: old-raft-rpc targetPort: 7848 selector: app: nacos---apiVersion: v1kind: ConfigMapmetadata: name: nacos-cmdata: mysql.host: 1.50.152.10 mysql.db.name: nacos_config mysql.port: 3306 mysql.user: nacos_config mysql.password: nacos_config_dbYangdouya---# 执行部署apiVersion: apps/v1kind: StatefulSetmetadata: name: nacosspec: 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 topologyKey: kubernetes.io/hostname containers: - name: k8snacos imagePullPolicy: Always image: nacos/nacos-server:v2.2.0 resources: requests: memory: 1Gi cpu: 500m ports: - containerPort: 8848 name: client - containerPort: 9848 name: client-rpc - containerPort: 9849 name: raft-rpc - containerPort: 7848 name: old-raft-rpc 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: SPRING_DATASOURCE_PLATFORM value: mysql - 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 ---# 部署普通Serviceingress-nginx使用apiVersion: v1kind: Servicemetadata: name: nacos-service namespace: default annotations: nginx.ingress.kubernetes.io/affinity: true nginx.ingress.kubernetes.io/session-cookie-name: backend nginx.ingress.kubernetes.io/load-balancer-method: drrspec: selector: app: nacos ports: - name: web port: 80 targetPort: 8848--- # 配置ingressapiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: ingress-nacos-http annotations: kubernetes.io/ingress.class: nginxspec: rules: - host: nacos-web.yunzaixian.top # 访问域名 http: paths: - path: / pathType: Prefix # 前缀匹配 backend: service: name: nacos-service port: number: 80
注意事项
1、nacos集群搭建保证高可用禁止部署在同一个节点需要配置强制反亲和requiredDuringSchedulingIgnoredDuringExecution
2、集群内部服务地址配置使用StatefulSet方式部署将实列编排为xx-0xx-1, xx-2, xx-n在配置集群地址上按照 xx-n:acos-headless.default.svc.cluster.local:8848 配置集权dns服务
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”
外部访问ingress-nginx部署安装提供外部访问
部署脚本nacos-deployment.yaml直接下载
完成
标签: