kube-controller-manager输出错误"无法更改NodeName"

时间:2016-11-17 18:51:07

标签: amazon-web-services kubernetes coreos

我在AWS上使用kubernetes和CoreOS& flannel VLAN网络。 (遵循本指南https://coreos.com/kubernetes/docs/latest/getting-started.html) k8s版本为1.4.6

我有以下node-exporter daemon-set。

apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: node-exporter
  labels:
    app: node-exporter
    tier: monitor
    category: platform
spec:
  template:
    metadata:
      labels:
        app: node-exporter
        tier: monitor
        category: platform
      name: node-exporter
    spec:
      containers:
      - image: prom/node-exporter:0.12.0
        name: node-exporter
        ports:
        - containerPort: 9100
          hostPort: 9100
          name: scrape
      hostNetwork: true
      hostPID: true

当我运行它时,kube-controller-manager会重复输出错误,如下所示:

E1117 18:31:23.197206       1 endpoints_controller.go:513]
Endpoints "node-exporter" is invalid:
[subsets[0].addresses[0].nodeName: Forbidden: Cannot change NodeName for 172.17.64.5 to ip-172-17-64-5.ec2.internal,
subsets[0].addresses[1].nodeName: Forbidden: Cannot change NodeName for 172.17.64.6 to ip-172-17-64-6.ec2.internal,
subsets[0].addresses[2].nodeName: Forbidden: Cannot change NodeName for 172.17.80.5 to ip-172-17-80-5.ec2.internal,
subsets[0].addresses[3].nodeName: Forbidden: Cannot change NodeName for 172.17.80.6 to ip-172-17-80-6.ec2.internal,
subsets[0].addresses[4].nodeName: Forbidden: Cannot change NodeName for 172.17.96.6 to ip-172-17-96-6.ec2.internal]

仅提供信息,尽管有这个错误消息,node_exporter可以在例如172-17-96-6:9100上访问。我的节点位于专用网络中,包括k8s master。

但是这些日志输出太多,很难从我们的日志控制台看到其他日志。我能看到如何解决此错误吗?

因为我是从头开始构建我的k8s群集,所以cloud-provider=aws标志最初没有激活,我最近打开了它,但不确定它是否与此问题有关。

1 个答案:

答案 0 :(得分:0)

看起来这是由我的另一个清单文件

引起的
apiVersion: v1
kind: Service
metadata:
  name: node-exporter
  labels:
    app: node-exporter
    tier: monitor
    category: platform
  annotations:
    prometheus.io/scrape: 'true'
spec:
  clusterIP: None
  ports:
  - name: scrape
    port: 9100
    protocol: TCP
  selector:
    app: node-exporter
  type: ClusterIP

我认为有必要公开上面的node-exporter守护进程集,但是当我在守护进程集(实际上是一个pod)清单中设置hostNetwork: true时,它可能会引入某种冲突。我不是100%肯定,但在我删除此服务后,错误消失,而我仍然可以从k8s群集外部访问172-17-96-6:9100

我在设置prometheus和节点导出器时紧接着这篇文章, https://coreos.com/blog/prometheus-and-kubernetes-up-and-running.html

如果其他人面临同样的问题,我会在这里留下我的评论。