섹션 9 Istio 설치 Kubernetes 명령 방식
9409 단어 istio
대부분 국외 자원이기 때문에 항상 준비해야 한다.
이 글은kubernetes 플랫폼 명령으로만 설치되며 어떠한 클라우드와Helm도 관련되지 않으며 Istio 테스트와 체험에 적용되며 생산 환경에서Helm 설치 방안을 사용하는 것을 권장합니다.
Istio 설치 패키지 다운로드
1. 대상 운영 체제에 대한 설치 파일을 다운로드합니다. 다운로드 주소는 다음과 같습니다.
https://github.com/istio/istio/releases
2. 또는 Linux는 다음과 같은 스크립트를 사용하여 다운로드 및 자동 압축 해제를 수행합니다.
curl -L https://git.io/getLatestIstio | ISTIO_VERSION=1.1.5 sh -
3. Istio 패키지 디렉토리로 이동합니다.예: 버전 1.1.5
cd istio-1.1.5
4. 카탈로그 구조 설명:
install 디렉터리: Kubernetes 설치에 필요한 것을 포함합니다.yaml 파일samples 디렉터리: Istio 예시 응용 프로그램bin 디렉터리:istioctl 클라이언트 파일을 포함합니다.istioctl의 기능은 Envoy Sidecar를 수동으로 주입하는 것입니다.
istio.VERSION: 버전 구성 파일5. 환경 변수 추가
istioctl 클라이언트를 PATH 환경 변수에 추가합니다. 예를 들어 export PATH=$PWD/bin: $PATH
사전 설치 준비
1. kubernetes 설치
Kubernetes 버전 1.9 이상, Istio 1.1.3 테스트는 1.11, 1.12, 1.13에서 정상적으로 실행되고 1.11 이상의 버전을 사용하는 것을 권장합니다.본문kubernetes1.13.4,Istio1.1.3,docker17.06.0-ce
2. kubernetes에서 Pod는 다음과 같은 요구를 충족시켜야 한다.
포트가 올바르게 명명되었습니다. 서비스 포트는 반드시 명명되어야 합니다.포트 이름은 [--] 모드만 허용됩니다. 그 중에서 프로토콜은grpc,http,http2,https,mongo,redis,tcp,tls와udp를 포함하고 Istio는 이러한 프로토콜에 대한 지원을 통해 루트 능력을 제공할 수 있습니다.명칭: http2-test 유효;http2test가 잘못되었습니다.포트 이름이 지정되지 않았거나 사양에 맞지 않으면 Istio 트래픽 관리를 받지 않습니다.
Pod 포트: Pod에는 각 컨테이너가 수신할 명시적인 포트 목록이 포함되어 있어야 합니다.각 포트의 컨테이너 사양에 containerPort를 사용합니다.나열되지 않은 포트는 Istio Proxy 를 우회합니다.
관련 서비스:Pod는 포트를 공개하든 안 하든 최소한 하나의 Kubernetes 서비스에 관련되어야 한다. 만약에 하나의 Pod가 여러 서비스에 속한다면 이런 서비스들은 같은 포트에서 서로 다른 프로토콜을 사용할 수 없다. 예를 들어 HTTP와 TCP 등이다.
탭 설정: Kubernetes Deployment를 사용하여Pod 배치를 할 때, 의미 있는 app와version 탭을 추가하는 것을 권장합니다.app 라벨은 분포식 추적 과정에서 상하문 정보를 추가하는 데 사용됩니다.에스티오는 앱과 버젼 라벨로 원격 측정 지표 데이터에 상하문 정보를 넣는다.
Application UID: ID(UID) 값이 1337인 사용자를 사용하여 애플리케이션을 실행하지 마십시오.
NET_ADMIN 기능: Istio는 Pod 트래픽을 관리해야 하며 이pod에는 NET 가 있어야 합니다.Istio CNI 플러그인을 사용하지 않는 한 ADMIN 기능을 사용할 수 있습니다.
Kubernetes에서 빠른 시작
kubernetes1.13.4 Istio 설치 1.1.3.
1. 아이스티오에 들어간다.1.3 목록
cd istio-1.1.3
2. Istio에 대한 사용자 정의 리소스 정의(CRD)를 설치합니다.
for i in install/kubernetes/helm/istio-init/files/crd*yaml; do kubectl apply -f $i; done
3. mutual TLS의 관용 모드를 사용하여 istio 배포
만약 mutual TLS의 관용 모드를 사용한다면 모든 서비스는 명문과 양방향 TLS의 데이터를 동시에 허용할 것이다.클라이언트가 양방향 TLS 통신을 하도록 명시적으로 구성되지 않은 경우 클라이언트는 명문 트래픽을 전송합니다.
이 장면은 다음과 같습니다.
이미 응용된 집단;
Istio sidecar의 서비스를 주입하여 비Istio Kubernetes 서비스와 통신할 필요가 있음;
생존과 준비 검사를 위한 응용이 필요하다.
Headless 서비스,
StatefulSet.
다음 명령을 실행하면 이 모드의 설치를 완성할 수 있습니다. 이 파일은 비교적 크니 스스로 찾아보세요.
kubectl apply -f install/kubernetes/istio-demo.yaml
3. 또는 mutual TLS의 엄격한 모드로 istio 배포
이 시나리오는 모든 클라이언트와 서버 간에 양방향 TLS를 사용합니다.이 방식은 모든 워크로드가 Istio에서 관리하는 Kubernetes 클러스터에만 적합합니다.새로 배포된 모든 워크로드에 Istio sidecar가 투입됩니다.아래의 명령을 실행하면 이런 방안을 설치할 수 있습니다. 이 파일은 비교적 크니 스스로 찾아보십시오.
kubectl apply -f install/kubernetes/istio-demo-auth.yaml
4. 배포 결과 확인
다음 Kubernetes 서비스가 배치되어 있고 각각의 CLUSTER-IP가 있는지 확인하십시오
kubectl get svc -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
grafana ClusterIP 172.21.211.123 3000/TCP 2m
istio-citadel ClusterIP 172.21.177.222 8060/TCP,9093/TCP 2m
istio-egressgateway ClusterIP 172.21.113.24 80/TCP,443/TCP 2m
istio-galley ClusterIP 172.21.132.247 443/TCP,9093/TCP 2m
istio-ingressgateway LoadBalancer 172.21.144.254 80:31380/TCP,443:31390/TCP,31400:31400/TCP,15011:32081/TCP,8060:31695/TCP,853:31235/TCP,15030:32717/TCP,15031:32054/TCP 2m
istio-pilot ClusterIP 172.21.105.205 15010/TCP,15011/TCP,8080/TCP,9093/TCP 2m
istio-policy ClusterIP 172.21.14.236 9091/TCP,15004/TCP,9093/TCP 2m
istio-sidecar-injector ClusterIP 172.21.155.47 443/TCP 2m
istio-telemetry ClusterIP 172.21.196.79 9091/TCP,15004/TCP,9093/TCP,42422/TCP 2m
jaeger-agent ClusterIP None 5775/UDP,6831/UDP,6832/UDP 2m
jaeger-collector ClusterIP 172.21.135.51 14267/TCP,14268/TCP 2m
jaeger-query ClusterIP 172.21.26.187 16686/TCP 2m
kiali ClusterIP 172.21.155.201 20001/TCP 2m
prometheus ClusterIP 172.21.63.159 9090/TCP 2m
tracing ClusterIP 172.21.2.245 80/TCP 2m
zipkin ClusterIP 172.21.182.245 9411/TCP 2m
외부 부하 균형기가 지원되지 않는 환경에서 집단이 실행된다면, istio-ingressgateway의 EXTERNAL-IP는 다음과 같습니다.이 게이트웨이에 액세스하려면 서비스의 NodePort 또는 포트 전송을 통해서만 액세스할 수 있습니다.
필요한 Kubernetes Pod가 생성되었고 STATUS 값이 런닝인지 확인합니다.
kubectl get pods -n istio-system
NAME READY STATUS RESTARTS AGE
grafana-f8467cc6-rbjlg 1/1 Running 0 1m
istio-citadel-78df5b548f-g5cpw 1/1 Running 0 1m
istio-cleanup-secrets-release-1.1-20190308-09-16-8s2mp 0/1 Completed 0 2m
istio-egressgateway-78569df5c4-zwtb5 1/1 Running 0 1m
istio-galley-74d5f764fc-q7nrk 1/1 Running 0 1m
istio-grafana-post-install-release-1.1-20190308-09-16-2p7m5 0/1 Completed 0 2m
istio-ingressgateway-7ddcfd665c-dmtqz 1/1 Running 0 1m
istio-pilot-f479bbf5c-qwr28 2/2 Running 0 1m
istio-policy-6fccc5c868-xhblv 2/2 Running 2 1m
istio-security-post-install-release-1.1-20190308-09-16-bmfs4 0/1 Completed 0 2m
istio-sidecar-injector-78499d85b8-x44m6 1/1 Running 0 1m
istio-telemetry-78b96c6cb6-ldm9q 2/2 Running 2 1m
istio-tracing-69b5f778b7-s2zvw 1/1 Running 0 1m
kiali-99f7467dc-6rvwp 1/1 Running 0 1m
prometheus-67cdb66cbb-9w2hm 1/1 Running 0 1m
배포 어플리케이션
예를 들어, Istio를 배포하는 게시 패키지의 예는 Bookinfo를 사용합니다.kubectl apply를 사용하여 응용 프로그램을 배치할 때 목표 이름 공간에 라벨 istio-injection=enabled가 붙으면 Istio sidecar injector는 자동으로 Envoy 용기를 응용 프로그램 Pod에 주입합니다.
kubectl label namespace istio-injection=enabled
kubectl create -n -f .yaml
대상 네임스페이스에 istio-injection 태그가 없으면 istioctl kube-inject 명령을 사용하여 배치하기 전에 Envoy 컨테이너를 응용프로그램 Pod에 수동으로 주입할 수 있습니다.
istioctl kube-inject -f .yaml | kubectl apply -f -
삭제
RBAC 권한, istio-system 네임스페이스 및 모든 리소스를 삭제합니다.일부 자원은 단계적으로 삭제되기 때문에, 자원을 찾을 수 없다는 알림이 나타날 수 있으니 무시할 수 있습니다.활성화된 mutual TLS 모드에서 제거:
너비 모드로 배치된istio 삭제
kubectl delete -f install/kubernetes/istio-demo.yaml
엄격한 모드로 배치된istio 삭제
kubectl delete -f install/kubernetes/istio-demo-auth.yaml
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kubernetes 환경에서 Datadog Agent의 Istio 오류 이해Amazon EKS에서 실행 중입니다. 환경 정보나 구축 순서는 이하 페이지와 같습니다. Istio의 도입은 이하를 참고로 했습니다. 모두 오류 내용은 동일합니다. agent.log Agent v7.28.1에 포함된...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.