摘要:前言最近幾天完成了在部署順便寫(xiě)篇文章記錄下部署過(guò)程,項(xiàng)目地址有興趣的可以去了解下后續(xù)會(huì)提交到里面。
前言
最近幾天完成了 Nacos 在Kubernetes 部署,順便寫(xiě)篇文章記錄下部署過(guò)程,項(xiàng)目地址Nacos-K8s,有興趣的可以去了解下,后續(xù)會(huì)提交到Nacos-Group 里面。
Kubernetes Nacos本項(xiàng)目包含一個(gè)可構(gòu)建的Nacos Docker Image,旨在利用StatefulSets在Kubernetes上部署Nacos
已知限制暫時(shí)不支持動(dòng)態(tài)增量擴(kuò)容
必須使用持久卷,本項(xiàng)目實(shí)現(xiàn)NFS持久卷的例子,如果使用emptyDirs可能會(huì)導(dǎo)致數(shù)據(jù)丟失
Docker 鏡像在build目錄中包含了已經(jīng)打好包的Nacos(基于develop分支,已提PR,目前的release版本都不支持k8s集群)項(xiàng)目包,以及鏡像制作文件,鏡像基礎(chǔ)環(huán)境Ubuntu 16.04、Open JDK 1.8(JDK 8u111).目前鏡像已經(jīng)提交到Docker Hub。
項(xiàng)目目錄目錄 | 描述 |
---|---|
build | 構(gòu)建Nacos鏡像的項(xiàng)目包以及Dockerfile |
deploy | k8s部署yaml文件 |
Initdb | Nacos 集群數(shù)據(jù)庫(kù)初始化SQL腳本 |
本項(xiàng)目的使用,是基于你已經(jīng)對(duì)Kubernetes有一定的認(rèn)知,所以對(duì)如何搭建K8S集群,請(qǐng)自行g(shù)oogle或者百度
NFS安裝方面也不是本文的重點(diǎn),請(qǐng)自行g(shù)oogle或者百度
環(huán)境準(zhǔn)備機(jī)器配置(作者演示使用阿里云ECS)
機(jī)器內(nèi)網(wǎng)IP | 主機(jī)名 | 機(jī)器配置 |
---|---|---|
172.17.79.3 | k8s-master | CentOS Linux release 7.4.1708 (Core) 單核 內(nèi)存4G 普通云盤(pán)40G |
172.17.79.4 | node01 | CentOS Linux release 7.4.1708 (Core) 單核 內(nèi)存4G 普通云盤(pán)40G |
172.17.79.5 | node02 | CentOS Linux release 7.4.1708 (Core) 單核 內(nèi)存4G 普通云盤(pán)40G |
Kubernetes 版本:1.12.2 (如果你和我一樣只使用了三臺(tái)機(jī)器,那么記得開(kāi)啟master節(jié)點(diǎn)的部署功能)
NFS 版本:4.1 在k8s-master進(jìn)行安裝Server端,并且指定共享目錄,本項(xiàng)目指定的/data/nfs-share
Git
搭建步驟 Clone項(xiàng)目在每臺(tái)機(jī)器上都Clone本工程,演示工程就是導(dǎo)入根目錄,所以部署路徑都是root/nacos-k8s
git clone https://github.com/paderlol/nacos-k8s.git部署數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)是以指定節(jié)點(diǎn)的方式部署,主庫(kù)部署在node01節(jié)點(diǎn),從庫(kù)部署在node02節(jié)點(diǎn).
部署主庫(kù)
#進(jìn)入clone下來(lái)的工程根目錄 cd nacos-k8s # 在k8s上創(chuàng)建mysql主庫(kù) kubectl create -f deploy/mysql/mysql.yml
部署備庫(kù)
#進(jìn)入clone下來(lái)的工程根目錄 cd nacos-k8s # 在k8s上創(chuàng)建mysql備庫(kù) kubectl create -f deploy/mysql/mysql-bak.yml
注意:如果工程不是導(dǎo)入機(jī)器的根目錄,那么同樣需要修改mysql.yaml和mysql-bak.yaml中掛載路徑,因?yàn)閿?shù)據(jù)庫(kù)PVC使用的是本地卷,請(qǐng)注意更改配置中的path路徑如下所示
apiVersion: v1 kind: PersistentVolume metadata: name: mysql-pv-volume labels: type: local spec: storageClassName: manual capacity: storage: 20Gi accessModes: - ReadWriteOnce hostPath: path: "/root/nacos-k8s/mysql" --- ....其他配置 --- apiVersion: v1 kind: PersistentVolume metadata: name: mysql-init-pv-volume labels: type: local spec: storageClassName: initdb capacity: storage: 20Gi accessModes: - ReadWriteOnce hostPath: path: "/root/nacos-k8s/initdb"
部署后查看數(shù)據(jù)庫(kù)是否已經(jīng)正常運(yùn)行
#查看主庫(kù)是否正常運(yùn)行 kubectl get pod -l app=mysql NAME READY STATUS RESTARTS AGE mysql-bak-5c5b5bd479-922zv 1/1 Running 0 2d23h #查看備庫(kù)是否正常運(yùn)行 kubectl get pod -l app=mysql-bak部署NFS
創(chuàng)建角色 K8S在1.6以后默認(rèn)開(kāi)啟了RBAC
kubectl create -f deploy/nfs/rbac.yaml
提示:如果你的K8S命名空間不是默認(rèn)"default",那么在創(chuàng)建RBAC之前先執(zhí)行以下腳本
# 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
創(chuàng)建ServiceAccount 以及部署NFS-Client Provisioner
kubectl create -f deploy/nfs/deployment.yaml
創(chuàng)建NFS StorageClass
kubectl create -f deploy/nfs/class.yaml
查看NFS是否運(yùn)行正常
kubectl get pod -l app=nfs-client-provisioner部署Nacos
獲取主庫(kù)從庫(kù)在K8S的地址
# 查看主庫(kù)和從庫(kù)的cluster ip kubectl get svc mysql NodePort 10.105.42.2473306:31833/TCP 2d23h mysql-bak NodePort 10.105.35.138 3306:31522/TCP 2d23h
修改配置文件depoly/nacos/nacos-pvc-nfs.yaml,找到如下配置,填入上一步查到的主庫(kù)和從庫(kù)地址
db.host.zero: "主庫(kù)地址" db.name.zero: "nacos_devtest" db.port.zero: "3306" db.host.one: "備庫(kù)地址" db.name.one: "nacos_devtest" db.port.one: "3306" db.user: "nacos" db.password: "nacos"
創(chuàng)建并運(yùn)行Nacos集群
kubectl create -f nacos-k8s/deploy/nacos/nacos-pvc-nfs.yaml
查看是否運(yùn)行正常
kubectl get pod -l app=nacos AME 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測(cè)試 服務(wù)注冊(cè)
curl -X PUT "http://集群地址:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080"服務(wù)發(fā)現(xiàn)
curl -X GET "http://集群地址:8848/nacos/v1/ns/instances?serviceName=nacos.naming.serviceName"配置推送
curl -X POST "http://集群地址:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=helloWorld"配置獲取
curl -X GET "http://集群地址:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"常見(jiàn)問(wèn)題
Q:如果不想搭建NFS,并且想體驗(yàn)nacos-k8s?
A:可以跳過(guò)部署nfs的步驟,最后創(chuàng)建運(yùn)行nfs時(shí),使用一下以下方式創(chuàng)建
kubectl create -f nacos-k8s/deploy/nacos/nacos-quick-start.yaml
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/72120.html
摘要:前言最近幾天完成了在部署順便寫(xiě)篇文章記錄下部署過(guò)程,項(xiàng)目地址有興趣的可以去了解下后續(xù)會(huì)提交到里面。 前言 最近幾天完成了 Nacos 在Kubernetes 部署,順便寫(xiě)篇文章記錄下部署過(guò)程,項(xiàng)目地址Nacos-K8s,有興趣的可以去了解下,后續(xù)會(huì)提交到Nacos-Group 里面。 Kubernetes Nacos 本項(xiàng)目包含一個(gè)可構(gòu)建的Nacos Docker Image,旨在利用...
摘要:元數(shù)據(jù)數(shù)據(jù)如配置和服務(wù)描述信息,如服務(wù)版本權(quán)重容災(zāi)策略負(fù)載均衡策略鑒權(quán)配置各種自定義標(biāo)簽,從作用范圍來(lái)看,分為服務(wù)級(jí)別的元信息集群的元信息及實(shí)例的元信息。 什么是Nacos? Nacos 是構(gòu)建以服務(wù)為中心的現(xiàn)代應(yīng)用架構(gòu) (例如微服務(wù)范式、云原生范式) 的服務(wù)基礎(chǔ)設(shè)施。 Nacos可以做什么? 1、動(dòng)態(tài)配置服務(wù):支持以中心化、外部化和動(dòng)態(tài)化的方式管理所有環(huán)境的配置。動(dòng)態(tài)配置消除了配置變...
摘要:年月阿里巴巴高級(jí)技術(shù)專家許真恩慕義發(fā)布了首個(gè)開(kāi)源版本,作為的開(kāi)源實(shí)現(xiàn)截止目前已經(jīng)更新到了的大版本,并且支持大規(guī)模生產(chǎn)版本。支持目前幾乎所有主流的微服務(wù)生態(tài)體系。 前言 6月份阿里開(kāi)源的Nacos出了1.0.1版本,從去年7月份第一個(gè)release版本到現(xiàn)在一直在默默關(guān)注 官方的版本規(guī)劃為:Nacos從0.8.0開(kāi)始支持生產(chǎn)可用,1.0版本可大規(guī)模生產(chǎn)可用,2.0版本接入k8s、Spri...
摘要:是一個(gè)相對(duì)比較新的微服務(wù)框架,年才推出的版本雖然時(shí)間最短但是相比等框架提供的全套的分布式系統(tǒng)解決方案。提供線程池不同的服務(wù)走不同的線程池,實(shí)現(xiàn)了不同服務(wù)調(diào)用的隔離,避免了服務(wù)器雪崩的問(wèn)題。通過(guò)互相注冊(cè)的方式來(lái)進(jìn)行消息同步和保證高可用。 Spring Cloud 是一個(gè)相對(duì)比較新的微服務(wù)框架,...
閱讀 2188·2021-11-15 11:38
閱讀 1151·2021-09-06 15:02
閱讀 3379·2021-08-27 13:12
閱讀 1352·2019-08-30 14:20
閱讀 2389·2019-08-29 15:08
閱讀 636·2019-08-29 14:08
閱讀 1722·2019-08-29 13:43
閱讀 1463·2019-08-26 12:11