Kubernetes节点端口未工作

10

我创建了一个YAML文件,其中包含一个Pod中的三个图像(它们需要通过127.0.0.1相互通信)。看起来一切都正常。我在yaml文件中定义了一个nodeport。

有一个部署被定义为applications,它包含三个镜像:

  • contacts-db(一个MySQL数据库)
  • front-end(一个Angular网站)
  • net-core(一个API)

我定义了三个服务,每个容器一个。在里面,我定义了类型NodePort以访问它。

因此,我检索了服务以获取端口号:

NAME          CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
contacts-db   10.103.67.74     <nodes>       3306:30241/TCP   1d
front-end     10.107.226.176   <nodes>       80:32195/TCP     1d
net-core      10.108.146.87    <nodes>       5000:30245/TCP   1d

我在浏览器中输入http://:32195后一直在加载,但无法连接。以下是完整的Yaml文件:

---
apiVersion: v1
kind: Namespace
metadata:
  name: three-tier
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: applications
  labels:
    name: applications
  namespace: three-tier
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: applications
    spec:
      containers:
      - name: contacts-db
        image: mysql/mysql-server #TBD
        env:
          - name: MYSQL_ROOT_PASSWORD
            value: quintor
          - name: MYSQL_DATABASE
            value: quintor #TBD
        ports:
        - name: mysql
          containerPort: 3306
      - name: front-end
        image: xanvier/angularfrontend #TBD
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 80
      - name: net-core
        image: xanvier/contactsapi #TBD
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 5000
---
apiVersion: v1
kind: Service
metadata:
  name: contacts-db
  labels:
    name: contacts-db
  namespace: three-tier
spec:
  type: NodePort
  ports:
    # the port that this service should serve on
  - port: 3306
    targetPort: 3306
  selector:
    name: contacts-db
---
apiVersion: v1
kind: Service
metadata:
  name: front-end
  labels:
    name: front-end
  namespace: three-tier
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 80 #nodePort: 30001
  selector:
    name: front-end
---
apiVersion: v1
kind: Service
metadata:
  name: net-core
  labels:
    name: net-core
  namespace: three-tier
spec:
  type: NodePort
  ports:
  - port: 5000
    targetPort: 5000 #nodePort: 30001
  selector:
    name: net-core
---
1个回答

13

服务的选择器匹配您的 pod 的标签。在您的情况下,定义的选择器指向容器,选择 pods 时没有结果。

您需要重新定义您的服务以使用一个选择器,或者将您的容器拆分为不同的部署/ pods。

要查看为服务定义的选择器是否有效,您可以使用以下命令进行检查:

kubectl get pods -l key=value
如果结果为空,您的服务也将陷入虚无中。

13
您还可以使用 kubectl get endpoints 命令查看哪些服务实际上由端点(Pod)支持。 - Janos Lenart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接