kubernetes集群:nacos搭建
<h1 id="kubernetes集群nacos搭建">kubernetes集群:nacos搭建</h1><p>根据官网搭建失败后(失败原因详细见https://www.cnblogs.com/zoujiaojiao/p/12558946.html)。参考http://www.fengzhihai.cn/2020/03/17/k8s-nacos/重新搭建了一遍。搭建k8s集群1个多月,一直在学习中。有不足的请看客指出。</p>
<h2 id="文件说明">文件说明</h2>
<p><img src="https://img2020.cnblogs.com/blog/1444147/202003/1444147-20200324190700268-1308122387.png"></p>
<ul>
<li>custom.properties</li>
</ul>
<pre><code>server.servlet.contextPath=/nacos
server.port=8848
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=密码
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i
server.tomcat.basedir=
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=true
nacos.core.auth.default.token.expire.seconds=18000
nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
nacos.core.auth.caching.enabled=false
nacos.istio.mcp.server.enabled=false
</code></pre>
<ul>
<li>configmap.sh<br>
-n kube-ops 是命名空间。</li>
</ul>
<pre><code>kubectl create configmap custom.properties --from-file=./custom.properties -n kube-ops
</code></pre>
<p>生成配置:# sh configmap.sh</p>
<ul>
<li>nacos-pvc.yaml</li>
</ul>
<pre><code>apiVersion: v1
kind: PersistentVolume
metadata:
name: nacos-pv
spec:
capacity:
storage: 50Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
nfs:
server: 10.10.3.84 nfs服务器地址
path: /data/nacos nfs挂载的目录。一定要确保存在。
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: nacos-pvc
namespace: kube-ops
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 50Gi
</code></pre>
<p>创建pv 和 pvc :</p>
<pre><code># kubectl create -f nacos-pvc.yaml
</code></pre>
<p>查看:</p>
<pre><code># kubectl get pv -n kube-ops|grep nacos
# kubectl get pvc -n kube-ops|grep nacos
</code></pre>
<p>图片中,一部分pv是之前按照官网搭建时产生的。可以删除<br>
<img src="https://img2020.cnblogs.com/blog/1444147/202003/1444147-20200324193657643-1034147806.png"><br>
删除方式:<br>
确保pod都删除了。先删除pvc</p>
<pre><code># kubectl get pvc
# kubectl delete pvc datadir-nacos-0
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1444147/202003/1444147-20200324200711090-1223731975.png"><br>
再删除pv</p>
<pre><code># kubectl delete pv pvc-04b58b4c-06c7-431b-a0cc-e6c624dc6b9f
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1444147/202003/1444147-20200324200956272-1279722766.png"><br>
<img src="https://img2020.cnblogs.com/blog/1444147/202003/1444147-20200324201019486-145331998.png"></p>
<ul>
<li>nacos-deployment.yaml</li>
</ul>
<pre><code>apiVersion: apps/v1
kind: Deployment
metadata:
name: nacos
namespace: kube-ops
labels:
name: nacos
spec:
selector:
matchLabels:
name: nacos
template:
metadata:
name: nacos
labels:
name: nacos
spec:
containers:
- name: nacos-mysql
image: nacos/nacos-mysql:5.7
imagePullPolicy: IfNotPresent
env:
- name: MYSQL_USER
value: "root"
- name: MYSQL_DATABASE
value: "nacos"
- name: MYSQL_ROOT_PASSWORD
value: "密码"
volumeMounts:
- mountPath: /var/lib/mysql
name: nacos-pv
subPath: mysql
ports:
- containerPort: 3306
name: "mysql-port"
- name: nacos
image: nacos/nacos-server:latest
imagePullPolicy: Always
name: nacos-server
env:
- name: "PREFER_HOST_MODE"
value: "hostname"
- name: "MODE"
value: "standalone"
- name: "SPRING_DATASOURCE_PLATFORM"
value: "mysql"
- name: "MYSQL_SERVICE_HOST"
value: "mysql"
- name: "MYSQL_SERVICE_DB_NAME"
value: "nacos_devtest"
- name: "MYSQL_SERVICE_PORT"
value: "3306"
- name: "MYSQL_SERVICE_USER"
value: "root"
- name: "MYSQL_SERVICE_PASSWORD"
value: "nacos123"
ports:
- containerPort: 8848
name: "nacos-port"
volumeMounts:
- mountPath: /home/nacos/logs
name: nacos-pv
subPath: logs
- name: nacos-config
mountPath: /home/nacos/init.d/custom.properties
subPath: custom.properties
- mountPath: /etc/localtime
name: nacostime
volumes:
- name: nacos-pv
persistentVolumeClaim:
claimName: nacos-pvc
- name: nacos-config
configMap:
name: custom.properties
- name: nacostime
hostPath:
path: /etc/localtime
</code></pre>
<p>生成nacos的deployment</p>
<pre><code># kubectl create -f nacos-deployment.yaml
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1444147/202003/1444147-20200324201543438-69532712.png"><br>
查看pod:</p>
<pre><code># kubectl describe pods nacos-9b8479dd5-jlpsz-n kube-ops
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1444147/202003/1444147-20200324201649519-1629829310.png"><br>
查看mysql pod的日志:</p>
<pre><code># kubectl logs nacos-9b8479dd5-jlpsznacos-mysql -n kube-ops
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1444147/202003/1444147-20200324201839214-1803236119.png"><br>
查看nacos pod的日志:</p>
<pre><code># kubectl logs nacos-9b8479dd5-jlpsz nacos-server -n kube-ops
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1444147/202003/1444147-20200324202014266-512066454.png"></p>
<ul>
<li>nacos-service.yaml</li>
</ul>
<pre><code>apiVersion: v1
kind: Service
metadata:
name: nacos-service
namespace: kube-ops
spec:
#type: NodePort
ports:
- port: 3306
targetPort: 3306
name: "nacos-mysql-port"
- port: 8848
targetPort: 8848
name: "nacos-port"
selector:
name: nacos
</code></pre>
<p>生成service</p>
<pre><code># kubectl create -f nacos-service.yaml
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1444147/202003/1444147-20200324202125230-655348950.png"></p>
<ul>
<li>nacos-ingress.yaml</li>
</ul>
<pre><code>---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "1024m"
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
name: nacos
namespace: kube-ops
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: nacos.vonedao.com
http:
paths:
- backend:
serviceName: nacos-service
servicePort: 8848
</code></pre>
<p>生成ingress:</p>
<pre><code># kubectl create -f nacos-ingress.yaml
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/1444147/202003/1444147-20200324202144845-1596247459.png"></p>
<h2 id="验证">验证</h2>
<p>配置本地hosts。<br>
访问http://nacos.vonedao.com/ 会报错。需要访问:http://nacos.vonedao.com/nacos<br>
<img src="https://img2020.cnblogs.com/blog/1444147/202003/1444147-20200324202231880-321250680.png"></p><br><br>
来源:https://www.cnblogs.com/zoujiaojiao/p/12561573.html
頁:
[1]