kubernetes 我正在尝试使用cluster.yaml deployment.yaml和service.yaml创建EKS群集,但nodeSelector未按预期工作

dced5bon  于 2023-01-01  发布在  Kubernetes
关注(0)|答案(1)|浏览(141)

我试图创建一个EKS群集,其中Jenkins运行在Jenkins节点上,Nexus运行在Nexus节点上。为此,我试图使用节点选择器,它没有按预期工作,我不明白我缺少了哪一部分。
我创建EKS集群的cluster.yaml如下所示:

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
  name: Devops-Test
  region: ap-south-1

vpc:
  id: vpc-xxxxxx
  cidr: "192.168.0.0/16"
  subnets:
    public:
      ap-south-1a:
        id: subnet-xxxx
      ap-south-1b:
        id: subnet-xxxx
    private:
      ap-south-1a:
        id: subnet-xxxx
      ap-south-1b:
        id: subnet-xxxx

nodeGroups:
  - name: jenkins-public-node-group
    tags: { role: "jenkins" }
    instanceType: t2.medium
    desiredCapacity: 2
  - name: jenkins-private-node-group
    tags: { role: "jenkins" }
    instanceType: t2.medium
    desiredCapacity: 2
    privateNetworking: true
  - name: nexus-public-node-group
    tags: { role: "nexus" }
    instanceType: t2.medium
    desiredCapacity: 2
  - name: nexus-private-node-group
    tags: { role: "nexus" }
    instanceType: t2.medium
    desiredCapacity: 2
    privateNetworking: true

我的部署.yaml如下

apiVersion: apps/v1
kind: Deployment
metadata:
  name: devops-tools
  namespace: devops
spec:
  replicas: 2
  selector:
    matchLabels:
      role: jenkins 
  template:
    metadata:
      labels:
        role: jenkins
    spec:
      nodeSelector:
        role: jenkins
      containers:
        - name: jenkins
          image: jenkins:2.60.3
          ports:
            - containerPort: 8080

最后我的service.yaml如下

apiVersion: v1
kind: Service
metadata:
  name: jenkins-service
  namespace: devops
spec:
  type: NodePort
  selector:
    role: jenkins
  ports:
    - nodePort: 31429
      port: 8080
      targetPort: 8080

我希望Jenkins仅在标记为role:jenkins的节点上运行,但它也可以在没有该标记的节点上运行,我甚至尝试过使用该标记应用label
kubectl标签节点角色=jenkins
然后应用deployment.yaml,但是部署仍然发生在没有该标签的节点上。

whhtz7ly

whhtz7ly1#

cluster.yaml文件中应使用labels而不是tags
有关详细信息,请参见这些docs
标签适用于AWS标签,而AWS标签与Kubernetes无关。在尝试应用节点选择器时,只有标签才相关。
顺便说一句-你也应该确保你的节点选择器被应用到你的pod上-因为pod不应该被允许在没有指定标签的节点上。从你所描述的行为来看-似乎pod是在没有节点选择器的情况下创建的。

相关问题