Kubernetes-선택기가없는 서비스

Stanislav Melnikov

선택기가없는 Kubernetes의 서비스로 어려움을 겪고 있습니다. 클러스터는 kops와 함께 AWS에 설치됩니다. 포트 80을 노출하는 3 개의 nginx 포드가있는 배포가 있습니다.

apiVersion: apps/v1
kind: Deployment
metadata:
 name: ngix-dpl                 # Name of the deployment object
 labels:
   app: nginx                     
spec:
 replicas: 3                    # Number of instances in the deployment
 selector:                      # Selector identifies pods to be
     matchLabels:               #     part of the deployment 
        app: nginx              #     by matching of the label "app" 
 template:                      # Templates describes pods of the deployment
   metadata:
     labels:                    # Defines key-value map
       app: nginx               # Label to be recognized by other objects
   spec:                        #     as deployment or service
     containers:                # Lists all containers in the pod
     - name: nginx-pod          # container name
       image: nginx:1.17.4      # container docker image
       ports:
       - containerPort: 80      # port exposed by container

배포를 만든 후 IP 주소를 기록했습니다.

$ kubectl get pods -o wide | awk {'print $1" " $3" " $6'} | column -t
                                                                           NAME                       STATUS   IP
curl                       Running  100.96.6.40
ngix-dpl-7d6b8c8944-8zsgk  Running  100.96.8.53
ngix-dpl-7d6b8c8944-l4gwk  Running  100.96.6.43
ngix-dpl-7d6b8c8944-pffsg  Running  100.96.8.54

IP 주소를 제공해야하는 서비스를 만들었습니다.

apiVersion: v1
kind: Service
metadata:
  name: dummy-svc
  labels:
    app: nginx
spec:
 ports:
    - protocol: TCP
      port: 80
      targetPort: 80
---
apiVersion: v1
kind: Endpoints
metadata:
  name: dummy-svc 
subsets: 
  - addresses:
    - ip: 100.96.8.53
    - ip: 100.96.6.43
    - ip: 100.96.8.54
    ports:
    - port: 80
      name: http

서비스가 성공적으로 생성되었습니다.

$ kubectl get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
dummy-svc    ClusterIP   100.64.222.220   <none>        80/TCP    32m
kubernetes   ClusterIP   100.64.0.1       <none>        443/TCP   5d14h

불행히도 동일한 네임 스페이스의 다른 포드에서 서비스를 통해 nginx에 연결하려는 시도가 실패합니다.

$ curl 100.64.222.220
curl: (7) Failed to connect to 100.64.222.220 port 80: Connection refused

nginx 포드에 직접 연결할 수 있습니다.

$ curl 100.96.8.53
<!DOCTYPE html>
<html>
<head>
....

내 서비스에 엔드 포인트가없는 것으로 나타났습니다. 하지만 수동 엔드 포인트가 표시되어야할지 모르겠습니다.

$ kubectl get svc/dummy-svc -o yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |      
       {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"nginx"},"name":"dummy-svc","namespace":"default"},"spec":{"ports":[{"port":80,"protocol":"TCP","targetPort":80}]}}
  creationTimestamp: "2019-11-22T08:41:29Z"
  labels:
    app: nginx
  name: dummy-svc
  namespace: default
  resourceVersion: "4406151"
  selfLink: /api/v1/namespaces/default/services/dummy-svc
  uid: e0aa9d01-0d03-11ea-a19c-0a7942f17bf8
spec:
  clusterIP: 100.64.222.220
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}

서비스에 대한 적절한 사용 사례가 아니며 포드 선택기를 사용하면 작동하게 될 것임을 이해합니다. 하지만이 구성이 작동하지 않는 이유를 이해하고 싶습니다. 솔루션을 어디에서 찾아야할지 모르겠습니다. 모든 힌트를 주시면 감사하겠습니다.

Iliefa

엔드 포인트 구성에서 "이름"필드를 제거하면 작동합니다. 다음과 같이 표시되어야합니다.

apiVersion: v1
kind: Endpoints
metadata:
  name: dummy-svc 
subsets: 
  - addresses:
    - ip: 172.17.0.4
    - ip: 172.17.0.5
    - ip: 172.17.0.6
    ports:
    - port: 80

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Kubernetes 서비스 계정 기본 권한

분류에서Dev

Kubernetes : 정의 된 포트가없는 서비스

분류에서Dev

Kubernetes에서 서비스 선택기에서 이름으로 포드를 어떻게 선택합니까?

분류에서Dev

Kubernetes에서 skydns 서비스로 'kubernetes'를 해결할 수 없습니다.

분류에서Dev

여러 포트가있는 Helm 템플릿 kubernetes 서비스

분류에서Dev

두 서비스를 가리키는 Kubernetes 수신 생성

분류에서Dev

Kubernetes LoadBalancer 서비스는 고 가용성입니까?

분류에서Dev

실행중인 kubernetes 서비스에서 포트 닫기

분류에서Dev

Minishift Kubernetes Dashboard throw 오류 : 서비스 "kubernetes-dashboard"를 찾을 수 없음

분류에서Dev

