【问题标题】:Istio 1.5.7 installation fails on kubernetes 1.18.6 with centos 7.8(3.10.0-1127.el7.x86_64) with calico network CNIIstio 1.5.7 安装在 kubernetes 1.18.6 和 centos 7.8(3.10.0-1127.el7.x86_64) 和 calico 网络 CNI 上失败
【发布时间】:2021-05-02 02:14:33
【问题描述】:

我在 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 时,我遇到了问题 如下

问题:

  1. 检测到您的集群不支持第三方 JWT 验证。退回到不太安全的第一方 JWT。看 https://istio.io/docs/ops/best-practices/security/#configure-third-party-service-account-tokens 了解详情。
  2. 错误安装程序等待资源失败:资源没有 10m0s 后准备就绪:等待条件超时 部署/istio-system/istiod

kubectl 获取 pods -n istio-system NAME READY STATUS RESTARTS AGE grafana-5f6f8cbf75-lngb7 1/1 运行 0 41s istio-egressgateway-cbd86567c-5x6rk 0/1 ContainerCreating 0 44s istio-ingressgateway-799d5b8875-4ztq8 0/1 ContainerCreating 0 42s istio-tracing-9dd6c4f7c-vv64n 1/1 运行 0 41s istiod-b7d8f955b-mtqgb 0/1 CrashLoopBackOff 5 10m kiali-869c6894c5-pw7sm 1/1 运行 0 41s prometheus-7d697b95b-2rjvn 0/2 ContainerCreating 0 41s

istiod-pod-logs: info 未指定证书,跳过 DNS 证书控制器 信息 CRD 控制器监视命名空间“” 信息入口控制器监视命名空间“” 警告 Config Store &{0xc00020c6c0 cluster.local 0xc00026b1e0 0xc000795e00 0xc00079eea0 []} 无法跟踪总体分布 info 添加 Kubernetes 注册表适配器 info 服务控制器监视服务、端点、节点和 Pod 的命名空间“”,刷新 1m0s info JWT 策略是第一方-jwt info 使用自签名证书作为 CA 证书 info pkica 获取密钥失败(错误:Get https://10.96.0.1:443/api/v1/namespaces/istio-system/secrets/istio-ca-secret: dial tcp 10.96.0.1:443: i/o timeout),将创建一个 错误:创建发现服务失败:enableCA:创建自签名 Citadel 失败:由于秘密写入错误,创建 CA 失败 错误 pkica 无法向 CA 写入密钥(错误:发布 https://10.96.0.1:443/api/v1/namespaces/istio-system/secrets: dial tcp 10.96.0.1:443: i/o timeout)。中止。 错误创建发现服务失败:enableCA:创建自签名 Citadel 失败:由于秘密写入错误,创建 CA 失败

【问题讨论】:

  • 从我在日志中看到的您提供的集群不支持第三方 JWT 身份验证。您可以在安装 istio 时尝试使用 --set values.global.jwtPolicy=first-party-jwt 吗?在 istio documentation 中有相关部分。另外值得注意的是,已经有 istio 版本 1.8.2,由于改进,请考虑安装新版本。
  • 嗨,Jakub,感谢您回复我的帖子。我按照您的建议尝试使用该标志,但我仍然因同样的问题而失败。就像这个标志在添加到命令后没有影响我使用它如下 = "istioctl manifest apply --set profile=demo --set values.global.jwtPolicy=first-party-jwt"
  • 这很奇怪,你有可能在你的设置中添加 4GB 的内存吗?如果我没记错的话, istio 至少需要 16GB 的内存,也许正因为如此,它才会崩溃。

标签: docker kubernetes centos7 istio


【解决方案1】:

Istio v1.5 is out of supportv1.6v1.7 will soon be

我也不认为 v1.5 曾被批准用于 K8s v1.18。

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

【讨论】:

    【解决方案2】:
    1. 我会先检查您的集群是否支持第三方令牌,更多相关信息 here

    由于第一方令牌的属性不太安全,Istio 将默认使用第三方令牌。但是,并非所有 Kubernetes 平台都启用此功能。

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

    要确定您的集群是否支持第三方令牌,请查找 TokenRequest API。如果这没有返回响应,则该功能不受支持:

    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"
        ]
    }
    

    1. 然后我会检查要求,根据 istio documentation 你应该至少有 16384 MB 的内存和 4 个 CPU 来运行 istio。

    还有一个stackoverflow 案例,社区成员在使用 12GB 内存时遇到了同样的问题。


    1. 我还会检查版本,如documentation 中所述

    Istio 1.5 已在 Kubernetes 版本 1.14、1.15、1.16 中进行了测试。

    当您使用 Kubernetes 1.18.6 版本时,它可能不适用于 Istio 1.5 版本。


    所以我建议采用这种方法:

    • 为您的集群添加 4GB 的 RAM,
    • 使用更新版本的 istio,
    • 使用 --set values.global.jwtPolicy=first-party-jwt 安装 istio。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-21
      • 2019-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 2020-01-03
      相关资源
      最近更新 更多