当前位置: 首页> 健康> 知识 > 最新一周新闻_web前端最全笔记_石家庄seo关键词排名_网络培训心得体会5篇

最新一周新闻_web前端最全笔记_石家庄seo关键词排名_网络培训心得体会5篇

时间:2025/7/9 21:51:48来源:https://blog.csdn.net/qq_44732146/article/details/144104861 浏览次数:0次
最新一周新闻_web前端最全笔记_石家庄seo关键词排名_网络培训心得体会5篇

实战环境涉及软件版本信息

操作系统:centos 7
KubeSphere:v3.4.1
Kubernetes:v1.28.8
KubeKey: v3.1.7
MySQL:v8.4.0
Nacos: v2.4.0

1. 部署方案规划

1.1 部署架构图

在这里插入图片描述

1.2准备 MySQL

Nacos 需要使用 MySQL,本文使用更加贴近生产的 MySQL 主从复制方案部署 MySQL,具体可以参考 KubeSphere安装mysql8.4.0

step1

获取初始化数据库文件

wget https://raw.githubusercontent.com/alibaba/nacos/refs/heads/master/distribution/conf/mysql-schema.sql

step2 导入 MySQL 初始化数据

1.进入 MySQL 主节点容器内部。

[root@master1 ~]# kubectl exec -n hgjg-common -it mysql-0 -- mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 371
Server version: 8.4.0 MySQL Community Server - GPLCopyright (c) 2000, 2024, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> 

2.创建数据库及 Nacos 用户。

-- 创建数据库
mysql> CREATE DATABASE IF NOT EXISTS `nacos` DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;-- 创建用户
mysql> CREATE USER 'nacos'@'%' IDENTIFIED BY 'ChangeMe';-- 赋予权限
mysql> GRANT ALL PRIVILEGES ON `nacos`.* TO 'nacos'@'%';-- 刷新权限
mysql> FLUSH PRIVILEGES;

3.导入数据(无需登录容器内部)

# 进入数据库初始化 sql 文件目录
$ cd /srv/nacos/# 导入数据
kubectl exec -i -n hgjg-common  mysql-0 -- mysql -S /var/lib/mysql/mysql.sock -u nacos -pChangeMe nacos < mysql-schema.sql

step3

1.登陆 MySQL 主节点容器内部

$ kubectl exec -it -n hgjg-common  mysql-0 -- mysql -u nacos -p
Enter password:

2.查看数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| nacos              |
+--------------------+
2 rows in set (0.01 sec)

3.查看表

# 切换数据库
mysql> use nacos;
Database changed# 查看表
mysql> show tables;
+----------------------+
| Tables_in_nacos      |
+----------------------+
| config_info          |
| config_info_aggr     |
| config_info_beta     |
| config_info_tag      |
| config_tags_relation |
| group_capacity       |
| his_config_info      |
| permissions          |
| roles                |
| tenant_capacity      |
| tenant_info          |
| users                |
+----------------------+
12 rows in set (0.00 sec)

从结果中可以看到执行 mysql-schema.sql 后,自动创建了 Nacos 服务的相关表和数据。

3.集群模式 Nacos 部署

3.1 创建service

vim nacos-headless.yaml

内容

kind: Service
apiVersion: v1
metadata:name: nacos-headlessnamespace: hgjg-commonlabels:app: nacos-headlessannotations:kubesphere.io/creator: admin
spec:ports:- name: tcp-8848protocol: TCPport: 8848targetPort: 8848- name: tcp-9848protocol: TCPport: 9848targetPort: 9848- name: tcp-9849protocol: TCPport: 9849targetPort: 9849- name: tcp-7848protocol: TCPport: 7848targetPort: 7848selector:app: nacosclusterIP: NoneclusterIPs:- Nonetype: ClusterIPsessionAffinity: NoneipFamilies:- IPv4ipFamilyPolicy: SingleStackinternalTrafficPolicy: Cluster

然后运行以下命令:

kubectl create -f nacos-headless.yaml
#查看service
kubectl get services -n <namespace>

3.2 创建ConfigMap

nacos-cm.yaml文件内容

