kubernetes部署nacos集群

本次部署采用nfs作为存储

每个pod有独立存储通过变量实现 subPathExpr: logs/$(POD_NAME)

clusterIP: none  # 表示这是一个headless service

---
apiVersion: v1
kind: PersistentVolume
metadata:
   name: pv-nacos
spec:
   capacity:
       storage: 10Gi
   volumeMode: Filesystem
   accessModes:
     - ReadWriteOnce
   persistentVolumeReclaimPolicy: Retain
   storageClassName: nfs-nacos
   nfs:
      path: /data/nfs-volumes/nacos
      server: 10.0.0.77
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
   name:  nacos-claim
   namespace: kube-public
spec:
   accessModes:
     - ReadWriteOnce
   volumeMode: Filesystem
   resources:
     requests:
       storage: 10Gi
   storageClassName: nfs-nacos
---
apiVersion: v1
kind: Service
metadata:
  name: nacos-headless
  labels:
    app: nacos
  annotations:
    service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
spec:
  ports:
    - port: 8848
      name: server
      targetPort: 8848
  clusterIP: None
  selector:
    app: nacos
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: nacos
  namespace: kube-public
spec:
  serviceName: nacos-headless
  replicas: 3
  selector:
    matchLabels:
      app: nacos
  template:
    metadata:
      labels:
        app: nacos
    spec:
      containers:
      - name: nacos
        image: nacos/nacos-server:2.0.3
        imagePullPolicy: IfNotPresent
        resources:
            limits:
              cpu: 1000m
              memory: 1000Mi
            requests:
              cpu: 500m
              memory: 512Mi
        env:
         - name: POD_NAME
           valueFrom:
             fieldRef:
              apiVersion: v1
              fieldPath: metadata.name 
         - name: NACOS_SERVERS
           value: nacos-0.nacos-headless.kube-public.svc.cluster.local:8848 nacos-1.nacos-headless.kube-public.svc.cluster.local:8848 nacos-2.nacos-headless.kube-public.svc.cluster.local:8848
         - name: MYSQL_SERVICE_HOST
           value: mariadb.kube-public.svc.cluster.local
         - name: MYSQL_SERVICE_PORT
           value: "3306"
         - name: MYSQL_SERVICE_USER
           value: root
         - name: MYSQL_SERVICE_PASSWORD
           value: "123456"
         - name: MYSQL_SERVICE_DB_NAME
           value: nacos_config
        ports:
        - name: http 
          containerPort: 8848
          protocol: TCP
        - name: rpc
          containerPort: 9848
          protocol: TCP
        volumeMounts:
        - mountPath: /home/nacos/logs
          subPathExpr: logs/$(POD_NAME)
          name: data

      imagePullSecrets:
      - name: harbor-secret
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: nacos-claim



实现Nginx 4层反代实现

    upstream backend-nacos {
        server nacos-0.nacos-headless.kube-public.svc.cluster.local:8848;
    }

部署结果

### 部署 Nacos 单机版到 Kubernetes #### 准备工作 为了在 Kubernetes部署 Nacos 单机版本,需先确保已配置Kubernetes 集群并安装了 `kubectl` 工具用于管理集群资源。对于验证部署情况可使用命令 `kubectl get pod` 来确认 Pod 的运行状态[^1]。 #### 创建命名空间 建议为 Nacos 创建独立的命名空间来隔离环境中的其他应用服务: ```bash kubectl create namespace nacos-system ``` #### 下载 Helm Chart 或 使用 YAML 文件 有两种方式可以部署 NacosKubernetes 中: - **Helm 方式**: 如果已经安装了 Helm 客户端,则可以通过官方提供的 Helm Chart 进行快速部署。 添加 Nacos 的 Helm 仓库: ```bash helm repo add nacos https://nacos-charts.storage.googleapis.com/ ``` 更新本地 Helm 库索引: ```bash helm repo update ``` 安装单机版 Nacos: ```bash helm install my-nacos-release --set replicaCount=1,mode=standalone nacos/nacos -n nacos-system ``` - **YAML 文件方式**: 对于偏好直接操作 Kubernetes 资源文件的情况,可以从 GitHub 获取最新的稳定版 Nacos 发布包内的 Kubernetes 相关模板,并对其进行适当修改以适应单节点模式需求后再提交至集群执行创建动作。 #### 访问 Nacos 控制台 完成上述步骤之后,可通过 NodePort 或者 Ingress 网关等方式暴露外部 IP 地址给客户端设备连接访问 Nacos Web UI 页面;也可以通过 Port-forwarding 技术临时映射端口方便调试测试目的: ```bash kubectl port-forward svc/my-nacos-release-nacos-headless 8848:8848 -n nacos-system ``` 此时应该能够在浏览器里输入 http://localhost:8848/nacos 登录界面尝试登录体验新搭建起来的服务实例了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恒云客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值