如何在 aws 上创建 Kubernetes 负载均衡器
How to create Kubernetes load balancer on aws
Kubernetes 为每个服务创建一个负载均衡器;在 GCE 中自动执行。我如何在 AWS 上管理类似的东西?
Kubernetes 服务基本上使用 kubeproxy 来处理内部流量。但是那个 kubeproxy ip 它没有访问外部网络的权限。
有办法做到这一点吗?
在您的服务定义中,将其 type
field 设置为 LoadBalancer
,如果您是 运行,kubernetes 将自动为您创建一个 AWS Elastic Load Balancer在 AWS 上。此功能应适用于 GCE/GKE、AWS 和 OpenStack。
例如,查看 guestbook-go example。
最小示例:
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
type: LoadBalancer
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
相关文档:
学习所有 service.beta.kubernetes.io
注释的最佳方法是阅读源代码:
为了使控制器能够管理 ELB,它需要在主实例 IAM 角色中设置权限,e.g.:
...
{
"Action": "elasticloadbalancing:*",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:GetRepositoryPolicy",
"ecr:DescribeRepositories",
"ecr:ListImages",
"ecr:BatchGetImage"
],
"Resource": "*",
"Effect": "Allow"
},
...
应在 kube-apiserver 上使用 --cloud-provider=aws
设置云提供商。
Kubernetes 为每个服务创建一个负载均衡器;在 GCE 中自动执行。我如何在 AWS 上管理类似的东西?
Kubernetes 服务基本上使用 kubeproxy 来处理内部流量。但是那个 kubeproxy ip 它没有访问外部网络的权限。
有办法做到这一点吗?
在您的服务定义中,将其 type
field 设置为 LoadBalancer
,如果您是 运行,kubernetes 将自动为您创建一个 AWS Elastic Load Balancer在 AWS 上。此功能应适用于 GCE/GKE、AWS 和 OpenStack。
例如,查看 guestbook-go example。
最小示例:
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
type: LoadBalancer
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
相关文档:
学习所有 service.beta.kubernetes.io
注释的最佳方法是阅读源代码:
为了使控制器能够管理 ELB,它需要在主实例 IAM 角色中设置权限,e.g.:
...
{
"Action": "elasticloadbalancing:*",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:GetRepositoryPolicy",
"ecr:DescribeRepositories",
"ecr:ListImages",
"ecr:BatchGetImage"
],
"Resource": "*",
"Effect": "Allow"
},
...
应在 kube-apiserver 上使用 --cloud-provider=aws
设置云提供商。