在某些情况下无法访问kubernetes Clusterip + port

时间:2019-03-25 16:57:02

标签: docker kubernetes

我试图在k8s中设置一个dvwa环境,当我暴露dvwa吊舱的端口时,发现它无法正常工作。

我尝试暴露nginx样本,以确保我的k8s env正常工作。是的,nginx在我的本地计算机上运行良好

以下是一些信息

# dvwa.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: dvwa
spec:
  replicas: 2
  selector:
    app: dvwa
  template:
    metadata:
      labels:
        app: dvwa
    spec:
      containers:
        - name: dvwa
          image: citizenstig/dvwa:latest
          ports:
          - containerPort: 3306


# dvwa_service.yaml
apiVersion: v1
kind: Service
metadata:
  name: dvwa
spec:
  ports:
  - port: 3306
  selector:
    app: dvwa
  type: NodePort


$ kubectl get svc -o wide
NAME              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          
AGE     SELECTOR
dvwa              NodePort    10.98.238.130   <none>        
3306:32393/TCP   7m15s   app=dvwa
kubernetes        ClusterIP   10.96.0.1       <none>        443/TCP          
35h     <none>
nginx             NodePort    10.97.143.32    <none>        
80:31961/TCP     5m51s   app=nginx

当l ssh进入我的一台k8s机器并输入curl 10.97.143.32:80时,它返回nginx页面,但是curl 10.98.238.130:3306不起作用,则docker映像为citizenstig/dvwa,它暴露80和3306,我还尝试在dvwa_service.yaml中使用80端口,但仍然无法正常工作。

有人可以帮我吗???预先感谢!

1 个答案:

答案 0 :(得分:0)

您的服务定义中缺少

targetPort

尝试以下服务定义


apiVersion: v1
kind: Service
metadata:
  name: dvwa
spec:
  ports:
  - port: 3306
    targetPort: 3306
  selector:
    app: dvwa
  type: NodePort

您能否进入dvwa pod并运行localhost:3306 你有反应吗?