关于istio:K8S-生态周报-Istio-已修复导致-Pod-崩溃的-bug

37次阅读

共计 3550 个字符,预计需要花费 9 分钟才能阅读完成。

「K8S 生态周报」内容次要蕴含我所接触到的 K8S 生态相干的每周值得举荐的一些信息。欢送订阅知乎专栏「k8s 生态」。

Istio 1.6.7 公布

Istio 1.6.7 是为了解决在 1.6.6 中引入的一个 bug。

该 bug 可能会导致 在应用 Istio 1.6.6 时,某些 Pod 进入 CrashLoopBackOff 状态,无奈失常提供服务。

修复后的外围代码如下,这里次要是减少另一个返回值 expectpod

通过此办法获取 Pod 时,Pod 有两种状况可能为空:

  • 该 endpoint 未关联 Pod,这时 expectpod 为 false
  • 该 endpoint 已关联 Pod,但未找到 Pod,这时 expectpod 为 true

而这种状况产生的最次要起因可能是因为最终一致性,或者乱序事件等。

倡议如果打算降级 Istio 的读者,间接跳过 1.6.6 版本,免得影响到服务。

func getPod(c *Controller, ip string, ep *metav1.ObjectMeta, targetRef *v1.ObjectReference, host host.Name) (rpod *v1.Pod, expectPod bool) {pod := c.pods.getPodByIP(ip)
    if pod != nil {return pod, false}
    if targetRef != nil && targetRef.Kind == "Pod" {key := kube.KeyFunc(targetRef.Name, targetRef.Namespace)
        podFromInformer, f, err := c.pods.informer.GetStore().GetByKey(key)
        if err != nil || !f {log.Debugf("Endpoint without pod %s %s.%s error: %v", ip, ep.Name, ep.Namespace, err)
            endpointsWithNoPods.Increment()
            if c.metrics != nil {c.metrics.AddMetric(model.EndpointNoPod, string(host), nil, ip)
            }

            epkey := kube.KeyFunc(ep.Name, ep.Namespace)
            c.pods.queueEndpointEventOnPodArrival(epkey, ip)
            return nil, true
        }
        pod = podFromInformer.(*v1.Pod)
    }
    return pod, false
}

Trivy v0.10.1 公布

本周 Trivy 相继公布了 v0.10.0 和 v0.10.1 版本,咱们一起来看看有哪些值得关注的内容吧:

  • #559 容许通过应用 --severity 选项进行过滤,只查看特定级别的破绽信息
(MoeLove) ➜  ~ trivy i --severity LOW  alpine:3.10.2   
2020-08-02T23:19:28.060+0800    INFO    Detecting Alpine vulnerabilities...

alpine:3.10.2 (alpine 3.10.2)
=============================
Total: 1 (LOW: 1)

+---------+------------------+----------+-------------------+---------------+--------------------------------+
| LIBRARY | VULNERABILITY ID | SEVERITY | INSTALLED VERSION | FIXED VERSION |             TITLE              |
+---------+------------------+----------+-------------------+---------------+--------------------------------+
| openssl | CVE-2019-1547    | LOW      | 1.1.1c-r0         | 1.1.1d-r0     | openssl: side-channel weak     |
|         |                  |          |                   |               | encryption vulnerability       |
+---------+------------------+----------+-------------------+---------------+--------------------------------+
  • #562 反对通过 Open Policy Agent (OPA) 来进行过滤。

比方说,咱们想要实现和下面应用 --severity LOW 参数雷同的成果,那咱们能够定义如下 rego 规定文件。留神: 包名必须为 trivy,同时,它还必须蕴含一个名为 ignore 的规定。

(MoeLove) ➜  ~ cat test_trivy.rego 
package trivy

ignore {input.Severity == {"UNKNOWN", "MEDIUM", "HIGH", "CRITICAL"}[_]
}

通过给 trivy 传递 --ignore-policy 参数即可。(这里肯定要留神搞清楚逻辑,trivy 的参数为疏忽掉匹配胜利的规定 。)

(MoeLove) ➜  ~ trivy image  --ignore-policy test_trivy.rego  alpine:3.10.2
2020-08-02T23:54:40.843+0800    INFO    Detecting Alpine vulnerabilities...

alpine:3.10.2 (alpine 3.10.2)
=============================
Total: 1 (UNKNOWN: 0, LOW: 1, MEDIUM: 0, HIGH: 0, CRITICAL: 0)

+---------+------------------+----------+-------------------+---------------+--------------------------------+
| LIBRARY | VULNERABILITY ID | SEVERITY | INSTALLED VERSION | FIXED VERSION |             TITLE              |
+---------+------------------+----------+-------------------+---------------+--------------------------------+
| openssl | CVE-2019-1547    | LOW      | 1.1.1c-r0         | 1.1.1d-r0     | openssl: side-channel weak     |
|         |                  |          |                   |               | encryption vulnerability       |
+---------+------------------+----------+-------------------+---------------+--------------------------------+
  • #561 在输入内容中新减少了 CweIDs 字段。
(MoeLove) ➜  ~ trivy image -f json  --ignore-policy test_trivy.rego  alpine:3.10.2
[
  {"Target": "alpine:3.10.2 (alpine 3.10.2)",
    "Type": "alpine",
    "Vulnerabilities": 
      {
        "VulnerabilityID": "CVE-2019-1547",
        "PkgName": "openssl",
        "InstalledVersion": "1.1.1c-r0",
        "FixedVersion": "1.1.1d-r0",
        "CweIDs": ["CWE-311"],
      ...
    }
  }
]
  • #574 减少了 --list-all-pkgs 选项,容许输入被扫描零碎中曾经装置的包及其版本等。

而后续公布的 v0.10.1 版本次要是为了修改 v0.10.0 中对 Dockerfile 中执行用户的批改,持续应用 root 用户作为容器镜像中的默认用户

更多对于此版本的信息,请查看 Trivy ReleaseNote, 欢送下载应用。

上游停顿

  • #93248 批改了 Kubelet 中 CFS shares 相干的逻辑,为其设置最大值为内核容许的最大值,即 2^18=262144。

通过此次批改,Kubelet 应用 systemd 作为 cgroups 驱动时,能失常的解决 CPU 核数大于 512 的机器(如果应用 cgroupfs 作为 cgroup 驱动的话,始终都能够,因为内核会间接进行解决)

无关 Linux 内核 CFS 相干内容,能够参考我之前写的文章 Docker 容器资源管理


欢送订阅我的文章公众号【MoeLove】

正文完
 0