kubernetes如何选择要添加到AWS上的负载均衡器的节点?

Fab*_*o S 5 amazon-web-services amazon-elb kubernetes kubeadm

一些信息:

  • Kubernetes(1.5.1)
  • AWS
  • 1个主节点和1个节点(均为ubuntu 16.04)
  • k8s通过kubeadm安装
  • Terraform由我制作

请不要回复使用kube-up,kops或类似的东西.这是关于了解k8s如何在幕后工作.系统中存在太多无法解释的魔法,我想要理解它.

==问题:

在k8s [aws]上创建类型负载均衡器的服务时(例如):

apiVersion: v1
kind: Service
metadata:
  name: kubernetes-dashboard
  namespace: kube-system
  labels:
    k8s-addon: kubernetes-dashboard.addons.k8s.io
    k8s-app: kubernetes-dashboard
    kubernetes.io/cluster-service: "true"
    facing: external
spec:
  type: LoadBalancer
  selector:
    k8s-app: kubernetes-dashboard
  ports:
  - port: 80
Run Code Online (Sandbox Code Playgroud)

我成功地创建了一个内部或外部ELB,但没有任何机器被添加到ELB(我也可以污染主人,但没有任何变化).我的问题基本上是这样的:

https://github.com/kubernetes/kubernetes/issues/29298#issuecomment-260659722

子网和节点(但不是VPC)都标有"KubernetesCluster"(再次...... elb在正确的位置创建).但是没有添加节点.

在日志中

kubectl logs kube-controller-manager-ip-x-x-x-x -n kube-system
Run Code Online (Sandbox Code Playgroud)

后:

aws_loadbalancer.go:63] Creating load balancer for 
kube-system/kubernetes-dashboard with name:
acd8acca0c7a111e69ca306f22de69ae
Run Code Online (Sandbox Code Playgroud)

没有其他输出(它应该打印添加或删除的节点).我试图理解代码:

https://github.com/kubernetes/kubernetes/blob/master/pkg/cloudprovider/providers/aws/aws_loadbalancer.go 但不管是什么原因,这个函数不添加节点.

文件没有详细说明试图解释k8s决策背后的"过程".为了尝试理解k8s,我尝试/使用kops,kube up,kubeadm,kubernetes艰难的回购和阅读该死的代码,但我仍然无法理解如何在aws上选择k8s节点添加到elb.

因此,也不会在任何地方更改安全组.

它是ec2上的标签吗?Kublet设定?还要别的吗?

任何帮助是极大的赞赏.

谢谢,F.

小智 0

我认为节点注册是在 Kubernetes 外部管理的。我正在使用 kops,如果我在 AWS 中编辑 ASG 的大小,新节点不会在我的服务 ELB 中注册。但是,如果我使用 kops 编辑节点数,则新节点就在那里。

在文档中,当在 AWS 上运行时,kops实例组会映射到 ASG。在代码中中,它看起来像是调用 AWS 而不是 k8s API。

我知道您没有使用 kops,但我认为在 Terraform 中您需要复制 kops 正在进行的 AWS API 调用。