「K8S 生態週報」內容主要包含我所接觸到的 K8S 生態相關的每週值得推薦的一些信息。歡迎訂閱知乎專欄 「k8s生態」。
Istio 1.6.7 是爲了解決在 1.6.6 中引入的一個 bug。git
該 bug 可能會致使 在使用 Istio 1.6.6 時,某些 Pod 進入 CrashLoopBackOff
狀態,沒法正常提供服務。github
修復後的核心代碼以下,這裏主要是增長另外一個返回值 expectpod
。json
經過此方法獲取 Pod 時,Pod 有兩種狀況可能爲空:ide
false
;true
而這種狀況發生的最主要緣由多是因爲最終一致性,或者亂序事件等。oop
建議若是打算升級 Istio 的讀者,直接跳過 1.6.6 版本,以避免影響到服務。spa
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.0 和 v0.10.1 版本,咱們一塊兒來看看有哪些值得關注的內容吧:3d
--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 | +---------+------------------+----------+-------------------+---------------+--------------------------------+
比方說,咱們想要實現和上面使用 --severity LOW
參數相同的效果,那咱們能夠定義以下 rego 規則文件。注意: 包名必須爲 trivy
,同時,它還必須包含一個名爲 ignore
的規則。code
(MoeLove) ➜ ~ cat test_trivy.rego package trivy ignore { input.Severity == {"UNKNOWN", "MEDIUM", "HIGH", "CRITICAL"}[_] }
經過給 trivy
傳遞 --ignore-policy
參數便可。(這裏必定要注意搞清楚邏輯, trivy 的參數爲忽略掉匹配成功的規則。)orm
(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 | +---------+------------------+----------+-------------------+---------------+--------------------------------+
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" ], ... } } ]
--list-all-pkgs
選項,容許輸出被掃描系統中已經安裝的包及其版本等。然後續發佈的 v0.10.1 版本主要是爲了修正 v0.10.0 中對 Dockerfile 中執行用戶的修改,繼續使用 root 用戶做爲容器鏡像中的默認用戶 。事件
更多關於此版本的信息,請查看 Trivy ReleaseNote, 歡迎下載使用。
經過這次修改,Kubelet 使用 systemd 做爲 cgroups 驅動時,能正常的處理 CPU 核數大於 512 的機器(若是使用 cgroupfs 做爲 cgroup 驅動的話,一直均可以,由於內核會直接進行處理)
有關 Linux 內核 CFS 相關內容,能夠參考我以前寫的文章 Docker 容器資源管理
歡迎訂閱個人文章公衆號【MoeLove】