当前位置: 首页 > 知识库问答 >
问题:

动态更新吊舱的节点选择器字段

长孙兴德
2023-03-14

这几天我一直在尝试k8s的不同东西。我想知道POD规范中的nodeSelector字段。据我所知,我们必须为节点分配一些标签,这些标签可以进一步用于POD规范的nodeSelector字段部分。

基于nodeSelector将节点分配给pods工作得很好。但是,在创建pod之后,现在我想更新/覆盖nodeSelector字段,这将根据更新的新nodeSelector标签将pod部署到新节点。

我的想法与使用kubectl label命令处理普通标签的方式相同。

谢了。

共有1个答案

章乐逸
2023-03-14

虽然按照cookiedough的建议手动编辑部署是一个选项,但我相信使用kubctl修补程序将是一个更好的解决方案。

您可以使用yaml文件或JSON字符串进行补丁,这样可以更容易地将内容集成到脚本中。这里有一个完整的参考资料。

下面是我使用的nginx的一个简单部署,它将在node-1上创建:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
      nodeSelector:
        kubernetes.io/hostname: node-1
spec:
  template:
    spec:
      nodeSelector:
        kubernetes.io/hostname: node-2
 类似资料:
  • 我已经在节点(node1)上的pod(pod1)上部署了一个Spring Boot应用程序。我还在不同节点(node2)上的另一个pod(pod2)上部署了JMeter。我试图从POD2执行自动负载测试。为了执行负载测试,我要求为每个测试用例重新启动pod1。如何从POD2重新启动pod1?

  • 我们正在使用Docker 1.19运行库伯内特斯(1.18) Container是一个基于Java13的Spring启动应用程序(使用基本图像作为openjdk: 13-alpin),下面是内存设置。 豆荚: 内存-最小448M,最大2500M cpu-最小值0.1 容器: Xms:256M,Xmx:512M 当流量发送更长时间时,容器会突然重新启动;在Prometheus中,我可以看到Pod内存

  • 我已经设置了普罗米修斯,通过跟踪普罗米修斯留档来监控库本内斯的指标。 普罗米修斯现在有很多有用的指标。 但是,我看不到任何引用我的pod或节点状态的指标。 理想情况下-我希望能够绘制pod状态(运行,挂起,CrashLoopBackoff,错误)和节点(NodeNow,就绪)。 这个度量单位在哪里?如果没有,我可以添加到某个地方吗?怎么做?

  • 在尝试了各种提供程序(bare kubernetes、openshift、aws eks)后,我们发现即使节点有足够的资源(cpu、ram、hdd),在达到~110个POD后,新的POD仍处于挂起状态,除了事件之外没有任何事件或错误 我们已经尝试在kubelet、scheduler等中搜索任何相关的日志--但除了前面提到的这个事件之外什么也没有。 是否有人成功地运行了每个节点超过110个豆荚?我们

  • 卸载calico后,kubectl-f calico.yaml无法在集群中创建新的豆荚。集群中的任何新吊舱都处于容器创建状态。Kubectl Description显示了以下错误: 警告失败CreatePodSandbox 2M kubelet,10.0.12.2创建吊舱沙箱失败:rpc错误:代码=未知desc=[未能为吊舱设置沙箱容器“F15743177FD70C5EABF70C60BE5B5B