我必须在MS Azure中手动创建Kubernetes群集,而不使用AKS。所以:
我已经创建了Deployment and LoadBalancer服务:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: wrapper
spec:
replicas: 2
template:
metadata:
labels:
app: wrapper
spec:
containers:
- name: wrapper
image: wrapper:latest
ports:
- containerPort: 8080
name: wrapper
---
apiVersion: v1
kind: Service
metadata:
name: wrapper
spec:
loadBalancerIP: <azure_loadbalancer_public_ip>
type: LoadBalancer
ports:
- port: 8080
selector:
app: wrapper
但是LoadBalancer服务External-IP始终处于挂起状态:
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP
wrapper LoadBalancer 10.233.38.7 <pending>
此外,telnet azure_loadbalancer_public_ip不起作用。我尝试使用NodePort代替LoadBalancer,但在这种情况下,我在k8s主服务器和k8s节点上有两个服务端点。
我想要的是一个入口点:azure_loadbalancer_public_ip
,它可以平衡群集中所有节点之间的流量。
能否请您帮助我了解我在做什么,并且可以在Kubernetes中将Azure外部负载均衡器与LoadBalancer服务“绑定”?
答案 0 :(得分:0)
您不必这样做,k8s(在正确配置时)可以为您处理。您要做的所有事情都赋予它适当的权利,以便能够在Azure中创建负载平衡器。
答案 1 :(得分:0)
基本上,它无法与Azure API进行通信来创建负载均衡器。您基本上需要:
--cloud-provider=azure
添加到kube-apiserver
,kube-controller-manager
和节点上运行的所有kubelets
。如果您安装的Cloud Controller Manager(在撰写本文时是K8s 1.12中的Beta)是不需要的。请注意,--cloud-provider
选项将在某些时候被弃用。