用K8S部署高可用NACOS集群
我们先来单点部署NACOS服务:
apiVersion: v1 kind: Service metadata: name: nacos namespace: {namespace} labels: app: nacos spec: ports: - protocol: TCP port: 8848 targetPort: 8848 name: nacos-http selector: app: nacos --- apiVersion: apps/v1 kind: StatefulSet metadata: name: nacos namespace: {namespace} spec: serviceName: nacos selector: matchLabels: app: nacos replicas: 1 template: metadata: labels: app: nacos spec: containers: - name: nacos image: nacos/nacos-server:2.0.1 resources: requests: memory: "1024Mi" cpu: "256m" limits: memory: "2048Mi" cpu: "512m" ports: - containerPort: 8848 name: nacos-http env: - name: MODE value: "standalone"
我们用集群的方式部署:
1.我们要准备好NFS服务器,建好PV和PVC
apiVersion: v1 kind: Namespace metadata: name: {namespace} --- apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv-{namespace} labels: pv: nfs-pv-{namespace} annotations: volume.beta.kubernetes.io/mount-options: "noatime,nodiratime,noresvport,nolock,proto=udp,rsize=1048576,wsize=1048576,hard" spec: capacity: storage: 100Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain nfs: path: /nfs/{namespace} server: 192.168.0.2 --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nfs-pvc namespace: {namespace} spec: accessModes: - ReadWriteMany resources: requests: storage: 100Gi selector: matchLabels: pv: nfs-pv-{namespace}
2.准备好数据库,我们集群里面是有数据库,这里我就不做配置直接使用,只是导入数据库而已
数据库的地址: mysql
数据库名称: nacos
数据库的账号: root
数据库的密码: 123456
然后导入https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql
3.创建配置文件
apiVersion: v1 kind: ConfigMap metadata: name: nacos-cm namespace: {namespace} data: mysql.db.name: "nacos" mysql.db.host: "mysql" mysql.port: "3306" mysql.user: "root" mysql.password: "123456"
4.创建部署文件
apiVersion: apps/v1 kind: StatefulSet metadata: name: nacos namespace: {namespace} spec: serviceName: nacos-headless selector: matchLabels: app: nacos replicas: 3 template: metadata: labels: app: nacos spec: initContainers: - name: peer-finder-plugin-install image: nacos/nacos-peer-finder-plugin:1.1 imagePullPolicy: Always volumeMounts: - mountPath: /home/nacos/plugins/peer-finder name: nacos-data subPath: peer-finder containers: - name: nacos image: nacos/nacos-server:2.0.1 resources: requests: memory: "1024Mi" cpu: "256m" limits: memory: "2048Mi" cpu: "512m" ports: - containerPort: 8848 name: nacos-http - containerPort: 9848 name: nacos-rpc - containerPort: 9849 name: raft-rpc - containerPort: 7848 name: old-raft-rpc env: - name: NACOS_REPLICAS value: "3" - name: SERVICE_NAME value: "nacos-headless" - name: DOMAIN_NAME value: "cluster.local" - name: POD_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: MYSQL_SERVICE_HOST valueFrom: configMapKeyRef: name: nacos-cm key: mysql.db.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: NACOS_SERVER_PORT value: "8848" - name: NACOS_APPLICATION_PORT value: "8848" - name: PREFER_HOST_MODE value: "hostname" - name: NACOS_SERVERS value: "nacos-0.nacos-headless.{namespace}.svc.cluster.local:8848 nacos-1.nacos-headless.{namespace}.svc.cluster.local:8848 nacos-2.nacos-headless.{namespace}.svc.cluster.local:8848" volumeMounts: - name: nacos-data mountPath: /home/nacos/plugins/peer-finder subPath: peer-finder - name: nacos-data mountPath: /home/nacos/data subPath: data - name: nacos-data mountPath: /home/nacos/logs subPath: logs volumes: - name: nacos-data persistentVolumeClaim: claimName: nfs-pvc
5.创建服务
apiVersion: v1 kind: Service metadata: name: nacos-headless namespace: {namespace} labels: app: nacos annotations: service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" spec: ports: - protocol: TCP port: 8848 targetPort: 8848 name: nacos-http - protocol: TCP port: 9848 targetPort: 9848 name: nacos-rpc - protocol: TCP port: 9849 targetPort: 9849 name: raft-rpc - protocol: TCP port: 7848 targetPort: 7848 name: old-raft-rpc clusterIP: None selector: app: nacos --- apiVersion: v1 kind: Service metadata: name: nacos namespace: {namespace} labels: app: nacos annotations: service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" spec: ports: - protocol: TCP port: 8848 targetPort: 8848 name: nacos-http - protocol: TCP port: 9848 targetPort: 9848 name: nacos-rpc - protocol: TCP port: 9849 targetPort: 9849 name: raft-rpc - protocol: TCP port: 7848 targetPort: 7848 name: old-raft-rpc selector: app: nacos
以上文章参考https://github.com/nacos-group/nacos-k8s
只是nacos-k8s这个里面有个坑,就是缺了
- name: MYSQL_SERVICE_HOST
valueFrom:
configMapKeyRef:
name: nacos-cm
key: mysql.db.host
同时为方便集群访问,我这里建立一个nacos服务直接访问集群
以上需要将{namespace}修改为自己的命名空间
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
OpenHarmony-2.0-Canary 编译构建流程
2.0版本的编译发生了很大的变化,由hb命令,变成了build.sh。经过分析发现,build.sh也是调用各种的python脚本来进行构建。这样看来1.1.0用json写配置,用python的 hb 解析,再调用gn、ninja来执行编译构建反而更简单了。估计下个版本还会改,我估计会统一成hb命令。 所以这次先简单分析下。 ./build.sh --product-name Hi3516DV300 ```Bash -x #回显参数和命令 -v #回显执行的源码 打开 OpenHarmony\build\build_scripts 下的 build.sh、build_common.sh、build_ohos.sh、build_standard.sh、parse_params.sh 将set -e 改为 set -exv 开启调试模式 ``` ## build.sh 加了调试参数,我们来分析下 build.sh 在编译构建中做了什么。 ```Bash # 各种判断和获取参数 # preloader 一.预加载 ${PYTHON3} ${source_root_dir}/build/loa...
- 下一篇
OC与Swift API的交互!
互用性是让 Swift 和 Objective-C 相接合的一种特性,使你能够在一种语言编写的文件中使用另一种语言。当你准备开始把 Swift 融入到你的开发流程中时,你应该懂得如何利用互用性来重新定义并提高你写 Cocoa 应用的方案。 ![](https://upload-images.jianshu.io/upload_images/26131404-e1ce853b619ae7c8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 互用性很重要的一点就是允许你在写 Swift 代码时使用 Objective-C 的 API 接口。当你导入一个 Objective-C 框架后,你可以使用原生的 Swift 语法实例化它的 Class 并且与之交互。 ## 初始化 为了使用 Swift 实例化 Objective-C 的 Class,你应该使用 Swift 语法调用它的一个初始化器。当 Objective-C 的init方法变化到 Swift,他们用 Swift 初始化语法呈现。“init”前缀被截断当作一个关键字,用来...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 2048小游戏-低调大师作品
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长