2017-09-27 11 views
0

Kubernetes에 자동 사이드카 인젝션으로 Istio를 설치하려고합니다. 내 환경은 3 개의 마스터와 2 개의 노드로 구성되어 있으며 Azure Container Service 마켓 플레이스 제품을 사용하여 Azure에 구축되었습니다.자동 사이드카 인젝션으로 Kubernetes에 Istio 설치하기 : istio-inializer.yaml 검증 실패

here 문서가 표시된 이후로 지금까지 RBACDynamicAdmissionControl을 사용하도록 설정했습니다. 나는를 추가하여 Kubernetes Master에서 /etc/kubernetes/istio-inializer.yaml을 수정 한 다음 Unix 명령 인 reboot을 사용하여 Kubernetes Master를 다시 시작하여이 작업을 수행했습니다.

설명서의 다음 단계는 kubectl을 사용하여 yaml을 적용하는 것입니다. 나는이 문서가이 단계 이전에 Istio 저장소와 cd을 복제 할 의도가 있다고 가정하지만 언급되지 않았습니다.

git clone https://github.com/istio/istio.git 
cd istio 
kubectl apply -f install/kubernetes/istio-initializer.yaml 

한 후 다음과 같은 오류가 발생합니다 : 내가 언급 플래그, validate=falsekubectl apply을 실행하려고하면

[email protected]:~/istio$ kubectl apply -f install/kubernetes/istio-initializer.yaml 

configmap "istio-inject" configured 
serviceaccount "istio-initializer-service-account" configured 
error: error validating "install/kubernetes/istio-initializer.yaml": error validating data: found invalid field initializers for v1.ObjectMeta; if you choose to ignore these errors, turn validation off with --validate=false 

,이 오류가 대신 생성됩니다

[email protected]:~/istio$ kubectl apply -f install/kubernetes/istio-initializer.yaml --validate=false 

configmap "istio-inject" configured 
serviceaccount "istio-initializer-service-account" configured 
deployment "istio-initializer" configured 
error: unable to recognize "install/kubernetes/istio-initializer.yaml": no matches for admissionregistration.k8s.io/, Kind=InitializerConfiguration 

나 ' 여기에서 어디로 가야할지 모르겠다. 이 문제는 yaml에있는 admissionregistration.k8s.io/v1alpha1 블록과 관련이있는 것으로 보입니다. 그러나이 블록에서 특히 잘못된 것이 무엇인지 확신 할 수 없습니다. 는 Kubernetes의

apiVersion: admissionregistration.k8s.io/v1alpha1 
kind: InitializerConfiguration 
metadata: 
    name: istio-sidecar 
initializers: 
    - name: sidecar.initializer.istio.io 
    rules: 
     - apiGroups: 
      - "*" 
     apiVersions: 
      - "*" 
     resources: 
      - deployments 
      - statefulsets 
      - jobs 
      - daemonsets 

설치된 버전 :

[email protected]:~/istio$ kubectl version 
Client Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.6", GitCommit:"7fa1c1756d8bc963f1a389f4a6937dc71f08ada2", GitTreeState:"clean", BuildDate:"2017-06-16T18:21:54Z", GoVersion:"go1.7.6", Compiler:"gc", Platform:"linux/amd64"} 
Server Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.6", GitCommit:"7fa1c1756d8bc963f1a389f4a6937dc71f08ada2", GitTreeState:"clean", BuildDate:"2017-06-16T18:21:54Z", GoVersion:"go1.7.6", Compiler:"gc", Platform:"linux/amd64"} 

나는 이것이 버전 불일치 의심. 후속 질문으로, ACS를 사용하여 azure에 kubernetes> = 1.7.4 버전을 배포 할 수 있습니까?

저는 Kubernetes에서 일하는 데 상당히 익숙합니다. 누군가 도움이된다면 크게 감사하겠습니다. 시간 내 주셔서 감사합니다.

답변

1

여기에서 언급 한 바와 같이 (>https://kubernetes.io/docs/admin/extensible-admission-controllers/#what-are-initializers) k8s 버전> 1.7에 알파 기능이 지원되므로 버전 문제가있는 것으로 보입니다.

1.7이 개 알파 기능, 이니셜 및 외부 입학
Webhooks, 그 주소 이러한 제한을 소개합니다. 이러한 기능을 사용하면 승인이 허용되지 않는 컨트롤러를 런타임에 개발하고 구성 할 수 있습니다.

그리고 Azure에 kubernetes> = 1.7.4 버전을 배포 할 수 있습니다. 포털을 사용하여 배포 된 버전을 확인하십시오. 그러나 acs-egnine을 사용하여 ARM 템플릿을 생성하는 경우 1.7.5 버전의 클러스터를 배포 할 수 있습니다.

절차는 https://github.com/Azure/acs-engine입니다. 기본적으로 세 단계가 포함됩니다. 먼저 clusterDefinition 섹션을 참조하여 json 파일을 만들어야합니다. 버전 1.7.5를 사용하려면 "orchestratorRelaease"속성을 "1.7"로 지정하고 "enableRbac"속성을 true로 지정하여 RBAC를 활성화해야합니다. 둘째, acs 엔진 (버전> = 0.6.0)을 사용하여 json 파일을 ARM 템플릿 (구문 분석 용 azuredeploy.json & azuredeploy)으로 구문 분석합니다.parameters.json을 작성해야합니다). 마지막으로 powershell에서 "New-AzureRmResourceGroupDeployment"명령을 사용하여 Azure에 클러스터를 배포하십시오.

희망 사항 :

+0

확인해 주셔서 감사합니다. 답변으로 표시되었습니다. –