nacos 在k8s 搭建 No preemption victims found for incoming pod

2,937 阅读2分钟

搭建nacos的时候 遇到 No preemption victims found for incoming pod

先写结论

修改 deploy/nfs/class.yaml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: managed-nfs-storage
#主要修改是这 原来是 provisioner: fuseim.pri/ifs
provisioner: cluster.local/nfs-subdir-external-provisioner 
parameters:
  archiveOnDelete: "false"

然后重新运行 就可以了

image.png

原因

  在 k8s 1.20 之后,出于对性能和统一 apiserver 调用方式的初衷,k8s 移除了对 SelfLink 的支持,而默认上面指定的 provisioner 版本需要 SelfLink 功能,因此 PVC 无法进行自动制备。

找问题

刚开始看到这个问题,以为是cpu 内存方面的问题,检查了下,还有空余啊。。。后面感觉可能是

    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: "app"
                    operator: In
                    values:
                      - nacos
              topologyKey: "kubernetes.io/hostname"

虽然感觉不是,但还是测试了一下 也不对,这个时候只能去github 仓库看看了

nacos-k8s 不在原来的nacos 仓库了,在 github.com/nacos-group…

找到了 使用kubernetes1.20.*部署踩坑记 · Issue #190 · nacos-group/nacos-k8s (github.com)

image.png

image.png

感觉有戏了,结果我一修改,就启动不了k8s 了。。

只能再看,找到了 k8s 1.28版本:使用StorageClass动态创建PV,SelfLink 问题修复_waiting for a volume to be created either by the e-CSDN博客

image.png

嗯呢,看着有戏

image.png

后续

本来我以为到这就结束了,结果

想给一个域名访问

新增一个文件 nacos-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: nacos-external
spec:
  type: NodePort
  ports:
    - name: tcp-nacos-external
      protocol: TCP
      port: 8848
      targetPort: 8848
      nodePort: 31848
  selector:
    app: nacos

新增一个文件 ingress-nacos.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nacos-dashboard-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  ingressClassName: nginx
  rules:
    - host: nacos-web.nacos-demo.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: nacos-external
                port:
                  number: 8848

本地hosts文件添加

nacosip nacos-web.nacos-demo.com

访问 nacos-web.nacos-demo.com/nacos/index.html

发现 nacos 版本为2.0.3 我本来以为会是2.3.0 发现 deploy/nacos/nacos-pvc-nfs.yaml 中

image 选择的是

      initContainers:
        - name: peer-finder-plugin-install
          image: nacos/nacos-peer-finder-plugin:1.1
          imagePullPolicy: Always
          volumeMounts:
            - mountPath: /home/nacos/plugins/peer-finder
              name: data
              subPath: peer-finder
      containers:
        - name: nacos
          imagePullPolicy: Always
          image: nacos/nacos-server:latest

使用的是 nacos/nacos-server:latest,但是这个不代表里面就是nacos最新版本,可能是其他版本的补丁

改为 nacos/nacos-server:v2.3.0

image.png