mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-01 07:47:56 +00:00
add flag to kubelet to ignore the cidr passed down by the apiserver on the master
This commit is contained in:
parent
219294623e
commit
fa60bbe8e6
@ -22,6 +22,8 @@
|
|||||||
{% set api_servers_with_port = api_servers + ":6443" -%}
|
{% set api_servers_with_port = api_servers + ":6443" -%}
|
||||||
{% endif -%}
|
{% endif -%}
|
||||||
|
|
||||||
|
{% set master_kubelet_args = "" %}
|
||||||
|
|
||||||
{% set debugging_handlers = "--enable-debugging-handlers=true" -%}
|
{% set debugging_handlers = "--enable-debugging-handlers=true" -%}
|
||||||
|
|
||||||
{% if grains['roles'][0] == 'kubernetes-master' -%}
|
{% if grains['roles'][0] == 'kubernetes-master' -%}
|
||||||
@ -31,6 +33,7 @@
|
|||||||
# running on the master.
|
# running on the master.
|
||||||
{% if grains.kubelet_api_servers is defined -%}
|
{% if grains.kubelet_api_servers is defined -%}
|
||||||
{% set api_servers_with_port = "--api-servers=https://" + grains.kubelet_api_servers -%}
|
{% set api_servers_with_port = "--api-servers=https://" + grains.kubelet_api_servers -%}
|
||||||
|
{% set master_kubelet_args = master_kubelet_args + "--register-schedulable=false --reconcile-cidr=false" -%}
|
||||||
{% else -%}
|
{% else -%}
|
||||||
{% set api_servers_with_port = "" -%}
|
{% set api_servers_with_port = "" -%}
|
||||||
{% endif -%}
|
{% endif -%}
|
||||||
@ -114,4 +117,4 @@
|
|||||||
{% endif -%}
|
{% endif -%}
|
||||||
|
|
||||||
# test_args has to be kept at the end, so they'll overwrite any prior configuration
|
# test_args has to be kept at the end, so they'll overwrite any prior configuration
|
||||||
DAEMON_ARGS="{{daemon_args}} {{api_servers_with_port}} {{debugging_handlers}} {{hostname_override}} {{cloud_provider}} {{config}} {{manifest_url}} --allow-privileged={{pillar['allow_privileged']}} {{pillar['log_level']}} {{cluster_dns}} {{cluster_domain}} {{docker_root}} {{kubelet_root}} {{configure_cbr0}} {{cgroup_root}} {{system_container}} {{pod_cidr}} {{cpu_cfs_quota}} {{network_plugin}} {{test_args}}"
|
DAEMON_ARGS="{{daemon_args}} {{api_servers_with_port}} {{debugging_handlers}} {{hostname_override}} {{cloud_provider}} {{config}} {{manifest_url}} --allow-privileged={{pillar['allow_privileged']}} {{pillar['log_level']}} {{cluster_dns}} {{cluster_domain}} {{docker_root}} {{kubelet_root}} {{configure_cbr0}} {{cgroup_root}} {{system_container}} {{pod_cidr}} {{ master_kubelet_args }} {{cpu_cfs_quota}} {{network_plugin}} {{test_args}}"
|
||||||
|
@ -119,6 +119,7 @@ type KubeletServer struct {
|
|||||||
Port uint
|
Port uint
|
||||||
ReadOnlyPort uint
|
ReadOnlyPort uint
|
||||||
RegisterNode bool
|
RegisterNode bool
|
||||||
|
RegisterSchedulable bool
|
||||||
RegistryBurst int
|
RegistryBurst int
|
||||||
RegistryPullQPS float64
|
RegistryPullQPS float64
|
||||||
ResolverConfig string
|
ResolverConfig string
|
||||||
@ -133,6 +134,7 @@ type KubeletServer struct {
|
|||||||
SystemContainer string
|
SystemContainer string
|
||||||
TLSCertFile string
|
TLSCertFile string
|
||||||
TLSPrivateKeyFile string
|
TLSPrivateKeyFile string
|
||||||
|
ReconcileCIDR bool
|
||||||
|
|
||||||
// Flags intended for testing
|
// Flags intended for testing
|
||||||
// Is the kubelet containerized?
|
// Is the kubelet containerized?
|
||||||
@ -195,6 +197,7 @@ func NewKubeletServer() *KubeletServer {
|
|||||||
Port: ports.KubeletPort,
|
Port: ports.KubeletPort,
|
||||||
ReadOnlyPort: ports.KubeletReadOnlyPort,
|
ReadOnlyPort: ports.KubeletReadOnlyPort,
|
||||||
RegisterNode: true, // will be ignored if no apiserver is configured
|
RegisterNode: true, // will be ignored if no apiserver is configured
|
||||||
|
RegisterSchedulable: true,
|
||||||
RegistryBurst: 10,
|
RegistryBurst: 10,
|
||||||
ResourceContainer: "/kubelet",
|
ResourceContainer: "/kubelet",
|
||||||
RktPath: "",
|
RktPath: "",
|
||||||
@ -202,6 +205,7 @@ func NewKubeletServer() *KubeletServer {
|
|||||||
RootDirectory: defaultRootDir,
|
RootDirectory: defaultRootDir,
|
||||||
SyncFrequency: 10 * time.Second,
|
SyncFrequency: 10 * time.Second,
|
||||||
SystemContainer: "",
|
SystemContainer: "",
|
||||||
|
ReconcileCIDR: true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -279,6 +283,8 @@ func (s *KubeletServer) AddFlags(fs *pflag.FlagSet) {
|
|||||||
fs.Float64Var(&s.ChaosChance, "chaos-chance", s.ChaosChance, "If > 0.0, introduce random client errors and latency. Intended for testing. [default=0.0]")
|
fs.Float64Var(&s.ChaosChance, "chaos-chance", s.ChaosChance, "If > 0.0, introduce random client errors and latency. Intended for testing. [default=0.0]")
|
||||||
fs.BoolVar(&s.Containerized, "containerized", s.Containerized, "Experimental support for running kubelet in a container. Intended for testing. [default=false]")
|
fs.BoolVar(&s.Containerized, "containerized", s.Containerized, "Experimental support for running kubelet in a container. Intended for testing. [default=false]")
|
||||||
fs.Uint64Var(&s.MaxOpenFiles, "max-open-files", 1000000, "Number of files that can be opened by Kubelet process. [default=1000000]")
|
fs.Uint64Var(&s.MaxOpenFiles, "max-open-files", 1000000, "Number of files that can be opened by Kubelet process. [default=1000000]")
|
||||||
|
fs.BoolVar(&s.ReconcileCIDR, "reconcile-cidr", s.ReconcileCIDR, "Reconcile node CIDR with the CIDR specified by the API server. No-op if register-node or configure-cbr0 is false. [default=true]")
|
||||||
|
fs.BoolVar(&s.RegisterSchedulable, "register-schedulable", s.RegisterSchedulable, "Register the node as schedulable. No-op if register-node is false. [default=true]")
|
||||||
}
|
}
|
||||||
|
|
||||||
// KubeletConfig returns a KubeletConfig suitable for being run, or an error if the server setup
|
// KubeletConfig returns a KubeletConfig suitable for being run, or an error if the server setup
|
||||||
@ -385,10 +391,12 @@ func (s *KubeletServer) KubeletConfig() (*KubeletConfig, error) {
|
|||||||
OOMAdjuster: oom.NewOOMAdjuster(),
|
OOMAdjuster: oom.NewOOMAdjuster(),
|
||||||
OSInterface: kubecontainer.RealOS{},
|
OSInterface: kubecontainer.RealOS{},
|
||||||
PodCIDR: s.PodCIDR,
|
PodCIDR: s.PodCIDR,
|
||||||
|
ReconcileCIDR: s.ReconcileCIDR,
|
||||||
PodInfraContainerImage: s.PodInfraContainerImage,
|
PodInfraContainerImage: s.PodInfraContainerImage,
|
||||||
Port: s.Port,
|
Port: s.Port,
|
||||||
ReadOnlyPort: s.ReadOnlyPort,
|
ReadOnlyPort: s.ReadOnlyPort,
|
||||||
RegisterNode: s.RegisterNode,
|
RegisterNode: s.RegisterNode,
|
||||||
|
RegisterSchedulable: s.RegisterSchedulable,
|
||||||
RegistryBurst: s.RegistryBurst,
|
RegistryBurst: s.RegistryBurst,
|
||||||
RegistryPullQPS: s.RegistryPullQPS,
|
RegistryPullQPS: s.RegistryPullQPS,
|
||||||
ResolverConfig: s.ResolverConfig,
|
ResolverConfig: s.ResolverConfig,
|
||||||
@ -647,6 +655,7 @@ func SimpleKubelet(client *client.Client,
|
|||||||
Port: port,
|
Port: port,
|
||||||
ReadOnlyPort: readOnlyPort,
|
ReadOnlyPort: readOnlyPort,
|
||||||
RegisterNode: true,
|
RegisterNode: true,
|
||||||
|
RegisterSchedulable: true,
|
||||||
ResolverConfig: kubelet.ResolvConfDefault,
|
ResolverConfig: kubelet.ResolvConfDefault,
|
||||||
ResourceContainer: "/kubelet",
|
ResourceContainer: "/kubelet",
|
||||||
RootDirectory: rootDir,
|
RootDirectory: rootDir,
|
||||||
@ -827,12 +836,14 @@ type KubeletConfig struct {
|
|||||||
OOMAdjuster *oom.OOMAdjuster
|
OOMAdjuster *oom.OOMAdjuster
|
||||||
OSInterface kubecontainer.OSInterface
|
OSInterface kubecontainer.OSInterface
|
||||||
PodCIDR string
|
PodCIDR string
|
||||||
|
ReconcileCIDR bool
|
||||||
PodConfig *config.PodConfig
|
PodConfig *config.PodConfig
|
||||||
PodInfraContainerImage string
|
PodInfraContainerImage string
|
||||||
Port uint
|
Port uint
|
||||||
ReadOnlyPort uint
|
ReadOnlyPort uint
|
||||||
Recorder record.EventRecorder
|
Recorder record.EventRecorder
|
||||||
RegisterNode bool
|
RegisterNode bool
|
||||||
|
RegisterSchedulable bool
|
||||||
RegistryBurst int
|
RegistryBurst int
|
||||||
RegistryPullQPS float64
|
RegistryPullQPS float64
|
||||||
ResolverConfig string
|
ResolverConfig string
|
||||||
@ -890,6 +901,7 @@ func CreateAndInitKubelet(kc *KubeletConfig) (k KubeletBootstrap, pc *config.Pod
|
|||||||
gcPolicy,
|
gcPolicy,
|
||||||
pc.SeenAllSources,
|
pc.SeenAllSources,
|
||||||
kc.RegisterNode,
|
kc.RegisterNode,
|
||||||
|
kc.RegisterSchedulable,
|
||||||
kc.StandaloneMode,
|
kc.StandaloneMode,
|
||||||
kc.ClusterDomain,
|
kc.ClusterDomain,
|
||||||
kc.ClusterDNS,
|
kc.ClusterDNS,
|
||||||
@ -916,6 +928,7 @@ func CreateAndInitKubelet(kc *KubeletConfig) (k KubeletBootstrap, pc *config.Pod
|
|||||||
kc.SystemContainer,
|
kc.SystemContainer,
|
||||||
kc.ConfigureCBR0,
|
kc.ConfigureCBR0,
|
||||||
kc.PodCIDR,
|
kc.PodCIDR,
|
||||||
|
kc.ReconcileCIDR,
|
||||||
kc.MaxPods,
|
kc.MaxPods,
|
||||||
kc.DockerExecHandler,
|
kc.DockerExecHandler,
|
||||||
kc.ResolverConfig,
|
kc.ResolverConfig,
|
||||||
|
@ -322,6 +322,7 @@ func (ks *KubeletExecutorServer) createAndInitKubelet(
|
|||||||
gcPolicy,
|
gcPolicy,
|
||||||
pc.SeenAllSources,
|
pc.SeenAllSources,
|
||||||
kc.RegisterNode,
|
kc.RegisterNode,
|
||||||
|
kc.RegisterSchedulable,
|
||||||
kc.StandaloneMode,
|
kc.StandaloneMode,
|
||||||
kc.ClusterDomain,
|
kc.ClusterDomain,
|
||||||
net.IP(kc.ClusterDNS),
|
net.IP(kc.ClusterDNS),
|
||||||
@ -348,6 +349,7 @@ func (ks *KubeletExecutorServer) createAndInitKubelet(
|
|||||||
kc.SystemContainer,
|
kc.SystemContainer,
|
||||||
kc.ConfigureCBR0,
|
kc.ConfigureCBR0,
|
||||||
kc.PodCIDR,
|
kc.PodCIDR,
|
||||||
|
kc.ReconcileCIDR,
|
||||||
kc.MaxPods,
|
kc.MaxPods,
|
||||||
kc.DockerExecHandler,
|
kc.DockerExecHandler,
|
||||||
kc.ResolverConfig,
|
kc.ResolverConfig,
|
||||||
|
@ -301,4 +301,6 @@ retry_time
|
|||||||
file_content_in_loop
|
file_content_in_loop
|
||||||
cpu-cfs-quota
|
cpu-cfs-quota
|
||||||
terminated-pod-gc-threshold
|
terminated-pod-gc-threshold
|
||||||
|
reconcile-cidr
|
||||||
|
register-schedulable
|
||||||
|
|
||||||
|
@ -150,6 +150,7 @@ func NewMainKubelet(
|
|||||||
containerGCPolicy ContainerGCPolicy,
|
containerGCPolicy ContainerGCPolicy,
|
||||||
sourcesReady SourcesReadyFn,
|
sourcesReady SourcesReadyFn,
|
||||||
registerNode bool,
|
registerNode bool,
|
||||||
|
registerSchedulable bool,
|
||||||
standaloneMode bool,
|
standaloneMode bool,
|
||||||
clusterDomain string,
|
clusterDomain string,
|
||||||
clusterDNS net.IP,
|
clusterDNS net.IP,
|
||||||
@ -176,6 +177,7 @@ func NewMainKubelet(
|
|||||||
systemContainer string,
|
systemContainer string,
|
||||||
configureCBR0 bool,
|
configureCBR0 bool,
|
||||||
podCIDR string,
|
podCIDR string,
|
||||||
|
reconcileCIDR bool,
|
||||||
pods int,
|
pods int,
|
||||||
dockerExecHandler dockertools.ExecHandler,
|
dockerExecHandler dockertools.ExecHandler,
|
||||||
resolverConfig string,
|
resolverConfig string,
|
||||||
@ -263,6 +265,7 @@ func NewMainKubelet(
|
|||||||
httpClient: &http.Client{},
|
httpClient: &http.Client{},
|
||||||
sourcesReady: sourcesReady,
|
sourcesReady: sourcesReady,
|
||||||
registerNode: registerNode,
|
registerNode: registerNode,
|
||||||
|
registerSchedulable: registerSchedulable,
|
||||||
standaloneMode: standaloneMode,
|
standaloneMode: standaloneMode,
|
||||||
clusterDomain: clusterDomain,
|
clusterDomain: clusterDomain,
|
||||||
clusterDNS: clusterDNS,
|
clusterDNS: clusterDNS,
|
||||||
@ -290,6 +293,7 @@ func NewMainKubelet(
|
|||||||
writer: writer,
|
writer: writer,
|
||||||
configureCBR0: configureCBR0,
|
configureCBR0: configureCBR0,
|
||||||
podCIDR: podCIDR,
|
podCIDR: podCIDR,
|
||||||
|
reconcileCIDR: reconcileCIDR,
|
||||||
pods: pods,
|
pods: pods,
|
||||||
syncLoopMonitor: util.AtomicValue{},
|
syncLoopMonitor: util.AtomicValue{},
|
||||||
resolverConfig: resolverConfig,
|
resolverConfig: resolverConfig,
|
||||||
@ -465,6 +469,8 @@ type Kubelet struct {
|
|||||||
|
|
||||||
// Set to true to have the node register itself with the apiserver.
|
// Set to true to have the node register itself with the apiserver.
|
||||||
registerNode bool
|
registerNode bool
|
||||||
|
// Set to true to have the node register itself as schedulable.
|
||||||
|
registerSchedulable bool
|
||||||
// for internal book keeping; access only from within registerWithApiserver
|
// for internal book keeping; access only from within registerWithApiserver
|
||||||
registrationCompleted bool
|
registrationCompleted bool
|
||||||
|
|
||||||
@ -574,6 +580,7 @@ type Kubelet struct {
|
|||||||
// the correct state.
|
// the correct state.
|
||||||
configureCBR0 bool
|
configureCBR0 bool
|
||||||
podCIDR string
|
podCIDR string
|
||||||
|
reconcileCIDR bool
|
||||||
|
|
||||||
// Number of Pods which can be run by this Kubelet
|
// Number of Pods which can be run by this Kubelet
|
||||||
pods int
|
pods int
|
||||||
@ -819,6 +826,9 @@ func (kl *Kubelet) initialNodeStatus() (*api.Node, error) {
|
|||||||
Name: kl.nodeName,
|
Name: kl.nodeName,
|
||||||
Labels: map[string]string{"kubernetes.io/hostname": kl.hostname},
|
Labels: map[string]string{"kubernetes.io/hostname": kl.hostname},
|
||||||
},
|
},
|
||||||
|
Spec: api.NodeSpec{
|
||||||
|
Unschedulable: !kl.registerSchedulable,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
if kl.cloud != nil {
|
if kl.cloud != nil {
|
||||||
instances, ok := kl.cloud.Instances()
|
instances, ok := kl.cloud.Instances()
|
||||||
@ -2453,7 +2463,9 @@ func (kl *Kubelet) tryUpdateNodeStatus() error {
|
|||||||
return fmt.Errorf("no node instance returned for %q", kl.nodeName)
|
return fmt.Errorf("no node instance returned for %q", kl.nodeName)
|
||||||
}
|
}
|
||||||
kl.networkConfigMutex.Lock()
|
kl.networkConfigMutex.Lock()
|
||||||
|
if kl.reconcileCIDR {
|
||||||
kl.podCIDR = node.Spec.PodCIDR
|
kl.podCIDR = node.Spec.PodCIDR
|
||||||
|
}
|
||||||
kl.networkConfigMutex.Unlock()
|
kl.networkConfigMutex.Unlock()
|
||||||
|
|
||||||
if err := kl.setNodeStatus(node); err != nil {
|
if err := kl.setNodeStatus(node); err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user