Knative Service 는 포트 와 프로 토 콜 을 어떻게 지정 합 니까?
주: 물론 여러 포트 를 감청 하려 면 안 됩 니 다. 용기 가 작 동 되 지만 Service 를 통 해 서 비 스 를 노출 할 수 없 기 때문에 Istio gateway 를 통 해 외부 에 노출 되 지 못 하기 때문에 서 비 스 를 제공 할 수 없습니다.
상술 한 Spec 정 의 를 볼 때 아래 두 줄 의 주석 을 알 아 차 렸 을 수도 있 습 니 다.왜 이 몇 개의 포트 를 보존 합 니까?
다음은 제 가 한 장의 그림 을 통 해 Knative Serving 트 래 픽 퍼 가기 링크 를 설명 하 겠 습 니 다.
위의 그림 에서 보 듯 이 업무 흐름 은 Gateway 에서 업무 용기 에 직접 전 화 된 것 이 아니 라 queue 용 기 를 통 해 전 송 된 것 이다.queue 용 기 는 기본적으로 8012 와 8013 을 감청 하여 각각 http1 의 데이터 와 http2 의 데 이 터 를 전달 합 니 다.구체 적 인 코드 참조:
queue 용 기 는 만 들 때 USER 라 고 설정 합 니 다.PORT 의 환경 변수, queue 는 이 환경 변 수 를 통 해 업무 용기 에 전달 해 야 할 포트 를 가 져 옵 니 다.그래서 우리 가 USER 를 수정 할 수만 있다 면PORT 라 는 환경 변 수 는 감청 포트 를 사용자 정의 할 수 있 습 니 다.USER_PORT 는 getUserPort 함 수 를 통 해 얻 을 수 있 습 니 다. 구체 적 인 함 수 는 다음 과 같 습 니 다.
코드 를 여기까지 읽 으 면 밝 아 집 니 다. Knative Service 를 만 들 때 Ports 포트 를 지정 한 다음 포트 의 containerport 필드 를 통 해 사용자 정의 포트 를 지정 할 수 있 습 니 다.그러나 주의해 야 할 것 은 Knative 가 하나의 용기 포트 만 지원 하기 때문에 Ports 는 하나의 배열 이지 만 하나만 설정 할 수 있 습 니 다.
실례 는 다음 과 같다.
apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
name: wordpress-serving
namespace: default
spec:
template:
metadata:
labels:
app: wordpress
annotations:
autoscaling.knative.dev/target: "100"
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/knative-sample/wordpress:5.2-20190524100810
ports:
- name: http1
containerPort: 80
env:
- name: WORDPRESS_DB_HOST
value: rm-2xx.mysql.rds.aliyuncs.com:3306
- name: WORDPRESS_DB_USER
value: wordpress
- name: WORDPRESS_DB_PASSWORD
value: xxx
imagePullPolicy: Always
위 에서 분석 하 는 과정 에서 HTTP 2 프로 토 콜 을 언급 했 는데 현재 grpc 형식의 서 비 스 를 제공 하려 면 http2 프로 토 콜 을 사용 해 야 합 니 다.
HTTP 2 프로 토 콜 을 사용 했다 면 요청 을 하려 면 queue 의 8013 포트 에 전송 한 다음 8013 에서 용기 에 전달 하 는 업무 포트 가 필요 합 니 다.그렇다면 우리 가 사용 하 는 협 의 를 어떻게 지정 합 니까?
앞의 분석 에서 우리 가 얻 은 결론 은 port [0]. container Port 를 통 해 사용자 정의 포트 를 지정 하 는 것 이 고 사실은 port [0]. name 필드 도 지정 할 수 있다 는 것 이다.Revision Controller 가 Deployment 배치 서 비 스 를 생 성 할 때 이 name 필드 에서 http1 (8012 포트) 프로 토 콜 을 사용 해 야 하 는 지, http2 (8013 포트) 프로 토 콜 을 사용 해 야 하 는 지 판단 합 니 다.
코드 분석 은 다음 과 같다.
https://github.com/kubedemo/serving/blob/release-0.6/pkg/apis/serving/v1alpha1/revision_lifecycle.go#L104
그러면 어떻게 해야만 용기 의 사용자 정의 포트 를 지정 할 수 있 습 니까?코드 를 찾 아 보면 알 수 있 습 니 다.
https://github.com/kubedemo/serving/blob/release-0.6/pkg/reconciler/serverlessservice/resources/services.go#L32
작은 매듭
Knative Service 는 용기 에 ports 필드 를 추가 할 수 있 으 며, ports 는 하나의 포트 만 설정 할 수 있 습 니 다.ports 에는 두 개의 키 필드 가 있 습 니 다 Name 과 Container Port
ports:
- name: http1
containerPort: 80
아 리 클 라 우 드 더 블 11 억 위안 의 보조금 을 미리 받 고 아이 폰 11 프로 추출 에 들 어 갑 니 다.https://www.aliyun.com/1111/2019/home?utm_content=g_1000083110
동도
원문 을 읽다
본 고 는 운 서 지역사회 의 오리지널 내용 으로 허락 없 이 전재 할 수 없다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
예를 들어 urlopen의 데이터 사용법데이터 매개 변수는 선택할 수 있습니다. 데이터를 추가하려면 바이트 인코딩 형식의 내용, 즉bytes 형식이면bytes () 함수를 통해 전환할 수 있습니다. 또한 이 데이터 매개 변수를 전달하면 GET 방식으로 요...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.