樊建峰 發表於 2020-3-24 20:23:00

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&amp;connectTimeout=1000&amp;socketTimeout=3000&amp;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]
查看完整版本: kubernetes集群:nacos搭建