LoadBalancer external-ip 卡在待定状态
LoadBalancer external-ip stuck in pending
我已经使用 kubeadm 创建了一个带有 AWS ec2 实例的 Kubernetes 集群,但是当我尝试创建类型为 LoadBalancer 的服务时,我得到一个 EXTERNAL-IP 挂起状态
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 123m
nginx LoadBalancer 10.107.199.170 <pending> 8080:31579/TCP 45m52s
我的创建命令是
kubectl expose deployment nginx --port 8080 --target-port 80 --type=LoadBalancer
我不确定我做错了什么。
我希望看到的是为负载平衡器提供的外部 IP 地址。
请问有没有人遇到过并成功解决的?
谢谢。
您需要在 k8s 和 AWS 之间设置接口,这是一个ws-cloud-provider-controller。
apiVersion: kubeadm.k8s.io/v1beta1
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
cloud-provider: aws
更多详情可查看:
- https://kubernetes.io/docs/concepts/cluster-administration/cloud-providers/
- https://blog.heptio.com/setting-up-the-kubernetes-aws-cloud-provider-6f0349b512bd
- https://blog.scottlowe.org/2019/02/18/kubernetes-kubeadm-and-the-aws-cloud-provider/
- https://itnext.io/kubernetes-part-2-a-cluster-set-up-on-aws-with-aws-cloud-provider-and-aws-loadbalancer-f02c3509f2c2
完成此设置后,您不仅可以控制为类型为 LoadBalancer 的每个 k8s 服务创建 AWS LB。而且,您还可以使用 [=26= 控制许多事情]注释.
apiVersion: v1
kind: Service
metadata:
name: example
namespace: kube-system
labels:
run: example
annotations:
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:xx-xxxx-x:xxxxxxxxx:xxxxxxx/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx #replace this value
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
spec:
type: LoadBalancer
ports:
- port: 443
targetPort: 5556
protocol: TCP
selector:
app: example
Different settings can be applied to a load balancer service in AWS using annotations.
我已经使用 kubeadm 创建了一个带有 AWS ec2 实例的 Kubernetes 集群,但是当我尝试创建类型为 LoadBalancer 的服务时,我得到一个 EXTERNAL-IP 挂起状态
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 123m
nginx LoadBalancer 10.107.199.170 <pending> 8080:31579/TCP 45m52s
我的创建命令是
kubectl expose deployment nginx --port 8080 --target-port 80 --type=LoadBalancer
我不确定我做错了什么。
我希望看到的是为负载平衡器提供的外部 IP 地址。
请问有没有人遇到过并成功解决的?
谢谢。
您需要在 k8s 和 AWS 之间设置接口,这是一个ws-cloud-provider-controller。
apiVersion: kubeadm.k8s.io/v1beta1
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
cloud-provider: aws
更多详情可查看:
- https://kubernetes.io/docs/concepts/cluster-administration/cloud-providers/
- https://blog.heptio.com/setting-up-the-kubernetes-aws-cloud-provider-6f0349b512bd
- https://blog.scottlowe.org/2019/02/18/kubernetes-kubeadm-and-the-aws-cloud-provider/
- https://itnext.io/kubernetes-part-2-a-cluster-set-up-on-aws-with-aws-cloud-provider-and-aws-loadbalancer-f02c3509f2c2
完成此设置后,您不仅可以控制为类型为 LoadBalancer 的每个 k8s 服务创建 AWS LB。而且,您还可以使用 [=26= 控制许多事情]注释.
apiVersion: v1
kind: Service
metadata:
name: example
namespace: kube-system
labels:
run: example
annotations:
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:xx-xxxx-x:xxxxxxxxx:xxxxxxx/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx #replace this value
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
spec:
type: LoadBalancer
ports:
- port: 443
targetPort: 5556
protocol: TCP
selector:
app: example
Different settings can be applied to a load balancer service in AWS using annotations.