kind: ConfigMap
apiVersion: v1
metadata:name: nacos-cmnamespace: hgjg-commonannotations:kubesphere.io/creator: adminkubesphere.io/description: nacos配置
data:mode: clustermysql.db.name: nacosmysql.host: mysql-headless.hgjg-common.svc.cluster.localmysql.password: your-passwordmysql.port: '3306'mysql.user: nacosnacos-auth-enable: 'true'nacos-auth-identity-key: testnacos-auth-identity-value: testnacos-auth-token: SecretKeyYzUxYmUzNmIwOTMzZTUyMGJhNjBkNzY0ZjhhZDJhOTI=nacos-servers: >-nacos-0.nacos-headless.hgjg-common.svc.cluster.local:8848nacos-1.nacos-headless.hgjg-common.svc.cluster.local:8848nacos-2.nacos-headless.hgjg-common.svc.cluster.local:8848

说明
nacos-0.nacos-headless.hgjg-common.svc.cluster.local:8848 是一个 Kubernetes 集群内的 DNS 名称,它指向一个正在运行的 Nacos 实例。下面是对这个 DNS 名称的详细解释:

  1. nacos-0
    这是 StatefulSet 管理的第一个 Pod 的名称。在 Kubernetes 中,StatefulSet 为每个 Pod 分配一个唯一的名字,这个名字包括了一个索引号。
    在 StatefulSet 中,第一个 Pod 会被命名为 nacos-0,第二个 Pod 会被命名为 nacos-1,以此类推。
  2. nacos-headless
    这是一个 Headless Service 的名称。Headless Service 是一种没有 ClusterIP 的服务,它通过 DNS 解析为多个 Pod 的地址。
    通过 Headless Service,Kubernetes 可以为每个 Pod 提供独立的 DNS 名称,而不是通过一个负载均衡器来代理流量。对于 nacos-0,DNS 名称 nacos-0.nacos-headless.hgjg-common.svc.cluster.local 会解析到该 Pod 的 IP 地址。
  3. hgjg-common
    这是 Kubernetes 中的命名空间(Namespace)。命名空间用来分隔集群中的资源,避免不同项目之间发生冲突。在这个例子中,nacos-0 这个 Pod 和 nacos-headless 服务都属于 hgjg-common 命名空间。
  4. svc.cluster.local
    这是 Kubernetes 集群的默认 DNS 域名后缀。所有服务都会被自动解析为 svc.cluster.local 后缀的 DNS 名称。
    这意味着 nacos-headless 服务的 DNS 名称会是 nacos-headless.hgjg-common.svc.cluster.local,并且 Pod 的名称(如 nacos-0)会作为服务的子域名来访问。
  5. :8848
    这是 Nacos 服务的端口号。Nacos 默认使用 8848 端口来提供服务(如配置管理和服务发现等功能)。
    然后运行以下命令:
kubectl create -f nacos-cm.yaml
#查看configmap
kubectl get configmap-n <namespace>

注意:
nacos 2.2.2及其以后版本必须配置以下参数才会有登录认证界面

  • 传统部署方式需要修改application.properties的以下几个参数
nacos.core.auth.enabled=true                     #开启认证授权
nacos.core.auth.system.type=nacos         #认证类型
nacos.core.auth.plugin.nacos.token.secret.key=SecretKeyM1Z2WDc4dnVyZkQ3NmZMZjZ3RHRwZnJjNFROdkJOemEK                                #nacos的token
nacos.core.auth.server.identity.key=test     #这里配置的key可以是任意值
nacos.core.auth.server.identity.value=test

注意: 自定义 NACOS_AUTH_TOKEN 密钥时,推荐将配置项设置为Base64 编码的字符串,且原始密钥长度不得低于32字符。

  • 容器类部署需要传入以下环境变量
NACOS_AUTH_ENABLE=true
NACOS_AUTH_IDENTITY_KEY=test    
NACOS_AUTH_IDENTITY_VALUE=test
NACOS_AUTH_TOKEN=SecretKeyM1Z2WDc4dnVyZkQ3NmZMZjZ3RHRwZnJjNFROdkJOemEK

可以执行下面的命令生成TOKEN 密钥:

echo -n $(openssl rand -hex 16) | base64 -w0

参考官方文档:https://nacos.io/docs/latest/guide/user/auth/
Nacos的hub官方镜像提供了很多可以传给容器的环境变量:https://hub.docker.com/r/nacos/nacos-server
Nacos官方文档系统参数:https://nacos.io/docs/latest/manual/admin/system-configurations/

属性配置

