我有一个在AWS中使用kubeadm
构建的单节点Kubernetes"集群"。
我使用此配置部署了一个简单的 Nginx 部署:
kind: Deployment
apiVersion: apps/v1
metadata:
name: nginx0-deployment
labels:
app: nginx0-deployment
spec:
replicas: 1
selector:
matchLabels:
app: nginx0
template:
metadata:
labels:
app: nginx0
spec:
containers:
- name: nginx
image: k8s.gcr.io/nginx:latest
ports:
- containerPort: 80
name: backend-http
我还创建了一个 AWS ELB 负载均衡器:
kind: Service
apiVersion: v1
metadata:
name: nginx0-service
balancing-enabled: "true"
spec:
selector:
app: nginx0-deployment
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
这将创建ELB并在K8s实例安全组中打开相关端口。
{ec2-instance} ~ $ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nginx0-deployment-548f99f47c-ns75w 1/1 Running 0 3m45s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 25h
service/nginx0-service LoadBalancer 10.106.179.191 acfc4150....elb.amazonaws.com 80:30675/TCP 63s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx0-deployment 1/1 1 1 3m45s
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx0-deployment-548f99f47c 1 1 1 3m45s
但是,ELB和POD之间仍然缺少一些东西,因为浏览到http://acfc4150....elb.amazonaws.com/
不起作用 - Chrome说ERR_EMPTY_RESPONSE。
我想这与 ELB 端口映射 80:30675/TCP 有关 - 我已经检查了实例上的传入流量,我看到了端口 30675 的数据包,但没有返回。好像这个端口和 POD 的端口 80 之间的映射没有设置?
知道我应该向清单中添加什么才能使其正常工作吗?
谢谢!
你有错误的标签;你的部署有app: nginx0-deployment
,但你的 Pod 有app: nginx0
,Service
不以部署为目标,而是以 Pod 为目标
更新您的Service
,使其具有:
spec:
selector:
app: nginx0
相反