Docker 使用centos 7.8(3.10.0-1127.el7.x86_64)的kubernetes 1.18.6和calico网络CNI上的Istio 1.5.7安装失败

Docker 使用centos 7.8(3.10.0-1127.el7.x86_64)的kubernetes 1.18.6和calico网络CNI上的Istio 1.5.7安装失败,docker,kubernetes,centos7,istio,Docker,Kubernetes,Centos7,Istio,我在centos-7.8(3.10.0-1127.el7.x86_64)的多节点(12GB RAM和4 CPU)上安装了全新的k8s 1.18.6,docker版本(19.03.6)和runc版本1.0.0-rc10。 我使用了calico(3.11.1)网络插件,直到这里一切正常 好的当我试图在上面安装istio 1.5.7时,我面临一个问题 如下 问题: 检测到您的群集不支持第三方JWT 认证。回到不太安全的第一方JWT。看见 详情请参阅 错误安装程序无法等待资源:资源不可用 10毫秒后准备

我在centos-7.8(3.10.0-1127.el7.x86_64)的多节点(12GB RAM和4 CPU)上安装了全新的k8s 1.18.6,docker版本(19.03.6)和runc版本1.0.0-rc10。

我使用了calico(3.11.1)网络插件,直到这里一切正常 好的当我试图在上面安装istio 1.5.7时,我面临一个问题 如下

问题:

  • 检测到您的群集不支持第三方JWT 认证。回到不太安全的第一方JWT。看见 详情请参阅
  • 错误安装程序无法等待资源:资源不可用 10毫秒后准备就绪:等待条件超时 部署/istio系统/istiod
  • kubectl获得吊舱-n istio系统 名称就绪状态重新启动 grafana-5f6f8cbf75-lngb7 1/1运行0 41s istio-EGERSSGATEWAY-cbd86567c-5x6rk 0/1集装箱创建0 44s istio-ingressgateway-799d5b8875-4ztq8 0/1集装箱制造0 42s istio-TRACKING-9dd6c4f7c-vv64n 1/1运行0 41s istiod-b7d8f955b-mtqgb 0/1紧急回位5 10m kiali-869c6894c5-pw7sm 1/1运行0 41s 普罗米修斯-7d697b95b-2rjvn 0/2集装箱制造0 41s

    istiod吊舱日志: 信息未指定证书,正在跳过DNS证书控制器 信息CRD控制器监视命名空间“” 信息入口控制器监视命名空间“” 警告配置存储&{0xc00020c6c0 cluster.local 0xc00026b1e0 0xc000795e00 0xc00079eea0[]}无法跟踪聚合中的分发 添加Kubernetes注册表适配器的信息 信息服务控制器正在监视命名空间“”,以获取服务、端点、节点和POD,刷新1毫秒 信息JWT政策是第一方JWT 信息使用自签名证书作为CA证书 info pkica无法获取机密(错误:get:dial tcp 10.96.0.1:443:i/o超时),将创建一个 错误:未能创建发现服务:enableCA:未能创建自签名城堡:由于机密写入错误,未能创建CA 错误pkica无法将机密写入CA(错误:Post:拨号tcp 10.96.0.1:443:i/o超时)。中止 创建发现服务时出错:enableCA:未能创建自签名城堡:由于机密写入错误,未能创建CA

  • 我将首先检查您的集群是否支持第三方令牌,了解更多信息
  • 由于第一方令牌的属性不太安全,Istio将默认使用第三方令牌。但是,并非所有Kubernetes平台都启用此功能

    如果您正在使用istioctl进行安装,将自动检测到支持。这也可以手动完成,并通过传递--set values.global.jwtPolicy=third party jwt或--set values.global.jwtPolicy=first party jwt进行配置

    要确定集群是否支持第三方令牌,请查找令牌请求API。如果此操作未返回响应,则该功能不受支持:


  • 然后我会检查需求,根据istio,您应该至少有16384 MB的内存和4个CPU来运行istio
  • 还有一种情况是社区成员在12GB内存上也有同样的问题


  • 我还将检查版本,如中所述
  • Istio 1.5已经过Kubernetes 1.14、1.15和1.16版的测试

    当您使用Kubernetes1.18.6版本时,它可能无法与Istio1.5版本一起使用


    因此,我建议采用这种方法:

    • 将4GB的RAM添加到集群中
    • 使用较新版本的istio
    • 安装istio时使用
      --设置值.global.jwtPolicy=first party jwt
    按原样和

    我也不认为v1.5曾经被批准用于K8SV1.18


    我的建议是在尝试安装之前使用Istio v1.8并禁用Calico。

    从您提供的日志中可以看出,您的群集不支持第三方JWT身份验证。安装istio时,是否可以尝试使用
    --设置值.global.jwtPolicy=first party jwt
    ?istio中有与此相关的部分。还值得注意的是,已经有ISTIO版本1.82.考虑到由于改进而安装了新版本。嗨,Jakub,谢谢你回复我的帖子。我试过按照你的建议使用旗子,但我还是失败了。在命令中添加它之后,这个标志没有任何影响。我使用它的方式如下:“istioctl manifest apply--set profile=demo--set values.global.jwtPolicy=first party jwt”这很奇怪,你有可能在你的设置中添加4GB的ram吗?如果我没记错的话,istio至少需要16GB的ram,也许正因为如此,它才被压垮了。
    kubectl get --raw /api/v1 | jq '.resources[] | select(.name | index("serviceaccounts/token"))'
    {
        "name": "serviceaccounts/token",
        "singularName": "",
        "namespaced": true,
        "group": "authentication.k8s.io",
        "version": "v1",
        "kind": "TokenRequest",
        "verbs": [
            "create"
        ]
    }