名称描述选项
MODE模式cluster(集群)/ standalone(单机),默认为 cluster(集群)
NACOS_SERVERSNacos 集群地址例如:ip1:port1 ip2:port2 ip3:port3 多个用空格隔开
PREFER_HOST_MODE是否支持主机名,默认是IP,k8s部署必须开启此变量hostname(主机名)/ ip(IP地址),默认为 ip
NACOS_APPLICATION_PORTNacos 服务端口默认为 8848
NACOS_SERVER_IP当网络是多网卡时,指定 Nacos 服务器的 IP 地址(多网络环境中配置nacos服务IP)-
SPRING_DATASOURCE_PLATFORM单机模式支持的 MySQL 数据库平台mysql / 空,默认为空
MYSQL_SERVICE_HOSTMySQL 主机-
MYSQL_SERVICE_PORTMySQL 数据库端口默认为 3306
MYSQL_SERVICE_DB_NAMEMySQL 数据库名称-
MYSQL_SERVICE_USERMySQL 数据库用户名-
MYSQL_SERVICE_PASSWORDMySQL 数据库密码-
MYSQL_DATABASE_NUM数据库数量默认为 1
MYSQL_SERVICE_DB_PARAM数据库 URL 参数默认为:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
JVM_XMSJVM 初始堆大小默认为 1g
JVM_XMXJVM 最大堆大小默认为 1g
JVM_XMNJVM 新生代堆大小默认为 512m
JVM_MSJVM Metaspace 初始大小默认为 128m
JVM_MMSJVM Metaspace 最大大小默认为 320m
NACOS_DEBUG启用远程调试y/n,默认为 n
TOMCAT_ACCESSLOG_ENABLED启用 Tomcat 访问日志默认为 false
NACOS_AUTH_SYSTEM_TYPE认证系统类型,当前仅支持 ‘nacos’默认为 nacos
NACOS_AUTH_ENABLE是否启用认证系统默认为 false
NACOS_AUTH_TOKEN_EXPIRE_SECONDS令牌过期时间,单位秒默认为 18000(5小时)
NACOS_AUTH_TOKEN默认令牌默认为:SecretKey012345678901234567890123456789012345678901234567890123456789
NACOS_AUTH_CACHE_ENABLE启用/禁用认证信息缓存,启用后认证信息更新有 15 秒延迟默认为 false
MEMBER_LIST配置文件或命令行参数设置集群成员列表例如:192.168.16.101:8847?raft_port=8807,192.168.16.101?raft_port=8808,192.168.16.101:8849?raft_port=8809
EMBEDDED_STORAGE集群模式下不使用 MySQL 而使用内嵌存储embedded,默认为 none
NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE是否开启nacos认证用户白名单默认为 false
NACOS_AUTH_IDENTITY_KEYnacos认证授权指定key默认为 serverIdentity
NACOS_AUTH_IDENTITY_VALUEnacos认证授权指定key的值默认为 security
NACOS_SECURITY_IGNORE_URLSnacos忽略安全校验的地址默认为:``/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**

3.3 配置nacos集群清单文件nacos-cluster.yaml

