mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 03:41:45 +00:00
Merge pull request #56544 from leblancd/v6_dns_probe_brackets
Automatic merge from submit-queue (batch tested with PRs 56497, 56500, 55018, 56544, 56425). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Add brackets around IPv6 kube-dns liveness probe addrs **What this PR does / why we need it**: Previously, when an IPv6-only Kubernetes cluster was instantiated via 'kubeadm init ...', the liveness probes that were configured by kubeadm for kube-dns currently use IP:port strings of "::1:53" and "::1:10053". These IP:port strings should instead include brackets around the ::1 IPv6 loopback address, e.g. "[::1]:53" and "[::1]:10053". This change adds the necessary brackets around the ::1 IPv6 loopback address. Without this change, the kube-dns sidecar container interprets the bracket-less strings as IPv4 IP:port strings that have too many colons, and the kube-dns pod is restarted about once every 2 minutes. **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*: Fixes #56543 /area ipv6 /sig network **Special notes for your reviewer**: **Release note**: ```release-note NONE ```
This commit is contained in:
commit
617821eb39
@ -63,22 +63,25 @@ func kubeDNSAddon(cfg *kubeadmapi.MasterConfiguration, client clientset.Interfac
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var dnsBindAddr string
|
var dnsBindAddr, dnsProbeAddr string
|
||||||
if dnsip.To4() == nil {
|
if dnsip.To4() == nil {
|
||||||
dnsBindAddr = "::1"
|
dnsBindAddr = "::1"
|
||||||
|
dnsProbeAddr = "[" + dnsBindAddr + "]"
|
||||||
} else {
|
} else {
|
||||||
dnsBindAddr = "127.0.0.1"
|
dnsBindAddr = "127.0.0.1"
|
||||||
|
dnsProbeAddr = dnsBindAddr
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the YAML manifest conditionally based on the k8s version
|
// Get the YAML manifest conditionally based on the k8s version
|
||||||
kubeDNSDeploymentBytes := GetKubeDNSManifest(k8sVersion)
|
kubeDNSDeploymentBytes := GetKubeDNSManifest(k8sVersion)
|
||||||
dnsDeploymentBytes, err := kubeadmutil.ParseTemplate(kubeDNSDeploymentBytes,
|
dnsDeploymentBytes, err := kubeadmutil.ParseTemplate(kubeDNSDeploymentBytes,
|
||||||
struct{ ImageRepository, Arch, Version, DNSBindAddr, DNSDomain, DNSProbeType, MasterTaintKey string }{
|
struct{ ImageRepository, Arch, Version, DNSBindAddr, DNSProbeAddr, DNSDomain, DNSProbeType, MasterTaintKey string }{
|
||||||
ImageRepository: cfg.ImageRepository,
|
ImageRepository: cfg.ImageRepository,
|
||||||
Arch: runtime.GOARCH,
|
Arch: runtime.GOARCH,
|
||||||
// Get the kube-dns version conditionally based on the k8s version
|
// Get the kube-dns version conditionally based on the k8s version
|
||||||
Version: GetDNSVersion(k8sVersion, kubeadmconstants.KubeDNS),
|
Version: GetDNSVersion(k8sVersion, kubeadmconstants.KubeDNS),
|
||||||
DNSBindAddr: dnsBindAddr,
|
DNSBindAddr: dnsBindAddr,
|
||||||
|
DNSProbeAddr: dnsProbeAddr,
|
||||||
DNSDomain: cfg.Networking.DNSDomain,
|
DNSDomain: cfg.Networking.DNSDomain,
|
||||||
DNSProbeType: GetKubeDNSProbeType(k8sVersion),
|
DNSProbeType: GetKubeDNSProbeType(k8sVersion),
|
||||||
MasterTaintKey: kubeadmconstants.LabelNodeRoleMaster,
|
MasterTaintKey: kubeadmconstants.LabelNodeRoleMaster,
|
||||||
|
@ -92,11 +92,12 @@ func TestCompileManifests(t *testing.T) {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
manifest: v180AndAboveKubeDNSDeployment,
|
manifest: v180AndAboveKubeDNSDeployment,
|
||||||
data: struct{ ImageRepository, Arch, Version, DNSBindAddr, DNSDomain, DNSProbeType, MasterTaintKey string }{
|
data: struct{ ImageRepository, Arch, Version, DNSBindAddr, DNSProbeAddr, DNSDomain, DNSProbeType, MasterTaintKey string }{
|
||||||
ImageRepository: "foo",
|
ImageRepository: "foo",
|
||||||
Arch: "foo",
|
Arch: "foo",
|
||||||
Version: "foo",
|
Version: "foo",
|
||||||
DNSBindAddr: "foo",
|
DNSBindAddr: "foo",
|
||||||
|
DNSProbeAddr: "foo",
|
||||||
DNSDomain: "foo",
|
DNSDomain: "foo",
|
||||||
DNSProbeType: "foo",
|
DNSProbeType: "foo",
|
||||||
MasterTaintKey: "foo",
|
MasterTaintKey: "foo",
|
||||||
|
@ -156,8 +156,8 @@ spec:
|
|||||||
args:
|
args:
|
||||||
- --v=2
|
- --v=2
|
||||||
- --logtostderr
|
- --logtostderr
|
||||||
- --probe=kubedns,{{ .DNSBindAddr }}:10053,kubernetes.default.svc.{{ .DNSDomain }},5,{{ .DNSProbeType }}
|
- --probe=kubedns,{{ .DNSProbeAddr }}:10053,kubernetes.default.svc.{{ .DNSDomain }},5,{{ .DNSProbeType }}
|
||||||
- --probe=dnsmasq,{{ .DNSBindAddr }}:53,kubernetes.default.svc.{{ .DNSDomain }},5,{{ .DNSProbeType }}
|
- --probe=dnsmasq,{{ .DNSProbeAddr }}:53,kubernetes.default.svc.{{ .DNSDomain }},5,{{ .DNSProbeType }}
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 10054
|
- containerPort: 10054
|
||||||
name: metrics
|
name: metrics
|
||||||
|
Loading…
Reference in New Issue
Block a user