Ssl Kubenetes pod curl仅在域名以“quot;结尾时有效&引用;

Ssl Kubenetes pod curl仅在域名以“quot;结尾时有效&引用;,ssl,curl,kubernetes,kubernetes-pod,Ssl,Curl,Kubernetes,Kubernetes Pod,我已经在k8s中设置了一个php:7.4-apachepod,并且curl只有在域名后面附加了的情况下才能对任何域进行绑定 独立docker容器按预期工作 例如: root@testpod1-67655784f8-lbzlw:/var/www/html# curl -I https://www.google.com.sg. HTTP/2 200 content-type: text/html; charset=ISO-8859-1 p3p: CP="This is not a P3P

我已经在k8s中设置了一个
php:7.4-apache
pod,并且
curl
只有在域名后面附加了
的情况下才能对任何域进行绑定

独立docker容器按预期工作

例如:

root@testpod1-67655784f8-lbzlw:/var/www/html# curl -I https://www.google.com.sg.
HTTP/2 200
content-type: text/html; charset=ISO-8859-1
p3p: CP="This is not a P3P policy! See g.co/p3phelp for more info."
date: Mon, 15 Mar 2021 07:28:29 GMT
server: gws
x-xss-protection: 0
x-frame-options: SAMEORIGIN
expires: Mon, 15 Mar 2021 07:28:29 GMT
cache-control: private
set-cookie: 1P_JAR=2021-03-15-07; expires=Wed, 14-Apr-2021 07:28:29 GMT; path=/; domain=.google.com.sg; Secure
set-cookie: NID=211=diZZqWJ8q_Z2Uv76GGJB3hCVZgW3DJdshJC6046-lim-eupG0XaiLz9jtCGdrYJ0H06ihwwuB8QSTWyDX1oJ5bn-s_NdSn0qnPCc3YFl-lgi1fHRc3PQ-Zzm43c1WC462MOLDniIpRsWd8ixCxGcmCK6OE7l7dyI_mh72DdKYSM; expires=Tue, 14-Sep-2021 07:28:29 GMT; path=/; domain=.google.com.sg; HttpOnly
alt-svc: h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
Pods的/etc/resolv.conf

root@testpod1-67655784f8-lbzlw:/var/www/html# cat /etc/resolv.conf
nameserver 10.96.0.10
search production.svc.cluster.local svc.cluster.local cluster.local xxxx.com
options ndots:5

这是预期的行为:
www.google.com.sg.
是一个完全限定名,而
www.google.com.sg
不是

问题在于您的
ndot
选项值,请阅读resolv.conf man中的以下内容:

ndots:n

为名称中必须出现的点数设置阈值 在进行初始绝对查询之前。n的默认值为1, 这意味着,如果名称中有任何点,将尝试该名称 在附加任何搜索列表元素之前,首先作为绝对名称 去吧

基本上,将示例中的
ndot
减少到3将允许
curl
在pod上工作


这里有一本关于这个主题的好书:

我通过将dnsPolicy设置为默认值解决了这个问题
root@testpod1-67655784f8-lbzlw:/var/www/html# curl -I https://www.google.com.sg
curl: (35) error:14094458:SSL routines:ssl3_read_bytes:tlsv1 unrecognized name
# kubectl logs --follow -n kube-system --selector 'k8s-app=kube-dns'
[INFO] 10.244.0.11:41210 - 18404 "AAAA IN www.google.com.sg.production.svc.cluster.local. udp 64 false 512" NXDOMAIN qr,aa,rd 157 0.000227919s
[INFO] 10.244.0.11:41210 - 44759 "A IN www.google.com.sg.production.svc.cluster.local. udp 64 false 512" NXDOMAIN qr,aa,rd 157 0.000222998s
[INFO] 10.244.0.11:37292 - 52263 "AAAA IN www.google.com.sg.svc.cluster.local. udp 53 false 512" NXDOMAIN qr,aa,rd 146 0.000149362s
[INFO] 10.244.0.11:37292 - 6177 "A IN www.google.com.sg.svc.cluster.local. udp 53 false 512" NXDOMAIN qr,aa,rd 146 0.000220946s
[INFO] 10.244.0.11:33258 - 6845 "AAAA IN www.google.com.sg.cluster.local. udp 49 false 512" NXDOMAIN qr,aa,rd 142 0.00012002s
[INFO] 10.244.0.11:33258 - 51638 "A IN www.google.com.sg.cluster.local. udp 49 false 512" NXDOMAIN qr,aa,rd 142 0.000140393s
[INFO] 10.244.0.11:42947 - 8517 "A IN www.google.com.sg.xxxx.com. udp 46 false 512" NOERROR qr,rd,ra 144 0.006529064s
[INFO] 10.244.0.11:42947 - 57930 "AAAA IN www.google.com.sg.xxxx.com. udp 46 false 512" NOERROR qr,rd,ra 209 0.00684084s
root@testpod1-67655784f8-lbzlw:/var/www/html# cat /etc/resolv.conf
nameserver 10.96.0.10
search production.svc.cluster.local svc.cluster.local cluster.local xxxx.com
options ndots:5