vim nacos-cluster.yaml
kind: StatefulSet
apiVersion: apps/v1
metadata:name: nacosnamespace: hgjg-commonlabels:app: nacosannotations:kubesphere.io/creator: adminkubesphere.io/description: nacos集群
spec:replicas: 3selector:matchLabels:app: nacostemplate:metadata:creationTimestamp: nulllabels:app: nacosannotations:cni.projectcalico.org/ipv4pools: '["default-ipv4-ippool"]'kubesphere.io/creator: adminkubesphere.io/imagepullsecrets: '{"nacos":"register-addr"}'kubesphere.io/restartedAt: '2024-11-28T03:26:51.577Z'logging.kubesphere.io/logsidecar-config: '{}'spec:initContainers:- name: peer-finder-plugin-installimage: 'registry.flow.cn/nacos/nacos-peer-finder-plugin:1.1'resources: {}volumeMounts:- name: nacos-pvcmountPath: /home/nacos/plugins/peer-findersubPath: peer-finderterminationMessagePath: /dev/termination-logterminationMessagePolicy: FileimagePullPolicy: IfNotPresentcontainers:- name: nacosimage: 'registry.flow.cn/nacos/nacos-server:v2.4.0'ports:- name: client-portcontainerPort: 8848protocol: TCP- name: client-rpccontainerPort: 9848protocol: TCP- name: raft-rpccontainerPort: 9849protocol: TCP- name: old-raft-rpccontainerPort: 7848protocol: TCPenv:- name: NACOS_REPLICASvalue: '3'- name: SERVICE_NAMEvalue: nacos-headless- name: DOMAIN_NAMEvalue: cluster.local- name: POD_NAMESPACEvalueFrom:fieldRef:apiVersion: v1fieldPath: metadata.namespace- name: MYSQL_SERVICE_HOSTvalueFrom:configMapKeyRef:name: nacos-cmkey: mysql.host- name: MYSQL_SERVICE_DB_NAMEvalueFrom:configMapKeyRef:name: nacos-cmkey: mysql.db.name- name: MYSQL_SERVICE_PORTvalueFrom:configMapKeyRef:name: nacos-cmkey: mysql.port- name: MYSQL_SERVICE_USERvalueFrom:configMapKeyRef:name: nacos-cmkey: mysql.user- name: MYSQL_SERVICE_PASSWORDvalueFrom:configMapKeyRef:name: nacos-cmkey: mysql.password- name: SPRING_DATASOURCE_PLATFORMvalue: mysql- name: NACOS_APPLICATION_PORTvalue: '8848'- name: PREFER_HOST_MODEvalue: hostname- name: NACOS_SERVERSvalueFrom:configMapKeyRef:name: nacos-cmkey: nacos-servers- name: MODEvalueFrom:configMapKeyRef:name: nacos-cmkey: mode- name: NACOS_AUTH_ENABLEvalueFrom:configMapKeyRef:name: nacos-cmkey: nacos-auth-enable- name: NACOS_AUTH_IDENTITY_KEYvalueFrom:configMapKeyRef:name: nacos-cmkey: nacos-auth-identity-key- name: NACOS_AUTH_IDENTITY_VALUEvalueFrom:configMapKeyRef:name: nacos-cmkey: nacos-auth-identity-value- name: NACOS_AUTH_TOKENvalueFrom:configMapKeyRef:name: nacos-cmkey: nacos-auth-tokenresources:requests:cpu: 500mmemory: 2GivolumeMounts:- name: nacos-pvcmountPath: ' /home/nacos'terminationMessagePath: /dev/termination-logterminationMessagePolicy: FileimagePullPolicy: IfNotPresentrestartPolicy: AlwaysterminationGracePeriodSeconds: 30dnsPolicy: ClusterFirstserviceAccountName: defaultserviceAccount: defaultsecurityContext: {}imagePullSecrets:- name: register-addraffinity:podAntiAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- key: appoperator: Invalues:- nacostopologyKey: kubernetes.io/hostnameschedulerName: default-schedulervolumeClaimTemplates:- kind: PersistentVolumeClaimapiVersion: v1metadata:name: nacos-pvcnamespace: hgjg-commoncreationTimestamp: nullspec:accessModes:- ReadWriteOnceresources:requests:storage: 10GistorageClassName: localvolumeMode: Filesystemstatus:phase: PendingserviceName: nacos-headlesspodManagementPolicy: OrderedReadyupdateStrategy:type: RollingUpdaterollingUpdate:partition: 0revisionHistoryLimit: 10persistentVolumeClaimRetentionPolicy:whenDeleted: RetainwhenScaled: Retain

执行下面的命令,创建 Nacos。

kubectl create -f nacos-cluster.yaml

验证 Nacos 节点状态。

kubectl get pod -n hgjg-common -l app=nacos -o wide

在这里插入图片描述

3.4 配置 K8s 集群外部访问

我们采用 NodePort 方式在 Kubernetes 集群中对外发布 Nacos 服务,以便管理员能够访问图形化控制台,同时也为集群外的应用提供服务,指定的端口为 30443。

使用 vim 编辑器,新建 NodePort 服务资源清单文件 nacos-external.yaml,并输入以下内容:

kind: Service
apiVersion: v1
metadata:name: nacos-servienamespace: hgjg-commonlabels:app: nacos-servieannotations:kubesphere.io/creator: adminkubesphere.io/description: nacos外部访问
spec:ports:- name: tcp-8848protocol: TCPport: 8848targetPort: 8848nodePort: 30443selector:app: nacostype: NodePort

执行下面的命令

kubectl apply -f nacos-external.yaml

