我怎么也想不起来。
这是一个使用Kubernetes的golang应用程序。docker文件运行正常,pod启动,但是连接超时。
apiVersion: v1
kind: Service
metadata:
name: ark-service
namespace: ark
spec:
type: NodePort
ports:
- port: 80
targetPort: 8080
nodePort: 30008
selector:
app: ark-api
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: ark-backend
namespace: ark
spec:
replicas: 1
selector:
matchLabels:
app: ark-api
template:
metadata:
labels:
app: ark-api
spec:
imagePullSecrets:
- name: regcred
containers:
- name: ark-api-container
image: xxx
imagePullPolicy: Always
resources:
limits:
memory: "128Mi"
cpu: "500m"
ports:
- name: web
containerPort: 8080
我能够很好地启动docker容器并且它运行。
结果是容器被终止了,我不知道为什么。
- 您可以检查端口8080是否在容器内监听
kubectl exec -it <pod_namen> -n <namespace> -- netstat -ntpl
如果容器中没有netstat命令,您可以尝试用它构建一个基本映像 - 检查节点上30080端口是否正在监听。在节点
netstat -ntpl | grep 30080
上运行以下命令,您也可以尝试不在服务yaml中指定节点端口,让kubernetes为您选择节点端口。这样可以避免指定已经在您的节点中使用的端口。
apiVersion: v1
kind: Service
metadata:
name: ark-service
namespace: ark
spec:
type: ClusterIP
selector:
component: ark-api
ports:
- port: 80
targetPort: 8080
尝试使用clusterIP而不是nodeport,如果你使用任何类型的入口,那么你必须在入口配置中创建规则,以便它可以通过负载均衡器将你的服务暴露给外部web。
我删除了服务并使用端口转发,并且能够引导一切。我得回到服务中心,想办法弄清楚。