如何使我的AWS EKS Kubernetes集群公开可见?

时间:2020-04-15 11:55:47

标签: amazon-web-services docker kubernetes amazon-eks eks

我已经按照Udacity全栈纳米学位课程中的步骤进行操作,以使Kubernetes集群在AWS EKS上运行。

服务正在运行。运行命令kubectl get services simple-jwt-api -o wide返回:

NAME             TYPE           CLUSTER-IP      EXTERNAL-IP                                                              PORT(S)        AGE   SELECTOR
simple-jwt-api   LoadBalancer   10.100.217.57   a32d4ab0969b149bd9fb47d2065aee80-335944770.us-west-2.elb.amazonaws.com   80:31644/TCP   51m   app=simple-jwt-api

节点似乎正在运行:

NAME                                          STATUS   ROLES    AGE   VERSION               INTERNAL-IP     EXTERNAL-IP     OS-IMAGE         KERNEL-VERSION                  CONTAINER-RUNTIME
ip-192-168-3-213.us-west-2.compute.internal   Ready    <none>   80m   v1.15.10-eks-bac369   192.168.3.213   54.70.213.28    Amazon Linux 2   4.14.173-137.229.amzn2.x86_64   docker://18.9.9
ip-192-168-46-0.us-west-2.compute.internal    Ready    <none>   80m   v1.15.10-eks-bac369   192.168.46.0    34.220.32.208   Amazon Linux 2   4.14.173-137.229.amzn2.x86_64   docker://18.9.9

荚似乎正在运行

NAME                              READY   STATUS    RESTARTS   AGE   IP               NODE                                          NOMINATED NODE   READINESS GATES
simple-jwt-api-5dd5b9cf98-46ngm   1/1     Running   0          37m   192.168.22.121   ip-192-168-3-213.us-west-2.compute.internal   <none>           <none>
simple-jwt-api-5dd5b9cf98-kfgxf   1/1     Running   0          37m   192.168.20.148   ip-192-168-3-213.us-west-2.compute.internal   <none>           <none>
simple-jwt-api-5dd5b9cf98-xs6rp   1/1     Running   0          37m   192.168.60.136   ip-192-168-46-0.us-west-2.compute.internal    <none>           <none>

Docker文件为:

FROM python:stretch

COPY . /app
WORKDIR /app

RUN pip install --upgrade pip
RUN pip install -r requirements.txt

EXPOSE 8080

ENTRYPOINT ["gunicorn", "-b", ":8080", "main:APP"]

部署文件为:

apiVersion: v1
kind: Service
metadata:
  name: simple-jwt-api
spec:
  type: LoadBalancer
  ports:
    - port: 80
      targetPort: 80
  selector:
    app: simple-jwt-api
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: simple-jwt-api
spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 2
      maxSurge: 2
  selector:
    matchLabels:
      app: simple-jwt-api
  template:
    metadata:
      labels:
        app: simple-jwt-api
    spec:
      containers:
        - name: simple-jwt-api
          image: CONTAINER_IMAGE
          securityContext:
            privileged: false
            readOnlyRootFilesystem: false
            allowPrivilegeEscalation: false
          ports:
            - containerPort: 8080

为什么我不能通过a32d4ab0969b149bd9fb47d2065aee80-335944770.us-west-2.elb.amazonaws.com访问该应用程序?

1 个答案:

答案 0 :(得分:3)

服务targetPort: 80中的targetPort似乎与POD的容器端口不匹配,即:containerPort: 8080。请将使用中的targetPort更改为8080,然后重试。

apiVersion: v1
kind: Service
metadata:
  name: simple-jwt-api
spec:
  type: LoadBalancer
  ports:
    - port: 80
      targetPort: 80
  selector:
    app: simple-jwt-api
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: simple-jwt-api
spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 2
      maxSurge: 2
  selector:
    matchLabels:
      app: simple-jwt-api
  template:
    metadata:
      labels:
        app: simple-jwt-api
    spec:
      containers:
        - name: simple-jwt-api
          image: CONTAINER_IMAGE
          securityContext:
            privileged: false
            readOnlyRootFilesystem: false
            allowPrivilegeEscalation: false
          ports:
            - containerPort: 8080