3.5 设置管理员密码

2.4.0 版本开始,Nacos构建时不再提供管理员用户nacos的默认密码,需要在首次开启鉴权后,通过 API 或 Nacos 控制台进行管理员用户nacos的密码初始化。

本文选择 Nacos 控制台的方式初始化密码,当 Nacos 集群开启鉴权后,访问 Nacos 控制台时,会校验管理员用户nacos的密码是否已经初始化,若发现未初始化密码时,则会跳转至初始化密码的页面进行初始化。
在这里插入图片描述

在该页面密码文本框内输入自定义密码,然后点击提交即可。

注意: 若密码文本框内未输入自定义密码或输入空白密码,Nacos 将会生成随机密码,请保存好生成的随机密码。

初始化成功后会弹窗提示初始化成功,并明文展示指定的密码或随机生成的密码,请保存好此密码。
在这里插入图片描述
查看集群节点列表
在这里插入图片描述

4 验证测试 Nacos 服务是否正确配置

使用 curl 命令,在 K8s 集群外的机器上调用 Nacos API 接口,通过 Nacos 对外服务对应的 NodePort 端口,验证测试 Nacos 服务是否正常。

4.1 获取 Token

首先,使用用户名和密码登陆 nacos,若用户名和密码正确,会返回 Token 信息。

curl -X POST 'http://10.0.11.26:30443/nacos/v1/auth/login' -d 'username=nacos&password=ChangeMe'
# windows
curl.exe -X POST 'http://10.0.11.26:30443/nacos/v1/auth/login' -d 'username=nacos&password=ChangeMe'

windows

Invoke-WebRequest -Uri 'http://10.0.11.26:30443/nacos/v1/auth/login' `-Method POST `-Body 'username=nacos&password=ChangeMe' `-ContentType 'application/x-www-form-urlencoded'

正确执行后,返回的结果如下:

{"accessToken":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcyNzcwOTk0Mn0.Ki2kgZyh_dj_Zfb9HKPCkKr1cgWfi3szQS4hlZPIwkI","tokenTtl":18000,"globalAdmin":true,"username":"nacos"}

在这里插入图片描述

4.2 服务注册

curl -X POST 'http://192.168.9.91:31848/nacos/v1/ns/instance?accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcyNzcwOTk0Mn0.Ki2kgZyh_dj_Zfb9HKPCkKr1cgWfi3szQS4hlZPIwkI&serviceName=nacos.naming.serviceName&ip=192.168.9.81&port=8080'

windows

Invoke-WebRequest -Uri 'http://192.168.9.91:31848/nacos/v1/ns/instance?accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcyNzcwOTk0Mn0.Ki2kgZyh_dj_Zfb9HKPCkKr1cgWfi3szQS4hlZPIwkI&serviceName=nacos.naming.serviceName&ip=192.168.9.81&port=8080' `-Method POST

4.3 服务发现

curl -X GET 'http://192.168.9.91:31848/nacos/v1/ns/instance/list?accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcyNzcwOTk0Mn0.Ki2kgZyh_dj_Zfb9HKPCkKr1cgWfi3szQS4hlZPIwkI&serviceName=nacos.naming.serviceName'

正确执行后,返回的结果如下:

{"name":"DEFAULT_GROUP@@nacos.naming.serviceName","groupName":"DEFAULT_GROUP","clusters":"","cacheMillis":10000,"hosts":[],"lastRefTime":1727692102280,"checksum":"","allIPs":false,"reachProtectionThreshold":false,"valid":true}[

4.4 发布配置

curl -X POST "http://192.168.9.91:31848/nacos/v1/cs/configs?accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcyNzcwOTk0Mn0.Ki2kgZyh_dj_Zfb9HKPCkKr1cgWfi3szQS4hlZPIwkI&dataId=nacos.cfg.dataId&group=test&content=helloWorld"

4.5 获取配置

curl -X GET "http://192.168.9.91:31848/nacos/v1/cs/configs?accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcyNzcwOTk0Mn0.Ki2kgZyh_dj_Zfb9HKPCkKr1cgWfi3szQS4hlZPIwkI&dataId=nacos.cfg.dataId&group=test"

正确执行后,返回的结果如下:

helloWorld
关键字:最新一周新闻_web前端最全笔记_石家庄seo关键词排名_网络培训心得体会5篇

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: