我已经使用以下yaml部署了一个小型应用程序。
apiVersion: apps/v1
kind: Deployment
metadata:
name: simpledotnetapi-deployment
spec:
replicas: 1
selector:
matchLabels:
app: simpledotnetapi-pod
template:
metadata:
labels:
app: simpledotnetapi-pod
spec:
imagePullSecrets:
- name: kimagereadersecret
containers:
- name: simpledotnetapi
image: docker.io/coreyperkins/simpledotnetapi:latest
ports:
- containerPort: 5000
---
apiVersion: v1
kind: Service
metadata:
name: simpledotnetapi-service
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 5000
nodePort: 30008
selector:
app: simpledotnetapi-pod
type: front-end
K8仪表板中的“服务”选项卡显示以下内容:
Name: simpledotnetapi-service
Cluster IP: 10.0.133.156
Internal Endpoints:
simpledotnetapi-service:80 TCP
simpledotnetapi-service:30008 TCP
External Endpoints:
13.77.76.204:80
-kubectl.exe的输出描述了svc simpledotnetapi-service
λ kubectl.exe describe svc simpledotnetapi-service
Name: simpledotnetapi-service
Namespace: default
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"simpledotnetapi-service","namespace":"default"},"spec":{"ports":[{"nodePort":3...
Selector: app=simpledotnetapi-pod,type=front-end
Type: LoadBalancer
IP: 10.0.133.156
LoadBalancer Ingress: 13.77.76.204
Port: <unset> 80/TCP
TargetPort: 5000/TCP
NodePort: <unset> 30008/TCP
Endpoints: <none>
Session Affinity: None
External Traffic Policy: Cluster
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal EnsuringLoadBalancer 33m (x4 over 2h) service-controller Ensuring load balancer
Normal EnsuredLoadBalancer 33m (x4 over 2h) service-controller Ensured load balancer
当我转到Pod时,可以看到我的docker容器按照指示在端口5000上运行良好。但是,当我导航到http://13.77.76.204/api/values时,应该看到返回了一个数组,但是连接超时了(Chrome中的ERR_CONNECTION_TIMED_OUT)。我已经在本地测试了此Docker容器,并且效果很好。我的假设是,我已经在pod规范中(在“部署”下)捣毁了“ containerPort”,但是我确定该容器在端口5000上仍然有效。也许我缺少一些配置位?但是,通过查看示例和文档,我无法找出为什么未与Pod建立连接,但是除了最初启动该应用程序之外,我没有看到Pod中的任何活动日志。
答案 0 :(得分:2)
吊舱/服务定义中的标签/选择器不匹配。
您正在将app: simpledotnetapi-pod
用于pod模板,并将app: simpledotnetapi
用作服务定义中的选择器。编辑其中之一以匹配。
标签type: front-end
在您的广告连播模板上也不存在。您需要添加它,或者可能将其从服务选择器中删除。
在那之后,端点列表准备就绪时,应该在您的端点列表中包含条目。