当前位置: 首页 > Linux

K8S生态周报-Istio修复了导致Pod崩溃的bug

时间:2023-04-06 05:00:47 Linux

《K8S生态周刊》主要是一些我接触过的K8S生态相关的每周推荐资讯。欢迎订阅知乎专栏《k8s生态》。Istio1.6.7发布Istio1.6.7以解决1.6.6中引入的错误。该bug可能会导致部分Pod在使用Istio1.6.6时进入CrashLoopBackOff状态,无法正常提供服务。修复后的核心代码如下,这里主要是再添加一个返回值expectpod。通过该方法获取Pod时,有两种情况Pod可能为空:endpoint与Pod没有关联,则expectpod为false;端点关联了Pod,但是没有找到Pod,那么expectpod为true,出现这种情况主要原因可能是最终一致性,或者乱序事件等,建议有升级打算的读者Istio直接跳过1.6.6版本,避免影响服务。funcgetPod(c*Controller,ipstring,ep*metav1.ObjectMeta,targetRef*v1.ObjectReference,hosthost.Name)(rpod*v1.Pod,expectPodbool){pod:=c.pods.getPodByIP(ip)如果pod!=nil{returnpod,false}iftargetRef!=nil&&targetRef.Kind=="Pod"{key:=kube.KeyFunc(targetRef.Name,targetRef.Namespace)podFromInformer,f,err:=c.pods.informer.GetStore().GetByKey(key)iferr!=nil||!f{log.Debugf("Endpointwithoutpod%s%s.%serror:%v",ip,ep.Name,ep.Namespace,err)endpointsWithNoPods.Increment()ifc.metrics!=nil{c.metrics.AddMetric(model.EndpointNoPod,string(host),nil,ip)}epkey:=kube.KeyFunc(ep.Name,ep.Namespace)c.pods.queueEndpointEventOnPodArrival(epkey,ip)返回nil,true}pod=podFromInformer.(*v1.Pod)}returnpod,false}Trivyv0.10.1发布本周Trivy相继v0.10.0和v0.10.1版本发布,我们来看看值得注意的地方:#559允许使用--severity选项过滤只查看特定级别的漏洞信息(MoeLove)?~trivyi--severity低alpine:3.10.22020-08-02T23:19:28.060+0800信息检测Alpine漏洞...alpine:3.10.2(alpine3.10.2)==============================总计:1(低:1)+--------+----------------+------------+--------------------+----------------+------------------------------+|图书馆|漏洞编号|严重程度|安装版本|固定版本||+--------+----------------+--------+-------------------+----------------+-------------------------------+|打开SSL|CVE-2019-1547|低|1.1.1c-r0|1.1.1d-r0|openssl:侧信道弱|||||||加密漏洞|+--------+----------------+--------+------------------+----------------+------------------------------+#562通过O支持用于过滤的笔策略代理(OPA)。例如,如果我们想使用--severityLOW参数达到和上面一样的效果,那么我们可以定义如下rego规则文件。注意:包名必须是简单的,并且还必须包含一个名为ignore的规则。(MoeLove)?~cattest_trivy.regopackagetrivyignore{input.Severity=={"UNKNOWN","MEDIUM","HIGH","CRITICAL"}[_]}只需将--ignore-policy参数传递给trivy即可。(这里要注意理清逻辑,trivy的参数是忽略匹配成功的规则。)(MoeLove)?~trivyimage--ignore-policytest_trivy.regoalpine:3.10.22020-08-02T23:54:40.843+0800INFODetectingAlpinevulnerabilities...alpine:3.10.2(alpine3.10.2)===============================总计:1(未知:0,低:1,中:0,高:0,关键:0)+--------+----------------+---------+-------------------+----------------+---------------------------+|图书馆|漏洞编号|严重程度|安装版本|固定版本|标题|+--------+------------------+----------+------------------+-----------------+----------------------------------+|打开SSL|CVE-2019-1547|低|1.1.1c-r0|1.1.1d-r0|openssl:侧信道弱|||||||加密漏洞|+--------+-------------+--------+------------------+----------------+----------------------------+#561在输出中添加了CweIDs字段。(MoeLove)?~trivyimage-fjson--ignore-policytest_trivy.regoalpine:3.10.2[{"Target":"alpine:3.10.2(alpine3.10.2)","Type":"alpine",“漏洞”:{“漏洞ID”:“CVE-2019-1547”,“PkgName”:“openssl”,“安装版本”:“1.1.1c-r0”,“固定版本”:“1.1.1d-r0”,"CweIDs":["CWE-311"],...}}]#574添加了--list-all-pkgs选项,允许在扫描的系统中输出已安装的包及其版本。v0.10.1后续版本主要修正了v0.10.0中Dockerfile中执行用户的修改,继续使用root用户作为容器镜像中的默认用户。更多该版本信息请查看TrivyReleaseNote,欢迎下载使用。上游进度#93248修改了Kubelet中CFS份额相关的逻辑,将最大值设置为内核允许的最大值,即2^18=262144。这样修改后,当Kubelet使用systemd作为cgroups驱动时,可以正常处理512个以上CPU核心的机器(如果使用cgroupfs作为cgroup驱动,总是可以的,因为内核会直接处理)相关内容关于Linux内核CFS,可以参考我之前的文章Docker容器资源管理欢迎订阅我的文章公众号【萌爱】