Gitlab CI가 kubernetes 실행기에서 서비스 호스트 이름을 확인할 수 없습니다.

분류에서Dev

선택자에도 불구하고 Kubernetes 서비스가 엔드 포인트를 생성하지 않음

분류에서Dev

Airflow 스케줄러는 Kubernetes 서비스 API에 연결할 수 없습니다.

분류에서Dev

Kubernetes 포드 오류 : 여러 서비스 만들기

분류에서Dev

kubernetes에서 서비스 이름으로 서비스에 액세스 할 수 없습니다.

분류에서Dev

Kubernetes 서비스 NodePort가 연결되지 않았습니다.

분류에서Dev

Kubernetes 서비스가 작동하지 않음 (타이밍 아웃)

분류에서Dev

Azure Kubernetes-Https 서비스를 사용하는 내부 LoadBalancer?

분류에서Dev

Kubernetes에 포드 / 서비스를 배포하는 방법

분류에서Dev

localhost에서 kubernetes 서비스에 액세스 할 수 없습니다.

분류에서Dev

원격 Kubernetes에서 내 서비스에 액세스 할 수 없습니다.

분류에서Dev

Kubernetes 서비스 IP 혼란

분류에서Dev

Kubernetes 서비스 배포

분류에서Dev

포드 정의 내에서 Kubernetes 서비스 IP를 가져 오는 방법

분류에서Dev

지정된 엔드 포인트가있는 Kubernetes 서비스를 통해 서비스에 액세스 할 수 없습니다.

분류에서Dev

Docker 비공개 레지스트리가있는 Kubernetes에서 SSL이없는 Docker 풀 이미지

분류에서Dev

kubernetes 클러스터 내부에 프로비저닝 된 서비스에서 kubernetes 클러스터 외부에 설치된 kafka에 액세스하는 방법

분류에서Dev

Kubernetes : 여러 컨테이너가있는 포드로의 서비스 라우팅

분류에서Dev

kubernetes에서 서비스의 URL을 찾는 방법은 무엇입니까?

분류에서Dev

Kubernetes : 동일한 포트에서 실행되는 마이크로 서비스?

Related 관련 기사

  1. 1

    Kubernetes 서비스 계정 기본 권한

  2. 2

    Kubernetes : 정의 된 포트가없는 서비스

  3. 3

    Kubernetes에서 서비스 선택기에서 이름으로 포드를 어떻게 선택합니까?

  4. 4

    Kubernetes에서 skydns 서비스로 'kubernetes'를 해결할 수 없습니다.

  5. 5

    여러 포트가있는 Helm 템플릿 kubernetes 서비스

  6. 6

    두 서비스를 가리키는 Kubernetes 수신 생성

  7. 7

    Kubernetes LoadBalancer 서비스는 고 가용성입니까?

  8. 8

    실행중인 kubernetes 서비스에서 포트 닫기

  9. 9

    Minishift Kubernetes Dashboard throw 오류 : 서비스 "kubernetes-dashboard"를 찾을 수 없음

  10. 10

    Gitlab CI가 kubernetes 실행기에서 서비스 호스트 이름을 확인할 수 없습니다.

  11. 11

    선택자에도 불구하고 Kubernetes 서비스가 엔드 포인트를 생성하지 않음

  12. 12

    Airflow 스케줄러는 Kubernetes 서비스 API에 연결할 수 없습니다.

  13. 13

    Kubernetes 포드 오류 : 여러 서비스 만들기

  14. 14

    kubernetes에서 서비스 이름으로 서비스에 액세스 할 수 없습니다.

  15. 15

    Kubernetes 서비스 NodePort가 연결되지 않았습니다.

  16. 16

    Kubernetes 서비스가 작동하지 않음 (타이밍 아웃)

  17. 17

    Azure Kubernetes-Https 서비스를 사용하는 내부 LoadBalancer?

  18. 18

    Kubernetes에 포드 / 서비스를 배포하는 방법

  19. 19

    localhost에서 kubernetes 서비스에 액세스 할 수 없습니다.

  20. 20

    원격 Kubernetes에서 내 서비스에 액세스 할 수 없습니다.

  21. 21

    Kubernetes 서비스 IP 혼란

  22. 22

    Kubernetes 서비스 배포

  23. 23

    포드 정의 내에서 Kubernetes 서비스 IP를 가져 오는 방법

  24. 24

    지정된 엔드 포인트가있는 Kubernetes 서비스를 통해 서비스에 액세스 할 수 없습니다.

  25. 25

    Docker 비공개 레지스트리가있는 Kubernetes에서 SSL이없는 Docker 풀 이미지

  26. 26

    kubernetes 클러스터 내부에 프로비저닝 된 서비스에서 kubernetes 클러스터 외부에 설치된 kafka에 액세스하는 방법

  27. 27

    Kubernetes : 여러 컨테이너가있는 포드로의 서비스 라우팅

  28. 28

    kubernetes에서 서비스의 URL을 찾는 방법은 무엇입니까?

  29. 29

    Kubernetes : 동일한 포트에서 실행되는 마이크로 서비스?

뜨겁다태그

보관