Docker v20.10.5 发布
这里我同时介绍下 Docker v20.10.4 和 v20.10.5 中值得注意的变更:
docker login
时,可能触发的 panic 。这个问题可能会发生在使用 Debian 系统全新安装 Docker v20.10.[0~3] 版本,并且通过 apt 安装了 docker-compose 的场景下。解决办法,要么升级到最新版本,要么就需要手动创建 ~/.docker/config.json
文件。对于绝大多数的用户应该都不会受到此问题影响;docker start -a
可能 hang 住的问题。说实话,要不是查这个问题,我已经基本忘记了 docker start 有个 -a
的选项了。我通常会直接用 docker run
启动当前要用的容器,或者 docker start
后,再 docker exec
, attach 相关的命令和参数基本都没有再用了。更多关于 Docker v20.10 的相关内容,请查看其 ReleaseNote[2]。
在之前的文章 K8S 生态周报| Helm v3.4 发布 中我介绍了 CoreDNS v1.8.0 版本相关的特性及变更,感兴趣的小伙伴可以复习一下。本次我来介绍下自 CoreDNS v1.8.1 到 v1.8.3 之间有哪些值得关注的变更。
localhost.<domain>
的请求都会解析为 127.0.0.1 例如:➜ ~ dig +short @127.0.0.1 -p 9987 localhost.moelove.info
127.0.0.1
如果 Corefile 中启用了 debug
和 log
plugin 的话,会看到类似的输出:
[DEBUG] plugin/local: Intercepting localhost query for "localhost.moelove.info." A, from 127.0.0.1
[INFO] 127.0.0.1:37324 - 17796 "A IN localhost.moelove.info. udp 63 false 4096" NOERROR qr,rd 78 0.000327638s
主要是为了解析 localhost 后跟任意的 domain name 的请求。更具体的背景请参考 issue #4260。
NXDOMAIN
而不是 NOERROR
。我用下面的配置进行说明,首先写一个 zone 文件,并命名为 test.moelove.info.txt :
$ORIGIN moelove.info.
@ 3600 SOA ns1.foo.com. (
zone-admin.foo.com. ; address of responsible party
2016072701 ; serial number
3600 ; refresh period
600 ; retry period
604800 ; expire time
1800 ) ; minimum ttl
86400 NS ns1.foo.com.
86400 NS ns2.foo.com.
3600 MX 10 mail.moelove.info.
60 A 10.10.10.10
3600 TXT "v=moe includemoelove.info ~all"
mail 14400 A 11.11.11.11
www 43200 CNAME moelove.info.
b.c 43200 CNAME c.c.moelove.info.
c.c 43200 CNAME d.c.moelove.info.
可以看到,这里将 b.c
CNAME 到 c.c
,c.c
CNAME 到 d.c
,但是 d.c
并不存在。
CoreDNS 用下面的内容作为配置:
moelove.info {
file test.moelove.info.txt
log
debug
}
分别使用 CoreDNS v1.7.1 和 v1.8.3 进行测试:
v1.7.1
➜ ~ ./coredns-v1.7 -conf Corefile -dns.port 9987
使用 dig 进行测试:
➜ ~ dig @127.0.0.1 -p 9987 b.c.moelove.info
; <<>> DiG 9.11.27-RedHat-9.11.27-1.fc32 <<>> @127.0.0.1 -p 9987 b.c.moelove.info
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14077
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 1
;; WARNING: recursion requested but not available
可以看到返回中 status: NOERROR
。
v1.8.3
➜ ~ ./coredns-v1.8 -conf Corefile -dns.port 9988
使用 dig 进行测试:
➜ ~ dig @127.0.0.1 -p 9988 b.c.moelove.info
; <<>> DiG 9.11.27-RedHat-9.11.27-1.fc32 <<>> @127.0.0.1 -p 9988 b.c.moelove.info
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 832
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 1
;; WARNING: recursion requested but not available
可以看到返回中是 status: NXDOMAIN
。
这个修正对于我们判断 DNS 记录是否正确/工作是否正常,有很大的帮助。
更多关于 CoreDNS v1.8+ 版本的特性变更,请参考其 ReleaseNote[4]
kubectl.kubernetes.io/default-container
声明 kubectl exec 时的默认容器了,这个功能类似于 kubectl.kubernetes.io/default-logs-container
的声明,我们可以将主体容器作为默认容器,这样 exec 或者 logs 的时候,就不需要再去指定容器名称了,非常实用!当然,kubectl cp
也会遵循此行为。TheMoeLove
[1]
k8s生态: https://zhuanlan.zhihu.com/container
[2]
Docker ReleaseNote: https://github.com/moby/moby/releases
[3]
RFC 6604: https://tools.ietf.org/html/rfc6604#section-3
[4]
CoreDNS ReleaseNote: https://coredns.io/2021/02/24/coredns-1.8.3-release/