2017-09-27 31 views
0

我試圖安裝帶有自動邊車注入的Istio到Kubernetes中。我的環境由三個主人和兩個節點組成,並使用Azure容器服務市場產品在Azure上構建。在Kubernetes中使用自動邊車注入安裝Istio:istio-inializer.yaml驗證失敗

繼文檔位於here,我至今已啓用RBACDynamicAdmissionControl。我已通過在Kubernetes Master上修改/etc/kubernetes/istio-inializer.yaml來完成此操作,方法是添加following content outlined in red,然後使用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 

在這之後會發生以下錯誤:

[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 

如果我嘗試與所提到的標誌,validate=false執行kubectl apply,則代替產生這樣的錯誤:

[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 

I」我不知道該從哪裏出發。該問題似乎與yaml中的admissionregistration.k8s.io/v1alpha1塊有關,但我不確定此塊中具體是不正確的。

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 

安裝Kubernetes的版本:

[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將一個版本的kubernetes> = 1.7.4部署到Azure?

我對與Kubernetes合作非常新,所以如果有人能幫助我將不勝感激。感謝您的時間。

回答

1

似乎是版本控制問題,因爲此處提及的k8s版本> 1.7支持alpha功能(https://kubernetes.io/docs/admin/extensible-admission-controllers/#what-are-initializers)。

1.7引入兩個α特徵,初始化器和外部入場
網絡掛接,該地址這些限制。這些功能允許控制器在樹外開發並在運行時進行配置。

而且可以將一個版本的kubernetes> = 1.7.4部署到Azure。注意使用門戶的部署版本。但是,如果使用acs-egnine生成ARM模板,則可以使用版本1.7.5部署羣集。

你可以參考這裏的程序https://github.com/Azure/acs-engine。基本上它涉及三個步驟。首先,你應該通過引用clusterDefinition部分來創建json文件。要使用版本1.7.5,應指定屬性「orchestratorRelaease」爲「1.7」,並通過將屬性「enableRbac」指定爲true來啓用RBAC。其次,使用acs引擎(version> = 0.6.0)將json文件解析爲ARM模板(azuredeploy.json & azuredeploy。應該創建parameters.json)。最後,在powershell中使用命令「New-AzureRmResourceGroupDeployment」將集羣部署到Azure。

希望這會有所幫助:)

+0

謝謝您的確認。標記爲答案。 –

相關問題