Kubernetes服务-通过部署转发到所有Pod

时间:2020-03-12 18:37:40

标签: portforwarding kubernetes-pod kubernetes-service

我想展示kubernetes负载平衡功能。在本地系统上,群集中有一个节点。想要在3个Pod中部署nginx容器,并用修改后的index.html(有一些差异)替换index.html(默认)。我正在创建服务并分配端口以将所有请求转发到容器的端口80。我想以http://localhost:3030的身份访问我的广告连播。根据请求命中的Pod,index.html将显示内容。但是,使用下面的部署和服务代码,我无法找到任何Pod。如果我将端口转发到单个吊舱,则可以到达。

我按照here的方法进行了解释,但没有运气。知道我缺少什么。

这是我什么时候都能看到的。

$ k get all
NAME                              READY   STATUS    RESTARTS   AGE
pod/app-server-6ccf5d55db-2qt2r   1/1     Running   0          3d20h
pod/app-server-6ccf5d55db-96lkb   1/1     Running   0          3d20h
pod/app-server-6ccf5d55db-ljsc4   1/1     Running   0          3d20h


NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   19d


NAME                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/app-server   3/3     3            3           3d20h

apiVersion: v1
kind: Service
metadata:
  name: app-service
spec:
  type: NodePort
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 3030
  selector:
    app: app-server

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-server
  labels:
    app: app-server
spec:
  replicas: 3
  selector:
    matchLabels:
      app: app-server
  template:
    metadata:
      labels:
        app: app-server
    spec:
      containers:
      - name: web-server
        image: nginx:latest
        ports:
        - containerPort: 80

1 个答案:

答案 0 :(得分:0)

好的,我犯了两个错误。

  1. 服务和应用服务器的部署都在单个文件中。
  2. 我弄乱了port和servicePort的值

这是我所做的有效更改。

Service.yml

apiVersion: v1
kind: Service
metadata:
  name: app-service
spec:
  type: NodePort
  ports:
    - name: httpport
      protocol: TCP
      port: 32766
      nodePort: 32766
      targetPort: 80
  selector:
    app: app-server

deployment.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-server
  labels:
    app: app-server
spec:
  replicas: 3
  selector:
    matchLabels:
      app: app-server
  template:
    metadata:
      labels:
        app: app-server
    spec:
      containers:
      - name: web-server
        image: nginx:latest
        ports:
        - containerPort: 80

我先部署服务器,然后部署服务。然后,我可以使用http://localhost:32766

到达nginx服务器

这是我的k get all的输出

$ k get all -o wide
NAME                              READY   STATUS    RESTARTS   AGE   IP           NODE             NOMINATED NODE   READINESS GATES
pod/app-server-6ccf5d55db-9xjwh   1/1     Running   0          60s   10.1.0.201   docker-desktop   <none>           <none>
pod/app-server-6ccf5d55db-mdtrx   1/1     Running   0          60s   10.1.0.200   docker-desktop   <none>           <none>
pod/app-server-6ccf5d55db-smmcg   1/1     Running   0          60s   10.1.0.199   docker-desktop   <none>           <none>


NAME                  TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)           AGE   SELECTOR
service/app-service   NodePort    10.110.72.85   <none>        32766:32766/TCP   54s   app=app-server
service/kubernetes    ClusterIP   10.96.0.1      <none>        443/TCP           20d   <none>


NAME                         READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES         SELECTOR
deployment.apps/app-server   3/3     3            3           60s   web-server   nginx:latest   app=app-server

NAME                                    DESIRED   CURRENT   READY   AGE   CONTAINERS   IMAGES         SELECTOR
replicaset.apps/app-server-6ccf5d55db   3         3         3       60s   web-server   nginx:latest   app=app-server,pod-template-hash=6ccf5d55db