2017-09-27 29 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

谢谢您的确认。标记为答案。 –

相关问题