본문 바로가기

개발하자

클러스터 IP 서비스가 있고 기본 nginx가 있는 kubernetes 수신 컨트롤러가 예상대로 작동하지 않음

반응형

클러스터 IP 서비스가 있고 기본 nginx가 있는 kubernetes 수신 컨트롤러가 예상대로 작동하지 않음

7개의 노드를 가진 쿠버네티스 베어 메탈 클러스터가 있다. 조타 장치 설치 및 조타 장치 추가

  • ingress-nginx 내 랜에서 내 랜에서 해결 가능한 DNS A 레코드를 만들었다.

효과적인 기능:

나는 이전에 언급한 dns A 레코드의 사과와 바나나 위치에 접근할 수 있다.

포트 80과 cluster-ip 유형의 서비스를 사용하여 기본 nginx 이미지를 배포하는 경우 다음 nginx-ingress 리소스가 작동하지 않음

kubectl run nginx --image=nginx ; kubectl exposed pod nginx --port=80 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-test
  annotations:
    ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: kubernetes.somename.lan
    http:
      paths:
        - path: /test
          pathType: Prefix
          backend:
            serviceName: nginx
            servicePort: 80

나는 로그에서 파일이 nginx-ingress 이미지에 배포되고 있는 것을 보고 있는데, 사과와 바나나 입력 항목과 비교했을 때 이상한 것은 보이지 않는다. 내가 생각할 수 있는 유일한 차이점은 입력 컨트롤러와 nginx 이미지가 포트 80을 사용한다는 것이다

그래서 내가 필요한 것은 내가 접속할 때, 나는 nginx 서버의 자리 표시자(nginx 서비스로 접속할 수 있음)에 도달할 것이다


경로/테스트에서 A dns 레코드의 nginx에 액세스하려면 어떻게 해야 합니까?




포드가 경로를 구분하지 않으므로 제공된 사과/바나나 예제가 작동하고 있습니다. 경로 변경에 반응하지 않습니다(경로 무시). 반면에 그것은 정반대이다.

블로그에 주석이 잘못되어 접두사가 누락되었습니다. 이것은 당신이 사용한 것입니다:

ingress.kubernetes.io/rewrite-target

그리고 이것은 정확한 것이다:

nginx.ingress.kubernetes.io/rewrite-target



좋아요, 조사한 후에 저는 이것을 해결하는 방법을 알아냈어요. 이것이 누구에게 도움이 되기를 바란다

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-precious
  annotations:
    nginx.org/rewrites: "serviceName=nginx-ingress rewrite=/;"
spec:
  rules:
  - host: kubernetes.somelan.lan
    http:
      paths:
      - path: /test1
        backend:
          serviceName: nginx-ingress
          servicePort: 80

반응형