0

OS Centos 7 を使用しています。私のポッド:

apiVersion: v1
kind: Pod
metadata:
  name: tomcat
spec:
  containers:
  - image: ec2-73-99-254-8.eu-central-1.compute.amazonaws.com:5000/tom
    name: tomcat
    command: ["sh","-c","/opt/tomcat/bin/deploy-and-run.sh"]
    volumeMounts:
    - mountPath: /maven
      name: app-volume
    ports:
    - containerPort: 8080
  volumes:
  - name: app-volume
    hostPath:
      path: /maven

私のサービス:

apiVersion: v1
kind: Service
metadata:
  name: tomcat
spec:
  ports:
    - name: http
      port: 80
      targetPort: 8080
      protocol: TCP
  selector:
    name: tomcat

サービスは次のようになります。

# kubectl get svc
NAME         CLUSTER_IP      EXTERNAL_IP   PORT(S)   SELECTOR      AGE
kubernetes   10.254.0.1      <none>        443/TCP   <none>        14h
tomcat       10.254.206.26   <none>        80/TCP    name=tomcat   13h

そしてポッド:

# kubectl get pod
NAME      READY     STATUS    RESTARTS   AGE
tomcat    1/1       Running   0          13h

そして、Curl を実行すると:

curl 10.254.206.26
curl: (56) Recv failure: Connection reset by peer

その時点での Kube-proxy ログには、次のようなものが表示されます。

kube-proxy[22273]: Couldn't find an endpoint for default/tomcat:http: missing service entry
kube-proxy[22273]: Failed to connect to balancer: missing service entry

しかし、ポッドの IP アドレスとポート 8080 に対して直接 curl を実行すると、問題なく動作します。コマンドを実行すると kubectl get endpoints

NAME         ENDPOINTS             AGE
kubernetes   195.234.109.11:6443   14h
tomcat       <none>                14h

この出力の「none」のフィールド ENDPOINTS は奇妙に見えます。どうしたの?

4

1 に答える 1

0

サービスは、ラベルを照合することで機能します。ポッドの名前に基づいて一致しようとしています。ポッドのメタデータを次のように変更してみてください

metadata:
  name: tomcat
  labels:
    name: tomcat

そして、それが役立つかどうかを確認してください。

于 2016-03-20T07:44:49.210 に答える