Question: What is Seek help?

Answer: I f   y o u   g e t   t h i s   f a r ,   s o m e t h i n g   v e r y   s t r a n g e   i s   h a p p e n i n g .   Y o u r   S e r v i c e   i s   r u n n i n g ,   h a s   E n d p o i n t S l i c e s ,   a n d   y o u r   P o d s   a r e   a c t u a l l y   s e r v i n g .   Y o u   h a v e   D N S   w o r k i n g ,   a n d   k u b e - p r o x y   d o e s   n o t   s e e m   t o   b e   m i s b e h a v i n g .   A n d   y e t   y o u r   S e r v i c e   i s   n o t   w o r k i n g .   P l e a s e   l e t   u s   k n o w   w h a t   i s   g o i n g   o n ,   s o   w e   c a n   h e l p   i n v e s t i g a t e !   C o n t a c t   u s   o n   S l a c k   o r   F o r u m   o r   G i t H u b .


Question: What is What's next?

Answer: V i s i t   t h e   t r o u b l e s h o o t i n g   o v e r v i e w   d o c u m e n t   f o r   m o r e   i n f o r m a t i o n .


Question: What is Configuring a cgroup driver?

Answer: Configuring a cgroup driverThis page explains how to configure the kubelet's cgroup driver to match the container runtime cgroup driver for kubeadm clusters.Before you beginYou should be familiar with the Kubernetes container runtime requirements.Configuring the container runtime cgroup driverThe Container runtimes page explains that the systemd driver is recommended for kubeadm based setups instead of the kubelet's default cgroupfs driver, because kubeadm manages the kubelet as a systemd service.The page also provides details on how to set up a number of different container runtimes with the systemd driver by default.Configuring the kubelet cgroup driverkubeadm allows you to pass a KubeletConfiguration structure during kubeadm init. This KubeletConfiguration can include the cgroupDriver field which controls the cgroup driver of the kubelet.Note:In v1.22 and later, if the user does not set the cgroupDriver field under KubeletConfiguration, kubeadm defaults it to systemd.In Kubernetes v1.28, you can enable automatic detection of the cgroup driver as an alpha feature. See systemd cgroup driver for more details.A minimal example of configuring the field explicitly:# kubeadm-config.yaml kind: ClusterConfiguration apiVersion: kubeadm.k8s.io/v1beta4 kubernetesVersion: v1.21.0 --- kind: KubeletConfiguration apiVersion: kubelet.config.k8s.io/v1beta1 cgroupDriver: systemd Such a configuration file can then be passed to the kubeadm command:kubeadm init --config kubeadm-config.yaml Note:Kubeadm uses the same KubeletConfiguration for all nodes in the cluster. The KubeletConfiguration is stored in a ConfigMap object under the kube-system namespace.Executing the sub commands init, join and upgrade would result in kubeadm writing the KubeletConfiguration as a file under /var/lib/kubelet/config.yaml and passing it to the local node kubelet.On each node, kubeadm detects the CRI socket and stores its details into the /var/lib/kubelet/instance-config.yaml file. When executing the init, join, or upgrade subcommands, kubeadm patches the containerRuntimeEndpoint value from this instance configuration into /var/lib/kubelet/config.yaml.Using the cgroupfs driverTo use cgroupfs and to prevent kubeadm upgrade from modifying the KubeletConfiguration cgroup driver on existing setups, you must be explicit about its value. This applies to a case where you do not wish future versions of kubeadm to apply the systemd driver by default.See the below section on "Modify the kubelet ConfigMap" for details on how to be explicit about the value.If you wish to configure a container runtime to use the cgroupfs driver, you must refer to the documentation of the container runtime of your choice.Migrating to the systemd driverTo change the cgroup driver of an existing kubeadm cluster from cgroupfs to systemd in-place, a similar procedure to a kubelet upgrade is required. This must include both steps outlined below.Note:Alternatively, it is possible to replace the old nodes in the cluster wi


Question: How does Configuring a cgroup driver work?

Answer: Configuring a cgroup driverThis page explains how to configure the kubelet's cgroup driver to match the container runtime cgroup driver for kubeadm clusters.Before you beginYou should be familiar with the Kubernetes container runtime requirements.Configuring the container runtime cgroup driverThe Container runtimes page explains that the systemd driver is recommended for kubeadm based setups instead of the kubelet's default cgroupfs driver, because kubeadm manages the kubelet as a systemd service.The page also provides details on how to set up a number of different container runtimes with the systemd driver by default.Configuring the kubelet cgroup driverkubeadm allows you to pass a KubeletConfiguration structure during kubeadm init. This KubeletConfiguration can include the cgroupDriver field which controls the cgroup driver of the kubelet.Note:In v1.22 and later, if the user does not set the cgroupDriver field under KubeletConfiguration, kubeadm defaults it to systemd.In Kubernetes v1.28, you can enable automatic detection of the cgroup driver as an alpha feature. See systemd cgroup driver for more details.A minimal example of configuring the field explicitly:# kubeadm-config.yaml kind: ClusterConfiguration apiVersion: kubeadm.k8s.io/v1beta4 kubernetesVersion: v1.21.0 --- kind: KubeletConfiguration apiVersion: kubelet.config.k8s.io/v1beta1 cgroupDriver: systemd Such a configuration file can then be passed to the kubeadm command:kubeadm init --config kubeadm-config.yaml Note:Kubeadm uses the same KubeletConfiguration for all nodes in the cluster. The KubeletConfiguration is stored in a ConfigMap object under the kube-system namespace.Executing the sub commands init, join and upgrade would result in kubeadm writing the KubeletConfiguration as a file under /var/lib/kubelet/config.yaml and passing it to the local node kubelet.On each node, kubeadm detects the CRI socket and stores its details into the /var/lib/kubelet/instance-config.yaml file. When executing the init, join, or upgrade subcommands, kubeadm patches the containerRuntimeEndpoint value from this instance configuration into /var/lib/kubelet/config.yaml.Using the cgroupfs driverTo use cgroupfs and to prevent kubeadm upgrade from modifying the KubeletConfiguration cgroup driver on existing setups, you must be explicit about its value. This applies to a case where you do not wish future versions of kubeadm to apply the systemd driver by default.See the below section on "Modify the kubelet ConfigMap" for details on how to be explicit about the value.If you wish to configure a container runtime to use the cgroupfs driver, you must refer to the documentation of the container runtime of your choice.Migrating to the systemd driverTo change the cgroup driver of an existing kubeadm cluster from cgroupfs to systemd in-place, a similar procedure to a kubelet upgrade is required. This must include both steps outlined below.Note:Alternatively, it is possible to replace the old nodes in the cluster wi


Question: When would you use Configuring a cgroup driver?

Answer: Configuring a cgroup driverThis page explains how to configure the kubelet's cgroup driver to match the container runtime cgroup driver for kubeadm clusters.Before you beginYou should be familiar with the Kubernetes container runtime requirements.Configuring the container runtime cgroup driverThe Container runtimes page explains that the systemd driver is recommended for kubeadm based setups instead of the kubelet's default cgroupfs driver, because kubeadm manages the kubelet as a systemd service.The page also provides details on how to set up a number of different container runtimes with the systemd driver by default.Configuring the kubelet cgroup driverkubeadm allows you to pass a KubeletConfiguration structure during kubeadm init. This KubeletConfiguration can include the cgroupDriver field which controls the cgroup driver of the kubelet.Note:In v1.22 and later, if the user does not set the cgroupDriver field under KubeletConfiguration, kubeadm defaults it to systemd.In Kubernetes v1.28, you can enable automatic detection of the cgroup driver as an alpha feature. See systemd cgroup driver for more details.A minimal example of configuring the field explicitly:# kubeadm-config.yaml kind: ClusterConfiguration apiVersion: kubeadm.k8s.io/v1beta4 kubernetesVersion: v1.21.0 --- kind: KubeletConfiguration apiVersion: kubelet.config.k8s.io/v1beta1 cgroupDriver: systemd Such a configuration file can then be passed to the kubeadm command:kubeadm init --config kubeadm-config.yaml Note:Kubeadm uses the same KubeletConfiguration for all nodes in the cluster. The KubeletConfiguration is stored in a ConfigMap object under the kube-system namespace.Executing the sub commands init, join and upgrade would result in kubeadm writing the KubeletConfiguration as a file under /var/lib/kubelet/config.yaml and passing it to the local node kubelet.On each node, kubeadm detects the CRI socket and stores its details into the /var/lib/kubelet/instance-config.yaml file. When executing the init, join, or upgrade subcommands, kubeadm patches the containerRuntimeEndpoint value from this instance configuration into /var/lib/kubelet/config.yaml.Using the cgroupfs driverTo use cgroupfs and to prevent kubeadm upgrade from modifying the KubeletConfiguration cgroup driver on existing setups, you must be explicit about its value. This applies to a case where you do not wish future versions of kubeadm to apply the systemd driver by default.See the below section on "Modify the kubelet ConfigMap" for details on how to be explicit about the value.If you wish to configure a container runtime to use the cgroupfs driver, you must refer to the documentation of the container runtime of your choice.Migrating to the systemd driverTo change the cgroup driver of an existing kubeadm cluster from cgroupfs to systemd in-place, a similar procedure to a kubelet upgrade is required. This must include both steps outlined below.Note:Alternatively, it is possible to replace the old nodes in the cluster wi


Question: What are the benefits of Configuring a cgroup driver?

Answer: Configuring a cgroup driverThis page explains how to configure the kubelet's cgroup driver to match the container runtime cgroup driver for kubeadm clusters.Before you beginYou should be familiar with the Kubernetes container runtime requirements.Configuring the container runtime cgroup driverThe Container runtimes page explains that the systemd driver is recommended for kubeadm based setups instead of the kubelet's default cgroupfs driver, because kubeadm manages the kubelet as a systemd service.The page also provides details on how to set up a number of different container runtimes with the systemd driver by default.Configuring the kubelet cgroup driverkubeadm allows you to pass a KubeletConfiguration structure during kubeadm init. This KubeletConfiguration can include the cgroupDriver field which controls the cgroup driver of the kubelet.Note:In v1.22 and later, if the user does not set the cgroupDriver field under KubeletConfiguration, kubeadm defaults it to systemd.In Kubernetes v1.28, you can enable automatic detection of the cgroup driver as an alpha feature. See systemd cgroup driver for more details.A minimal example of configuring the field explicitly:# kubeadm-config.yaml kind: ClusterConfiguration apiVersion: kubeadm.k8s.io/v1beta4 kubernetesVersion: v1.21.0 --- kind: KubeletConfiguration apiVersion: kubelet.config.k8s.io/v1beta1 cgroupDriver: systemd Such a configuration file can then be passed to the kubeadm command:kubeadm init --config kubeadm-config.yaml Note:Kubeadm uses the same KubeletConfiguration for all nodes in the cluster. The KubeletConfiguration is stored in a ConfigMap object under the kube-system namespace.Executing the sub commands init, join and upgrade would result in kubeadm writing the KubeletConfiguration as a file under /var/lib/kubelet/config.yaml and passing it to the local node kubelet.On each node, kubeadm detects the CRI socket and stores its details into the /var/lib/kubelet/instance-config.yaml file. When executing the init, join, or upgrade subcommands, kubeadm patches the containerRuntimeEndpoint value from this instance configuration into /var/lib/kubelet/config.yaml.Using the cgroupfs driverTo use cgroupfs and to prevent kubeadm upgrade from modifying the KubeletConfiguration cgroup driver on existing setups, you must be explicit about its value. This applies to a case where you do not wish future versions of kubeadm to apply the systemd driver by default.See the below section on "Modify the kubelet ConfigMap" for details on how to be explicit about the value.If you wish to configure a container runtime to use the cgroupfs driver, you must refer to the documentation of the container runtime of your choice.Migrating to the systemd driverTo change the cgroup driver of an existing kubeadm cluster from cgroupfs to systemd in-place, a similar procedure to a kubelet upgrade is required. This must include both steps outlined below.Note:Alternatively, it is possible to replace the old nodes in the cluster wi


Question: What is Configuring a cgroup driver?

Answer: T h i s   p a g e   e x p l a i n s   h o w   t o   c o n f i g u r e   t h e   k u b e l e t ' s   c g r o u p   d r i v e r   t o   m a t c h   t h e   c o n t a i n e r   r u n t i m e   c g r o u p   d r i v e r   f o r   k u b e a d m   c l u s t e r s .


Question: What is Before you begin?

Answer: Y o u   s h o u l d   b e   f a m i l i a r   w i t h   t h e   K u b e r n e t e s   c o n t a i n e r   r u n t i m e   r e q u i r e m e n t s .


Question: What is Configuring the container runtime cgroup driver?

Answer: T h e   C o n t a i n e r   r u n t i m e s   p a g e   e x p l a i n s   t h a t   t h e   s y s t e m d   d r i v e r   i s   r e c o m m e n d e d   f o r   k u b e a d m   b a s e d   s e t u p s   i n s t e a d   o f   t h e   k u b e l e t ' s   d e f a u l t   c g r o u p f s   d r i v e r ,   b e c a u s e   k u b e a d m   m a n a g e s   t h e   k u b e l e t   a s   a   s y s t e m d   s e r v i c e .   T h e   p a g e   a l s o   p r o v i d e s   d e t a i l s   o n   h o w   t o   s e t   u p   a   n u m b e r   o f   d i f f e r e n t   c o n t a i n e r   r u n t i m e s   w i t h   t h e   s y s t e m d   d r i v e r   b y   d e f a u l t .


Question: What is Configuring the kubelet cgroup driver?

Answer: k u b e a d m   a l l o w s   y o u   t o   p a s s   a   K u b e l e t C o n f i g u r a t i o n   s t r u c t u r e   d u r i n g   k u b e a d m   i n i t .   T h i s   K u b e l e t C o n f i g u r a t i o n   c a n   i n c l u d e   t h e   c g r o u p D r i v e r   f i e l d   w h i c h   c o n t r o l s   t h e   c g r o u p   d r i v e r   o f   t h e   k u b e l e t .


Question: What is Note:?

Answer: I n   v 1 . 2 2   a n d   l a t e r ,   i f   t h e   u s e r   d o e s   n o t   s e t   t h e   c g r o u p D r i v e r   f i e l d   u n d e r   K u b e l e t C o n f i g u r a t i o n ,   k u b e a d m   d e f a u l t s   i t   t o   s y s t e m d .   I n   K u b e r n e t e s   v 1 . 2 8 ,   y o u   c a n   e n a b l e   a u t o m a t i c   d e t e c t i o n   o f   t h e   c g r o u p   d r i v e r   a s   a n   a l p h a   f e a t u r e .   S e e   s y s t e m d   c g r o u p   d r i v e r   f o r   m o r e   d e t a i l s .   A   m i n i m a l   e x a m p l e   o f   c o n f i g u r i n g   t h e   f i e l d   e x p l i c i t l y :   #   k u b e a d m - c o n f i g . y a m l   k i n d :   C l u s t e r C o n f i g u r a t i o n   a p i V e r s i o n :   k u b e a d m . k 8 s . i o / v 1 b e t a 4   k u b e r n e t e s V e r s i o n :   v 1 . 2 1 . 0   - - -   k i n d :   K u b e l e t C o n f i g u r a t i o n   a p i V e r s i o n :   k u b e l e t . c o n f i g . k 8 s . i o / v 1 b e t a 1   c g r o u p D r i v e r :   s y s t e m d   S u c h   a   c o n f i g u r a t i o n   f i l e   c a n   t h e n   b e   p a s s e d   t o   t h e   k u b e a d m   c o m m a n d :   k u b e a d m   i n i t   - - c o n f i g   k u b e a d m - c o n f i g . y a m l


Question: What is Note:?

Answer: K u b e a d m   u s e s   t h e   s a m e   K u b e l e t C o n f i g u r a t i o n   f o r   a l l   n o d e s   i n   t h e   c l u s t e r .   T h e   K u b e l e t C o n f i g u r a t i o n   i s   s t o r e d   i n   a   C o n f i g M a p   o b j e c t   u n d e r   t h e   k u b e - s y s t e m   n a m e s p a c e .   E x e c u t i n g   t h e   s u b   c o m m a n d s   i n i t ,   j o i n   a n d   u p g r a d e   w o u l d   r e s u l t   i n   k u b e a d m   w r i t i n g   t h e   K u b e l e t C o n f i g u r a t i o n   a s   a   f i l e   u n d e r   / v a r / l i b / k u b e l e t / c o n f i g . y a m l   a n d   p a s s i n g   i t   t o   t h e   l o c a l   n o d e   k u b e l e t .   O n   e a c h   n o d e ,   k u b e a d m   d e t e c t s   t h e   C R I   s o c k e t   a n d   s t o r e s   i t s   d e t a i l s   i n t o   t h e   / v a r / l i b / k u b e l e t / i n s t a n c e - c o n f i g . y a m l   f i l e .   W h e n   e x e c u t i n g   t h e   i n i t ,   j o i n ,   o r   u p g r a d e   s u b c o m m a n d s ,   k u b e a d m   p a t c h e s   t h e   c o n t a i n e r R u n t i m e E n d p o i n t   v a l u e   f r o m   t h i s   i n s t a n c e   c o n f i g u r a t i o n   i n t o   / v a r / l i b / k u b e l e t / c o n f i g . y a m l .


Question: What is Using the cgroupfs driver?

Answer: T o   u s e   c g r o u p f s   a n d   t o   p r e v e n t   k u b e a d m   u p g r a d e   f r o m   m o d i f y i n g   t h e   K u b e l e t C o n f i g u r a t i o n   c g r o u p   d r i v e r   o n   e x i s t i n g   s e t u p s ,   y o u   m u s t   b e   e x p l i c i t   a b o u t   i t s   v a l u e .   T h i s   a p p l i e s   t o   a   c a s e   w h e r e   y o u   d o   n o t   w i s h   f u t u r e   v e r s i o n s   o f   k u b e a d m   t o   a p p l y   t h e   s y s t e m d   d r i v e r   b y   d e f a u l t .   S e e   t h e   b e l o w   s e c t i o n   o n   " M o d i f y   t h e   k u b e l e t   C o n f i g M a p "   f o r   d e t a i l s   o n   h o w   t o   b e   e x p l i c i t   a b o u t   t h e   v a l u e .   I f   y o u   w i s h   t o   c o n f i g u r e   a   c o n t a i n e r   r u n t i m e   t o   u s e   t h e   c g r o u p f s   d r i v e r ,   y o u   m u s t   r e f e r   t o   t h e   d o c u m e n t a t i o n   o f   t h e   c o n t a i n e r   r u n t i m e   o f   y o u r   c h o i c e .


Question: What is Migrating to the systemd driver?

Answer: T o   c h a n g e   t h e   c g r o u p   d r i v e r   o f   a n   e x i s t i n g   k u b e a d m   c l u s t e r   f r o m   c g r o u p f s   t o   s y s t e m d   i n - p l a c e ,   a   s i m i l a r   p r o c e d u r e   t o   a   k u b e l e t   u p g r a d e   i s   r e q u i r e d .   T h i s   m u s t   i n c l u d e   b o t h   s t e p s   o u t l i n e d   b e l o w .


Question: What is Modify the kubelet ConfigMap?

Answer: C a l l   k u b e c t l   e d i t   c m   k u b e l e t - c o n f i g   - n   k u b e - s y s t e m . E i t h e r   m o d i f y   t h e   e x i s t i n g   c g r o u p D r i v e r   v a l u e   o r   a d d   a   n e w   f i e l d   t h a t   l o o k s   l i k e   t h i s : c g r o u p D r i v e r :   s y s t e m d   T h i s   f i e l d   m u s t   b e   p r e s e n t   u n d e r   t h e   k u b e l e t :   s e c t i o n   o f   t h e   C o n f i g M a p .   C a l l   k u b e c t l   e d i t   c m   k u b e l e t - c o n f i g   - n   k u b e - s y s t e m .   E i t h e r   m o d i f y   t h e   e x i s t i n g   c g r o u p D r i v e r   v a l u e   o r   a d d   a   n e w   f i e l d   t h a t   l o o k s   l i k e   t h i s :   c g r o u p D r i v e r :   s y s t e m d   T h i s   f i e l d   m u s t   b e   p r e s e n t   u n d e r   t h e   k u b e l e t :   s e c t i o n   o f   t h e   C o n f i g M a p .


Question: What is Update the cgroup driver on all nodes?

Answer: F o r   e a c h   n o d e   i n   t h e   c l u s t e r :   D r a i n   t h e   n o d e   u s i n g   k u b e c t l   d r a i n   < n o d e - n a m e >   - - i g n o r e - d a e m o n s e t s S t o p   t h e   k u b e l e t   u s i n g   s y s t e m c t l   s t o p   k u b e l e t S t o p   t h e   c o n t a i n e r   r u n t i m e M o d i f y   t h e   c o n t a i n e r   r u n t i m e   c g r o u p   d r i v e r   t o   s y s t e m d S e t   c g r o u p D r i v e r :   s y s t e m d   i n   / v a r / l i b / k u b e l e t / c o n f i g . y a m l S t a r t   t h e   c o n t a i n e r   r u n t i m e S t a r t   t h e   k u b e l e t   u s i n g   s y s t e m c t l   s t a r t   k u b e l e t U n c o r d o n   t h e   n o d e   u s i n g   k u b e c t l   u n c o r d o n   < n o d e - n a m e >   E x e c u t e   t h e s e   s t e p s   o n   n o d e s   o n e   a t   a   t i m e   t o   e n s u r e   w o r k l o a d s   h a v e   s u f f i c i e n t   t i m e   t o   s c h e d u l e   o n   d i f f e r e n t   n o d e s .   O n c e   t h e   p r o c e s s   i s   c o m p l e t e   e n s u r e   t h a t   a l l   n o d e s   a n d   w o r k l o a d s   a r e   h e a l t h y .


Question: What is Network Plugins?

Answer: Network PluginsKubernetes (version 1.3 through to the latest 1.34, and likely onwards) lets you use Container Network Interface (CNI) plugins for cluster networking. You must use a CNI plugin that is compatible with your cluster and that suits your needs. Different plugins are available (both open- and closed- source) in the wider Kubernetes ecosystem.A CNI plugin is required to implement the Kubernetes network model.You must use a CNI plugin that is compatible with the v0.4.0 or later releases of the CNI specification. The Kubernetes project recommends using a plugin that is compatible with the v1.0.0 CNI specification (plugins can be compatible with multiple spec versions).InstallationA Container Runtime, in the networking context, is a daemon on a node configured to provide CRI Services for kubelet. In particular, the Container Runtime must be configured to load the CNI plugins required to implement the Kubernetes network model.Note:Prior to Kubernetes 1.24, the CNI plugins could also be managed by the kubelet using the cni-bin-dir and network-plugin command-line parameters. These command-line parameters were removed in Kubernetes 1.24, with management of the CNI no longer in scope for kubelet.See Troubleshooting CNI plugin-related errors if you are facing issues following the removal of dockershim.For specific information about how a Container Runtime manages the CNI plugins, see the documentation for that Container Runtime, for example:containerdCRI-OFor specific information about how to install and manage a CNI plugin, see the documentation for that plugin or networking provider.Network Plugin RequirementsLoopback CNIIn addition to the CNI plugin installed on the nodes for implementing the Kubernetes network model, Kubernetes also requires the container runtimes to provide a loopback interface lo, which is used for each sandbox (pod sandboxes, vm sandboxes, ...). Implementing the loopback interface can be accomplished by re-using the CNI loopback plugin. or by developing your own code to achieve this (see this example from CRI-O).Support hostPortThe CNI networking plugin supports hostPort. You can use the official portmap plugin offered by the CNI plugin team or use your own plugin with portMapping functionality.If you want to enable hostPort support, you must specify portMappings capability in your cni-conf-dir. For example:{ "name": "k8s-pod-network", "cniVersion": "0.4.0", "plugins": [ { "type": "calico", "log_level": "info", "datastore_type": "kubernetes", "nodename": "127.0.0.1", "ipam": { "type": "host-local", "subnet": "usePodCidr" }, "policy": { "type": "k8s" }, "kubernetes": { "kubeconfig": "/etc/cni/net.d/calico-kubeconfig" } }, { "type": "portmap", "capabilities": {"portMappings": true}, "externalSetMarkChain": "KUBE-MARK-MASQ" } ] } Support traffic shapingExperimental FeatureThe CNI networking plugin also supports pod ingress and egress traffic shaping. You can use the official bandwidth plugin offered by the CNI plugin team or


Question: How does Network Plugins work?

Answer: Network PluginsKubernetes (version 1.3 through to the latest 1.34, and likely onwards) lets you use Container Network Interface (CNI) plugins for cluster networking. You must use a CNI plugin that is compatible with your cluster and that suits your needs. Different plugins are available (both open- and closed- source) in the wider Kubernetes ecosystem.A CNI plugin is required to implement the Kubernetes network model.You must use a CNI plugin that is compatible with the v0.4.0 or later releases of the CNI specification. The Kubernetes project recommends using a plugin that is compatible with the v1.0.0 CNI specification (plugins can be compatible with multiple spec versions).InstallationA Container Runtime, in the networking context, is a daemon on a node configured to provide CRI Services for kubelet. In particular, the Container Runtime must be configured to load the CNI plugins required to implement the Kubernetes network model.Note:Prior to Kubernetes 1.24, the CNI plugins could also be managed by the kubelet using the cni-bin-dir and network-plugin command-line parameters. These command-line parameters were removed in Kubernetes 1.24, with management of the CNI no longer in scope for kubelet.See Troubleshooting CNI plugin-related errors if you are facing issues following the removal of dockershim.For specific information about how a Container Runtime manages the CNI plugins, see the documentation for that Container Runtime, for example:containerdCRI-OFor specific information about how to install and manage a CNI plugin, see the documentation for that plugin or networking provider.Network Plugin RequirementsLoopback CNIIn addition to the CNI plugin installed on the nodes for implementing the Kubernetes network model, Kubernetes also requires the container runtimes to provide a loopback interface lo, which is used for each sandbox (pod sandboxes, vm sandboxes, ...). Implementing the loopback interface can be accomplished by re-using the CNI loopback plugin. or by developing your own code to achieve this (see this example from CRI-O).Support hostPortThe CNI networking plugin supports hostPort. You can use the official portmap plugin offered by the CNI plugin team or use your own plugin with portMapping functionality.If you want to enable hostPort support, you must specify portMappings capability in your cni-conf-dir. For example:{ "name": "k8s-pod-network", "cniVersion": "0.4.0", "plugins": [ { "type": "calico", "log_level": "info", "datastore_type": "kubernetes", "nodename": "127.0.0.1", "ipam": { "type": "host-local", "subnet": "usePodCidr" }, "policy": { "type": "k8s" }, "kubernetes": { "kubeconfig": "/etc/cni/net.d/calico-kubeconfig" } }, { "type": "portmap", "capabilities": {"portMappings": true}, "externalSetMarkChain": "KUBE-MARK-MASQ" } ] } Support traffic shapingExperimental FeatureThe CNI networking plugin also supports pod ingress and egress traffic shaping. You can use the official bandwidth plugin offered by the CNI plugin team or


Question: When would you use Network Plugins?

Answer: Network PluginsKubernetes (version 1.3 through to the latest 1.34, and likely onwards) lets you use Container Network Interface (CNI) plugins for cluster networking. You must use a CNI plugin that is compatible with your cluster and that suits your needs. Different plugins are available (both open- and closed- source) in the wider Kubernetes ecosystem.A CNI plugin is required to implement the Kubernetes network model.You must use a CNI plugin that is compatible with the v0.4.0 or later releases of the CNI specification. The Kubernetes project recommends using a plugin that is compatible with the v1.0.0 CNI specification (plugins can be compatible with multiple spec versions).InstallationA Container Runtime, in the networking context, is a daemon on a node configured to provide CRI Services for kubelet. In particular, the Container Runtime must be configured to load the CNI plugins required to implement the Kubernetes network model.Note:Prior to Kubernetes 1.24, the CNI plugins could also be managed by the kubelet using the cni-bin-dir and network-plugin command-line parameters. These command-line parameters were removed in Kubernetes 1.24, with management of the CNI no longer in scope for kubelet.See Troubleshooting CNI plugin-related errors if you are facing issues following the removal of dockershim.For specific information about how a Container Runtime manages the CNI plugins, see the documentation for that Container Runtime, for example:containerdCRI-OFor specific information about how to install and manage a CNI plugin, see the documentation for that plugin or networking provider.Network Plugin RequirementsLoopback CNIIn addition to the CNI plugin installed on the nodes for implementing the Kubernetes network model, Kubernetes also requires the container runtimes to provide a loopback interface lo, which is used for each sandbox (pod sandboxes, vm sandboxes, ...). Implementing the loopback interface can be accomplished by re-using the CNI loopback plugin. or by developing your own code to achieve this (see this example from CRI-O).Support hostPortThe CNI networking plugin supports hostPort. You can use the official portmap plugin offered by the CNI plugin team or use your own plugin with portMapping functionality.If you want to enable hostPort support, you must specify portMappings capability in your cni-conf-dir. For example:{ "name": "k8s-pod-network", "cniVersion": "0.4.0", "plugins": [ { "type": "calico", "log_level": "info", "datastore_type": "kubernetes", "nodename": "127.0.0.1", "ipam": { "type": "host-local", "subnet": "usePodCidr" }, "policy": { "type": "k8s" }, "kubernetes": { "kubeconfig": "/etc/cni/net.d/calico-kubeconfig" } }, { "type": "portmap", "capabilities": {"portMappings": true}, "externalSetMarkChain": "KUBE-MARK-MASQ" } ] } Support traffic shapingExperimental FeatureThe CNI networking plugin also supports pod ingress and egress traffic shaping. You can use the official bandwidth plugin offered by the CNI plugin team or


Question: What are the benefits of Network Plugins?

Answer: Network PluginsKubernetes (version 1.3 through to the latest 1.34, and likely onwards) lets you use Container Network Interface (CNI) plugins for cluster networking. You must use a CNI plugin that is compatible with your cluster and that suits your needs. Different plugins are available (both open- and closed- source) in the wider Kubernetes ecosystem.A CNI plugin is required to implement the Kubernetes network model.You must use a CNI plugin that is compatible with the v0.4.0 or later releases of the CNI specification. The Kubernetes project recommends using a plugin that is compatible with the v1.0.0 CNI specification (plugins can be compatible with multiple spec versions).InstallationA Container Runtime, in the networking context, is a daemon on a node configured to provide CRI Services for kubelet. In particular, the Container Runtime must be configured to load the CNI plugins required to implement the Kubernetes network model.Note:Prior to Kubernetes 1.24, the CNI plugins could also be managed by the kubelet using the cni-bin-dir and network-plugin command-line parameters. These command-line parameters were removed in Kubernetes 1.24, with management of the CNI no longer in scope for kubelet.See Troubleshooting CNI plugin-related errors if you are facing issues following the removal of dockershim.For specific information about how a Container Runtime manages the CNI plugins, see the documentation for that Container Runtime, for example:containerdCRI-OFor specific information about how to install and manage a CNI plugin, see the documentation for that plugin or networking provider.Network Plugin RequirementsLoopback CNIIn addition to the CNI plugin installed on the nodes for implementing the Kubernetes network model, Kubernetes also requires the container runtimes to provide a loopback interface lo, which is used for each sandbox (pod sandboxes, vm sandboxes, ...). Implementing the loopback interface can be accomplished by re-using the CNI loopback plugin. or by developing your own code to achieve this (see this example from CRI-O).Support hostPortThe CNI networking plugin supports hostPort. You can use the official portmap plugin offered by the CNI plugin team or use your own plugin with portMapping functionality.If you want to enable hostPort support, you must specify portMappings capability in your cni-conf-dir. For example:{ "name": "k8s-pod-network", "cniVersion": "0.4.0", "plugins": [ { "type": "calico", "log_level": "info", "datastore_type": "kubernetes", "nodename": "127.0.0.1", "ipam": { "type": "host-local", "subnet": "usePodCidr" }, "policy": { "type": "k8s" }, "kubernetes": { "kubeconfig": "/etc/cni/net.d/calico-kubeconfig" } }, { "type": "portmap", "capabilities": {"portMappings": true}, "externalSetMarkChain": "KUBE-MARK-MASQ" } ] } Support traffic shapingExperimental FeatureThe CNI networking plugin also supports pod ingress and egress traffic shaping. You can use the official bandwidth plugin offered by the CNI plugin team or


Question: What is Network Plugins?

Answer: K u b e r n e t e s   ( v e r s i o n   1 . 3   t h r o u g h   t o   t h e   l a t e s t   1 . 3 4 ,   a n d   l i k e l y   o n w a r d s )   l e t s   y o u   u s e   C o n t a i n e r   N e t w o r k   I n t e r f a c e   ( C N I )   p l u g i n s   f o r   c l u s t e r   n e t w o r k i n g .   Y o u   m u s t   u s e   a   C N I   p l u g i n   t h a t   i s   c o m p a t i b l e   w i t h   y o u r   c l u s t e r   a n d   t h a t   s u i t s   y o u r   n e e d s .   D i f f e r e n t   p l u g i n s   a r e   a v a i l a b l e   ( b o t h   o p e n -   a n d   c l o s e d -   s o u r c e )   i n   t h e   w i d e r   K u b e r n e t e s   e c o s y s t e m .   A   C N I   p l u g i n   i s   r e q u i r e d   t o   i m p l e m e n t   t h e   K u b e r n e t e s   n e t w o r k   m o d e l .   Y o u   m u s t   u s e   a   C N I   p l u g i n   t h a t   i s   c o m p a t i b l e   w i t h   t h e   v 0 . 4 . 0   o r   l a t e r   r e l e a s e s   o f   t h e   C N I   s p e c i f i c a t i o n .   T h e   K u b e r n e t e s   p r o j e c t   r e c o m m e n d s   u s i n g   a   p l u g i n   t h a t   i s   c o m p a t i b l e   w i t h   t h e   v 1 . 0 . 0   C N I   s p e c i f i c a t i o n   ( p l u g i n s   c a n   b e   c o m p a t i b l e   w i t h   m u l t i p l e   s p e c   v e r s i o n s ) .


Question: What is Installation?

Answer: A   C o n t a i n e r   R u n t i m e ,   i n   t h e   n e t w o r k i n g   c o n t e x t ,   i s   a   d a e m o n   o n   a   n o d e   c o n f i g u r e d   t o   p r o v i d e   C R I   S e r v i c e s   f o r   k u b e l e t .   I n   p a r t i c u l a r ,   t h e   C o n t a i n e r   R u n t i m e   m u s t   b e   c o n f i g u r e d   t o   l o a d   t h e   C N I   p l u g i n s   r e q u i r e d   t o   i m p l e m e n t   t h e   K u b e r n e t e s   n e t w o r k   m o d e l .


Question: What is Note:?

Answer: P r i o r   t o   K u b e r n e t e s   1 . 2 4 ,   t h e   C N I   p l u g i n s   c o u l d   a l s o   b e   m a n a g e d   b y   t h e   k u b e l e t   u s i n g   t h e   c n i - b i n - d i r   a n d   n e t w o r k - p l u g i n   c o m m a n d - l i n e   p a r a m e t e r s .   T h e s e   c o m m a n d - l i n e   p a r a m e t e r s   w e r e   r e m o v e d   i n   K u b e r n e t e s   1 . 2 4 ,   w i t h   m a n a g e m e n t   o f   t h e   C N I   n o   l o n g e r   i n   s c o p e   f o r   k u b e l e t .   S e e   T r o u b l e s h o o t i n g   C N I   p l u g i n - r e l a t e d   e r r o r s   i f   y o u   a r e   f a c i n g   i s s u e s   f o l l o w i n g   t h e   r e m o v a l   o f   d o c k e r s h i m .   F o r   s p e c i f i c   i n f o r m a t i o n   a b o u t   h o w   a   C o n t a i n e r   R u n t i m e   m a n a g e s   t h e   C N I   p l u g i n s ,   s e e   t h e   d o c u m e n t a t i o n   f o r   t h a t   C o n t a i n e r   R u n t i m e ,   f o r   e x a m p l e :   c o n t a i n e r d C R I - O   F o r   s p e c i f i c   i n f o r m a t i o n   a b o u t   h o w   t o   i n s t a l l   a n d   m a n a g e   a   C N I   p l u g i n ,   s e e   t h e   d o c u m e n t a t i o n   f o r   t h a t   p l u g i n   o r   n e t w o r k i n g   p r o v i d e r .


Question: What is Loopback CNI?

Answer: I n   a d d i t i o n   t o   t h e   C N I   p l u g i n   i n s t a l l e d   o n   t h e   n o d e s   f o r   i m p l e m e n t i n g   t h e   K u b e r n e t e s   n e t w o r k   m o d e l ,   K u b e r n e t e s   a l s o   r e q u i r e s   t h e   c o n t a i n e r   r u n t i m e s   t o   p r o v i d e   a   l o o p b a c k   i n t e r f a c e   l o ,   w h i c h   i s   u s e d   f o r   e a c h   s a n d b o x   ( p o d   s a n d b o x e s ,   v m   s a n d b o x e s ,   . . . ) .   I m p l e m e n t i n g   t h e   l o o p b a c k   i n t e r f a c e   c a n   b e   a c c o m p l i s h e d   b y   r e - u s i n g   t h e   C N I   l o o p b a c k   p l u g i n .   o r   b y   d e v e l o p i n g   y o u r   o w n   c o d e   t o   a c h i e v e   t h i s   ( s e e   t h i s   e x a m p l e   f r o m   C R I - O ) .


Question: What is Support hostPort?

Answer: T h e   C N I   n e t w o r k i n g   p l u g i n   s u p p o r t s   h o s t P o r t .   Y o u   c a n   u s e   t h e   o f f i c i a l   p o r t m a p   p l u g i n   o f f e r e d   b y   t h e   C N I   p l u g i n   t e a m   o r   u s e   y o u r   o w n   p l u g i n   w i t h   p o r t M a p p i n g   f u n c t i o n a l i t y .   I f   y o u   w a n t   t o   e n a b l e   h o s t P o r t   s u p p o r t ,   y o u   m u s t   s p e c i f y   p o r t M a p p i n g s   c a p a b i l i t y   i n   y o u r   c n i - c o n f - d i r .   F o r   e x a m p l e :   {   " n a m e " :   " k 8 s - p o d - n e t w o r k " ,   " c n i V e r s i o n " :   " 0 . 4 . 0 " ,   " p l u g i n s " :   [   {   " t y p e " :   " c a l i c o " ,   " l o g _ l e v e l " :   " i n f o " ,   " d a t a s t o r e _ t y p e " :   " k u b e r n e t e s " ,   " n o d e n a m e " :   " 1 2 7 . 0 . 0 . 1 " ,   " i p a m " :   {   " t y p e " :   " h o s t - l o c a l " ,   " s u b n e t " :   " u s e P o d C i d r "   } ,   " p o l i c y " :   {   " t y p e " :   " k 8 s "   } ,   " k u b e r n e t e s " :   {   " k u b e c o n f i g " :   " / e t c / c n i / n e t . d / c a l i c o - k u b e c o n f i g "   }   } ,   {   " t y p e " :   " p o r t m a p " ,   " c a p a b i l i t i e s " :   { " p o r t M a p p i n g s " :   t r u e } ,   " e x t e r n a l S e t M a r k C h a i n " :   " K U B E - M A R K - M A S Q "   }   ]   }


Question: What is Support traffic shaping?

Answer: E x p e r i m e n t a l   F e a t u r e   T h e   C N I   n e t w o r k i n g   p l u g i n   a l s o   s u p p o r t s   p o d   i n g r e s s   a n d   e g r e s s   t r a f f i c   s h a p i n g .   Y o u   c a n   u s e   t h e   o f f i c i a l   b a n d w i d t h   p l u g i n   o f f e r e d   b y   t h e   C N I   p l u g i n   t e a m   o r   u s e   y o u r   o w n   p l u g i n   w i t h   b a n d w i d t h   c o n t r o l   f u n c t i o n a l i t y .   I f   y o u   w a n t   t o   e n a b l e   t r a f f i c   s h a p i n g   s u p p o r t ,   y o u   m u s t   a d d   t h e   b a n d w i d t h   p l u g i n   t o   y o u r   C N I   c o n f i g u r a t i o n   f i l e   ( d e f a u l t   / e t c / c n i / n e t . d )   a n d   e n s u r e   t h a t   t h e   b i n a r y   i s   i n c l u d e d   i n   y o u r   C N I   b i n   d i r   ( d e f a u l t   / o p t / c n i / b i n ) .   {   " n a m e " :   " k 8 s - p o d - n e t w o r k " ,   " c n i V e r s i o n " :   " 0 . 4 . 0 " ,   " p l u g i n s " :   [   {   " t y p e " :   " c a l i c o " ,   " l o g _ l e v e l " :   " i n f o " ,   " d a t a s t o r e _ t y p e " :   " k u b e r n e t e s " ,   " n o d e n a m e " :   " 1 2 7 . 0 . 0 . 1 " ,   " i p a m " :   {   " t y p e " :   " h o s t - l o c a l " ,   " s u b n e t " :   " u s e P o d C i d r "   } ,   " p o l i c y " :   {   " t y p e " :   " k 8 s "   } ,   " k u b e r n e t e s " :   {   " k u b e c o n f i g " :   " / e t c / c n i / n e t . d / c a l i c o - k u b e c o n f i g "   }   } ,   {   " t y p e " :   " b a n d w i d t h " ,   " c a p a b i l i t i e s " :   { " b a n d w i d t h " :   t r u e }   }   ]   }   N o w   y o u   c a n   a d d   t h e   k u b e r n e t e s . i o / i n g r e s s - b a n d w i d t h   a n d   k u b e r n e t e s . i o / e g r e s s - b a n d w i d t h   a n n o t a t i o n s   t o   y o u r   P o d .   F o r   e x a m p l e :   a p i V e r s i o n :   v 1   k i n d :   P o d   m e t a d a t a :


Question: What is What's next?

Answer: L e a r n   m o r e   a b o u t   C l u s t e r   N e t w o r k i n g L e a r n   m o r e   a b o u t   N e t w o r k   P o l i c i e s L e a r n   a b o u t   t h e   T r o u b l e s h o o t i n g   C N I   p l u g i n - r e l a t e d   e r r o r s


Question: What is Define Environment Variable Values Using An Init Container?

Answer: Define Environment Variable Values Using An Init ContainerFEATURE STATE: Kubernetes v1.34 [alpha] (enabled by default: false)This page show how to configure environment variables for containers in a Pod via file.Before you beginYou need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. It is recommended to run this tutorial on a cluster with at least two nodes that are not acting as control plane hosts. If you do not already have a cluster, you can create one by using minikube or you can use one of these Kubernetes playgrounds:iximiuz LabsKillercodaKodeKloudPlay with KubernetesYour Kubernetes server must be version v1.34.To check the version, enter kubectl version.How the design worksIn this exercise, you will create a Pod that sources environment variables from files, projecting these values into the running container.pods/inject/envars-file-container.yaml apiVersion: v1 kind: Pod metadata: name: envfile-test-pod spec: initContainers: - name: setup-envfile image: nginx command: ['sh', '-c', 'echo "DB_ADDRESS=address\nREST_ENDPOINT=endpoint" > /data/config.env'] volumeMounts: - name: config mountPath: /data containers: - name: use-envfile image: nginx command: [ "/bin/sh", "-c", "env" ] env: - name: DB_ADDRESS valueFrom: fileKeyRef: path: config.env volumeName: config key: DB_ADDRESS optional: false restartPolicy: Never volumes: - name: config emptyDir: {}In this manifest, you can see the initContainer mounts an emptyDir volume and writes environment variables to a file within it, and the regular containers reference both the file and the environment variable key through the fileKeyRef field without needing to mount the volume. When optional field is set to false, the specified key in fileKeyRef must exist in the environment variables file.The volume will only be mounted to the container that writes to the file (initContainer), while the consumer container that consumes the environment variable will not have the volume mounted.The env file format adheres to the kubernetes env file standard.During container initialization, the kubelet retrieves environment variables from specified files in the emptyDir volume and exposes them to the container.Note:All container types (initContainers, regular containers, sidecars containers, and ephemeral containers) support environment variable loading from files.While these environment variables can store sensitive information, emptyDir volumes don't provide the same protection mechanisms as dedicated Secret objects. Therefore, exposing confidential environment variables to containers through this feature is not considered a security best practice.Create the Pod:kubectl apply -f https://k8s.io/examples/pods/inject/envars-file-container.yaml Verify that the container in the Pod is running:# If the new Pod isn't yet healthy, rerun this command a few times. kubectl get pods Check container logs for environment variables:kubectl logs dapi-test-pod -c


Question: How does Define Environment Variable Values Using An Init Container work?

Answer: Define Environment Variable Values Using An Init ContainerFEATURE STATE: Kubernetes v1.34 [alpha] (enabled by default: false)This page show how to configure environment variables for containers in a Pod via file.Before you beginYou need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. It is recommended to run this tutorial on a cluster with at least two nodes that are not acting as control plane hosts. If you do not already have a cluster, you can create one by using minikube or you can use one of these Kubernetes playgrounds:iximiuz LabsKillercodaKodeKloudPlay with KubernetesYour Kubernetes server must be version v1.34.To check the version, enter kubectl version.How the design worksIn this exercise, you will create a Pod that sources environment variables from files, projecting these values into the running container.pods/inject/envars-file-container.yaml apiVersion: v1 kind: Pod metadata: name: envfile-test-pod spec: initContainers: - name: setup-envfile image: nginx command: ['sh', '-c', 'echo "DB_ADDRESS=address\nREST_ENDPOINT=endpoint" > /data/config.env'] volumeMounts: - name: config mountPath: /data containers: - name: use-envfile image: nginx command: [ "/bin/sh", "-c", "env" ] env: - name: DB_ADDRESS valueFrom: fileKeyRef: path: config.env volumeName: config key: DB_ADDRESS optional: false restartPolicy: Never volumes: - name: config emptyDir: {}In this manifest, you can see the initContainer mounts an emptyDir volume and writes environment variables to a file within it, and the regular containers reference both the file and the environment variable key through the fileKeyRef field without needing to mount the volume. When optional field is set to false, the specified key in fileKeyRef must exist in the environment variables file.The volume will only be mounted to the container that writes to the file (initContainer), while the consumer container that consumes the environment variable will not have the volume mounted.The env file format adheres to the kubernetes env file standard.During container initialization, the kubelet retrieves environment variables from specified files in the emptyDir volume and exposes them to the container.Note:All container types (initContainers, regular containers, sidecars containers, and ephemeral containers) support environment variable loading from files.While these environment variables can store sensitive information, emptyDir volumes don't provide the same protection mechanisms as dedicated Secret objects. Therefore, exposing confidential environment variables to containers through this feature is not considered a security best practice.Create the Pod:kubectl apply -f https://k8s.io/examples/pods/inject/envars-file-container.yaml Verify that the container in the Pod is running:# If the new Pod isn't yet healthy, rerun this command a few times. kubectl get pods Check container logs for environment variables:kubectl logs dapi-test-pod -c


Question: When would you use Define Environment Variable Values Using An Init Container?

Answer: Define Environment Variable Values Using An Init ContainerFEATURE STATE: Kubernetes v1.34 [alpha] (enabled by default: false)This page show how to configure environment variables for containers in a Pod via file.Before you beginYou need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. It is recommended to run this tutorial on a cluster with at least two nodes that are not acting as control plane hosts. If you do not already have a cluster, you can create one by using minikube or you can use one of these Kubernetes playgrounds:iximiuz LabsKillercodaKodeKloudPlay with KubernetesYour Kubernetes server must be version v1.34.To check the version, enter kubectl version.How the design worksIn this exercise, you will create a Pod that sources environment variables from files, projecting these values into the running container.pods/inject/envars-file-container.yaml apiVersion: v1 kind: Pod metadata: name: envfile-test-pod spec: initContainers: - name: setup-envfile image: nginx command: ['sh', '-c', 'echo "DB_ADDRESS=address\nREST_ENDPOINT=endpoint" > /data/config.env'] volumeMounts: - name: config mountPath: /data containers: - name: use-envfile image: nginx command: [ "/bin/sh", "-c", "env" ] env: - name: DB_ADDRESS valueFrom: fileKeyRef: path: config.env volumeName: config key: DB_ADDRESS optional: false restartPolicy: Never volumes: - name: config emptyDir: {}In this manifest, you can see the initContainer mounts an emptyDir volume and writes environment variables to a file within it, and the regular containers reference both the file and the environment variable key through the fileKeyRef field without needing to mount the volume. When optional field is set to false, the specified key in fileKeyRef must exist in the environment variables file.The volume will only be mounted to the container that writes to the file (initContainer), while the consumer container that consumes the environment variable will not have the volume mounted.The env file format adheres to the kubernetes env file standard.During container initialization, the kubelet retrieves environment variables from specified files in the emptyDir volume and exposes them to the container.Note:All container types (initContainers, regular containers, sidecars containers, and ephemeral containers) support environment variable loading from files.While these environment variables can store sensitive information, emptyDir volumes don't provide the same protection mechanisms as dedicated Secret objects. Therefore, exposing confidential environment variables to containers through this feature is not considered a security best practice.Create the Pod:kubectl apply -f https://k8s.io/examples/pods/inject/envars-file-container.yaml Verify that the container in the Pod is running:# If the new Pod isn't yet healthy, rerun this command a few times. kubectl get pods Check container logs for environment variables:kubectl logs dapi-test-pod -c


Question: What are the benefits of Define Environment Variable Values Using An Init Container?

Answer: Define Environment Variable Values Using An Init ContainerFEATURE STATE: Kubernetes v1.34 [alpha] (enabled by default: false)This page show how to configure environment variables for containers in a Pod via file.Before you beginYou need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. It is recommended to run this tutorial on a cluster with at least two nodes that are not acting as control plane hosts. If you do not already have a cluster, you can create one by using minikube or you can use one of these Kubernetes playgrounds:iximiuz LabsKillercodaKodeKloudPlay with KubernetesYour Kubernetes server must be version v1.34.To check the version, enter kubectl version.How the design worksIn this exercise, you will create a Pod that sources environment variables from files, projecting these values into the running container.pods/inject/envars-file-container.yaml apiVersion: v1 kind: Pod metadata: name: envfile-test-pod spec: initContainers: - name: setup-envfile image: nginx command: ['sh', '-c', 'echo "DB_ADDRESS=address\nREST_ENDPOINT=endpoint" > /data/config.env'] volumeMounts: - name: config mountPath: /data containers: - name: use-envfile image: nginx command: [ "/bin/sh", "-c", "env" ] env: - name: DB_ADDRESS valueFrom: fileKeyRef: path: config.env volumeName: config key: DB_ADDRESS optional: false restartPolicy: Never volumes: - name: config emptyDir: {}In this manifest, you can see the initContainer mounts an emptyDir volume and writes environment variables to a file within it, and the regular containers reference both the file and the environment variable key through the fileKeyRef field without needing to mount the volume. When optional field is set to false, the specified key in fileKeyRef must exist in the environment variables file.The volume will only be mounted to the container that writes to the file (initContainer), while the consumer container that consumes the environment variable will not have the volume mounted.The env file format adheres to the kubernetes env file standard.During container initialization, the kubelet retrieves environment variables from specified files in the emptyDir volume and exposes them to the container.Note:All container types (initContainers, regular containers, sidecars containers, and ephemeral containers) support environment variable loading from files.While these environment variables can store sensitive information, emptyDir volumes don't provide the same protection mechanisms as dedicated Secret objects. Therefore, exposing confidential environment variables to containers through this feature is not considered a security best practice.Create the Pod:kubectl apply -f https://k8s.io/examples/pods/inject/envars-file-container.yaml Verify that the container in the Pod is running:# If the new Pod isn't yet healthy, rerun this command a few times. kubectl get pods Check container logs for environment variables:kubectl logs dapi-test-pod -c


Question: What is Define Environment Variable Values Using An Init Container?

Answer: T h i s   p a g e   s h o w   h o w   t o   c o n f i g u r e   e n v i r o n m e n t   v a r i a b l e s   f o r   c o n t a i n e r s   i n   a   P o d   v i a   f i l e .


Question: What is Before you begin?

Answer: Y o u   n e e d   t o   h a v e   a   K u b e r n e t e s   c l u s t e r ,   a n d   t h e   k u b e c t l   c o m m a n d - l i n e   t o o l   m u s t   b e   c o n f i g u r e d   t o   c o m m u n i c a t e   w i t h   y o u r   c l u s t e r .   I t   i s   r e c o m m e n d e d   t o   r u n   t h i s   t u t o r i a l   o n   a   c l u s t e r   w i t h   a t   l e a s t   t w o   n o d e s   t h a t   a r e   n o t   a c t i n g   a s   c o n t r o l   p l a n e   h o s t s .   I f   y o u   d o   n o t   a l r e a d y   h a v e   a   c l u s t e r ,   y o u   c a n   c r e a t e   o n e   b y   u s i n g   m i n i k u b e   o r   y o u   c a n   u s e   o n e   o f   t h e s e   K u b e r n e t e s   p l a y g r o u n d s :   i x i m i u z   L a b s K i l l e r c o d a K o d e K l o u d P l a y   w i t h   K u b e r n e t e s   Y o u r   K u b e r n e t e s   s e r v e r   m u s t   b e   v e r s i o n   v 1 . 3 4 .   T o   c h e c k   t h e   v e r s i o n ,   e n t e r   k u b e c t l   v e r s i o n .


Question: What is How the design works?

Answer: I n   t h i s   e x e r c i s e ,   y o u   w i l l   c r e a t e   a   P o d   t h a t   s o u r c e s   e n v i r o n m e n t   v a r i a b l e s   f r o m   f i l e s ,   p r o j e c t i n g   t h e s e   v a l u e s   i n t o   t h e   r u n n i n g   c o n t a i n e r .   a p i V e r s i o n :   v 1   k i n d :   P o d   m e t a d a t a :   n a m e :   e n v f i l e - t e s t - p o d   s p e c :   i n i t C o n t a i n e r s :   -   n a m e :   s e t u p - e n v f i l e   i m a g e :   n g i n x   c o m m a n d :   [ ' s h ' ,   ' - c ' ,   ' e c h o   " D B _ A D D R E S S = a d d r e s s \ n R E S T _ E N D P O I N T = e n d p o i n t "   >   / d a t a / c o n f i g . e n v ' ]   v o l u m e M o u n t s :   -   n a m e :   c o n f i g   m o u n t P a t h :   / d a t a   c o n t a i n e r s :   -   n a m e :   u s e - e n v f i l e   i m a g e :   n g i n x   c o m m a n d :   [   " / b i n / s h " ,   " - c " ,   " e n v "   ]   e n v :   -   n a m e :   D B _ A D D R E S S   v a l u e F r o m :   f i l e K e y R e f :   p a t h :   c o n f i g . e n v   v o l u m e N a m e :   c o n f i g   k e y :   D B _ A D D R E S S   o p t i o n a l :   f a l s e   r e s t a r t P o l i c y :   N e v e r   v o l u m e s :   -   n a m e :   c o n f i g   e m p t y D i r :   { }   I n   t h i s   m a n i f e s t ,   y o u   c a n   s e e   t h e   i n i t C o n t a i n e r   m o u n t s   a n   e m p t y D i r   v o l u m e   a n d   w r i t e s   e n v i r o n m e n t   v a r i a b l e s   t o   a   f i l e   w i t h i n   i t ,   a n d   t h e   r e g u l a r   c o n t a i n e r s   r e f e r e n c e   b o t h   t h e   f i l e   a n d   t h e   e n v i r o n m e n t   v a r i a b l e   k e y   t h r o u g h   t h e   f i l e K e y R e f   f i e l d   w i t h o u t   n e e d i n g   t o   m o u n t   t h e   v o l u m e .   W h e n   o p t i o n a l   f i e l d   i s   s e t   t o   f a l s e ,   t h e   s p e c i f i e d   k e y   i n   f i l e K e y R e f   m u s t


Question: What is Note:?

Answer: A l l   c o n t a i n e r   t y p e s   ( i n i t C o n t a i n e r s ,   r e g u l a r   c o n t a i n e r s ,   s i d e c a r s   c o n t a i n e r s ,   a n d   e p h e m e r a l   c o n t a i n e r s )   s u p p o r t   e n v i r o n m e n t   v a r i a b l e   l o a d i n g   f r o m   f i l e s .   W h i l e   t h e s e   e n v i r o n m e n t   v a r i a b l e s   c a n   s t o r e   s e n s i t i v e   i n f o r m a t i o n ,   e m p t y D i r   v o l u m e s   d o n ' t   p r o v i d e   t h e   s a m e   p r o t e c t i o n   m e c h a n i s m s   a s   d e d i c a t e d   S e c r e t   o b j e c t s .   T h e r e f o r e ,   e x p o s i n g   c o n f i d e n t i a l   e n v i r o n m e n t   v a r i a b l e s   t o   c o n t a i n e r s   t h r o u g h   t h i s   f e a t u r e   i s   n o t   c o n s i d e r e d   a   s e c u r i t y   b e s t   p r a c t i c e .   C r e a t e   t h e   P o d :   k u b e c t l   a p p l y   - f   h t t p s : / / k 8 s . i o / e x a m p l e s / p o d s / i n j e c t / e n v a r s - f i l e - c o n t a i n e r . y a m l   V e r i f y   t h a t   t h e   c o n t a i n e r   i n   t h e   P o d   i s   r u n n i n g :   #   I f   t h e   n e w   P o d   i s n ' t   y e t   h e a l t h y ,   r e r u n   t h i s   c o m m a n d   a   f e w   t i m e s .   k u b e c t l   g e t   p o d s   C h e c k   c o n t a i n e r   l o g s   f o r   e n v i r o n m e n t   v a r i a b l e s :   k u b e c t l   l o g s   d a p i - t e s t - p o d   - c   u s e - e n v f i l e   |   g r e p   D B _ A D D R E S S   T h e   o u t p u t   s h o w s   t h e   v a l u e s   o f   s e l e c t e d   e n v i r o n m e n t   v a r i a b l e s :   D B _ A D D R E S S = a d d r e s s


Question: What is Env File Syntax?

Answer: T h e   f o r m a t   o f   K u b e r n e t e s   e n v   f i l e s   o r i g i n a t e s   f r o m   . e n v   f i l e s .   I n   a   s h e l l   e n v i r o n m e n t ,   . e n v   f i l e s   a r e   t y p i c a l l y   l o a d e d   u s i n g   t h e   s o u r c e   . e n v   c o m m a n d .   F o r   K u b e r n e t e s ,   t h e   d e f i n e d   e n v   f i l e   f o r m a t   a d h e r e s   t o   s t r i c t e r   s y n t a x   r u l e s :   B l a n k   L i n e s :   B l a n k   l i n e s   a r e   i g n o r e d . L e a d i n g   S p a c e s :   L e a d i n g   s p a c e s   o n   a l l   l i n e s   a r e   i g n o r e d . V a r i a b l e   D e c l a r a t i o n :   V a r i a b l e s   m u s t   b e   d e c l a r e d   a s   V A R = V A L .   S p a c e s   s u r r o u n d i n g   =   a n d   t r a i l i n g   s p a c e s   a r e   i g n o r e d . V A R = V A L   →   V A L   C o m m e n t s :   L i n e s   b e g i n n i n g   w i t h   #   a r e   t r e a t e d   a s   c o m m e n t s   a n d   i g n o r e d . #   c o m m e n t   V A R = V A L   →   V A L   V A R = V A L   #   n o t   a   c o m m e n t   →   V A L   #   n o t   a   c o m m e n t   L i n e   C o n t i n u a t i o n :   A   b a c k s l a s h   ( \ )   a t   t h e   e n d   o f   a   v a r i a b l e   d e c l a r a t i o n   l i n e   i n d i c a t e s   t h e   v a l u e   c o n t i n u e s   o n   t h e   n e x t   l i n e .   T h e   l i n e s   a r e   j o i n e d   w i t h   a   s i n g l e   s p a c e . V A R = V A L   \   V A L 2   →   V A L   V A L 2   B l a n k   L i n e s :   B l a n k   l i n e s   a r e   i g n o r e d .   L e a d i n g   S p a c e s :   L e a d i n g   s p a c e s   o n   a l l   l i n e s   a r e   i g n o r e d .   V a r i a b l e   D e c l a r a t i o n :   V a r i a b l e s   m u s t   b e   d e c l a r e d   a s   V A R = V A L .   S p a c e s   s u r r o u n d i n g   =   a n d   t r a i l i n g   s p a c e s   a r e   i g n o r e d .   V A R = V A L   →


Question: What is What's next?

Answer: L e a r n   m o r e   a b o u t   e n v i r o n m e n t   v a r i a b l e s . R e a d   D e f i n i n g   E n v i r o n m e n t   V a r i a b l e s   f o r   a   C o n t a i n e r R e a d   E x p o s e   P o d   I n f o r m a t i o n   t o   C o n t a i n e r s   T h r o u g h   E n v i r o n m e n t   V a r i a b l e s


Question: What is Control Topology Management Policies on a node?

Answer: Control Topology Management Policies on a nodeFEATURE STATE: Kubernetes v1.27 [stable]An increasing number of systems leverage a combination of CPUs and hardware accelerators to support latency-critical execution and high-throughput parallel computation. These include workloads in fields such as telecommunications, scientific computing, machine learning, financial services and data analytics. Such hybrid systems comprise a high performance environment.In order to extract the best performance, optimizations related to CPU isolation, memory and device locality are required. However, in Kubernetes, these optimizations are handled by a disjoint set of components.Topology Manager is a kubelet component that aims to coordinate the set of components that are responsible for these optimizations.Before you beginYou need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. It is recommended to run this tutorial on a cluster with at least two nodes that are not acting as control plane hosts. If you do not already have a cluster, you can create one by using minikube or you can use one of these Kubernetes playgrounds:iximiuz LabsKillercodaKodeKloudPlay with KubernetesYour Kubernetes server must be at or later than version v1.18.To check the version, enter kubectl version.How topology manager worksPrior to the introduction of Topology Manager, the CPU and Device Manager in Kubernetes make resource allocation decisions independently of each other. This can result in undesirable allocations on multiple-socketed systems, and performance/latency sensitive applications will suffer due to these undesirable allocations. Undesirable in this case meaning, for example, CPUs and devices being allocated from different NUMA Nodes, thus incurring additional latency.The Topology Manager is a kubelet component, which acts as a source of truth so that other kubelet components can make topology aligned resource allocation choices.The Topology Manager provides an interface for components, called Hint Providers, to send and receive topology information. The Topology Manager has a set of node level policies which are explained below.The Topology Manager receives topology information from the Hint Providers as a bitmask denoting NUMA Nodes available and a preferred allocation indication. The Topology Manager policies perform a set of operations on the hints provided and converge on the hint determined by the policy to give the optimal result. If an undesirable hint is stored, the preferred field for the hint will be set to false. In the current policies preferred is the narrowest preferred mask. The selected hint is stored as part of the Topology Manager. Depending on the policy configured, the pod can be accepted or rejected from the node based on the selected hint. The hint is then stored in the Topology Manager for use by the Hint Providers when making the resource allocation decisions.Windows SupportFEATURE STATE:


Question: How does Control Topology Management Policies on a node work?

Answer: Control Topology Management Policies on a nodeFEATURE STATE: Kubernetes v1.27 [stable]An increasing number of systems leverage a combination of CPUs and hardware accelerators to support latency-critical execution and high-throughput parallel computation. These include workloads in fields such as telecommunications, scientific computing, machine learning, financial services and data analytics. Such hybrid systems comprise a high performance environment.In order to extract the best performance, optimizations related to CPU isolation, memory and device locality are required. However, in Kubernetes, these optimizations are handled by a disjoint set of components.Topology Manager is a kubelet component that aims to coordinate the set of components that are responsible for these optimizations.Before you beginYou need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. It is recommended to run this tutorial on a cluster with at least two nodes that are not acting as control plane hosts. If you do not already have a cluster, you can create one by using minikube or you can use one of these Kubernetes playgrounds:iximiuz LabsKillercodaKodeKloudPlay with KubernetesYour Kubernetes server must be at or later than version v1.18.To check the version, enter kubectl version.How topology manager worksPrior to the introduction of Topology Manager, the CPU and Device Manager in Kubernetes make resource allocation decisions independently of each other. This can result in undesirable allocations on multiple-socketed systems, and performance/latency sensitive applications will suffer due to these undesirable allocations. Undesirable in this case meaning, for example, CPUs and devices being allocated from different NUMA Nodes, thus incurring additional latency.The Topology Manager is a kubelet component, which acts as a source of truth so that other kubelet components can make topology aligned resource allocation choices.The Topology Manager provides an interface for components, called Hint Providers, to send and receive topology information. The Topology Manager has a set of node level policies which are explained below.The Topology Manager receives topology information from the Hint Providers as a bitmask denoting NUMA Nodes available and a preferred allocation indication. The Topology Manager policies perform a set of operations on the hints provided and converge on the hint determined by the policy to give the optimal result. If an undesirable hint is stored, the preferred field for the hint will be set to false. In the current policies preferred is the narrowest preferred mask. The selected hint is stored as part of the Topology Manager. Depending on the policy configured, the pod can be accepted or rejected from the node based on the selected hint. The hint is then stored in the Topology Manager for use by the Hint Providers when making the resource allocation decisions.Windows SupportFEATURE STATE:


Question: When would you use Control Topology Management Policies on a node?

Answer: Control Topology Management Policies on a nodeFEATURE STATE: Kubernetes v1.27 [stable]An increasing number of systems leverage a combination of CPUs and hardware accelerators to support latency-critical execution and high-throughput parallel computation. These include workloads in fields such as telecommunications, scientific computing, machine learning, financial services and data analytics. Such hybrid systems comprise a high performance environment.In order to extract the best performance, optimizations related to CPU isolation, memory and device locality are required. However, in Kubernetes, these optimizations are handled by a disjoint set of components.Topology Manager is a kubelet component that aims to coordinate the set of components that are responsible for these optimizations.Before you beginYou need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. It is recommended to run this tutorial on a cluster with at least two nodes that are not acting as control plane hosts. If you do not already have a cluster, you can create one by using minikube or you can use one of these Kubernetes playgrounds:iximiuz LabsKillercodaKodeKloudPlay with KubernetesYour Kubernetes server must be at or later than version v1.18.To check the version, enter kubectl version.How topology manager worksPrior to the introduction of Topology Manager, the CPU and Device Manager in Kubernetes make resource allocation decisions independently of each other. This can result in undesirable allocations on multiple-socketed systems, and performance/latency sensitive applications will suffer due to these undesirable allocations. Undesirable in this case meaning, for example, CPUs and devices being allocated from different NUMA Nodes, thus incurring additional latency.The Topology Manager is a kubelet component, which acts as a source of truth so that other kubelet components can make topology aligned resource allocation choices.The Topology Manager provides an interface for components, called Hint Providers, to send and receive topology information. The Topology Manager has a set of node level policies which are explained below.The Topology Manager receives topology information from the Hint Providers as a bitmask denoting NUMA Nodes available and a preferred allocation indication. The Topology Manager policies perform a set of operations on the hints provided and converge on the hint determined by the policy to give the optimal result. If an undesirable hint is stored, the preferred field for the hint will be set to false. In the current policies preferred is the narrowest preferred mask. The selected hint is stored as part of the Topology Manager. Depending on the policy configured, the pod can be accepted or rejected from the node based on the selected hint. The hint is then stored in the Topology Manager for use by the Hint Providers when making the resource allocation decisions.Windows SupportFEATURE STATE:


Question: What are the benefits of Control Topology Management Policies on a node?

Answer: Control Topology Management Policies on a nodeFEATURE STATE: Kubernetes v1.27 [stable]An increasing number of systems leverage a combination of CPUs and hardware accelerators to support latency-critical execution and high-throughput parallel computation. These include workloads in fields such as telecommunications, scientific computing, machine learning, financial services and data analytics. Such hybrid systems comprise a high performance environment.In order to extract the best performance, optimizations related to CPU isolation, memory and device locality are required. However, in Kubernetes, these optimizations are handled by a disjoint set of components.Topology Manager is a kubelet component that aims to coordinate the set of components that are responsible for these optimizations.Before you beginYou need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. It is recommended to run this tutorial on a cluster with at least two nodes that are not acting as control plane hosts. If you do not already have a cluster, you can create one by using minikube or you can use one of these Kubernetes playgrounds:iximiuz LabsKillercodaKodeKloudPlay with KubernetesYour Kubernetes server must be at or later than version v1.18.To check the version, enter kubectl version.How topology manager worksPrior to the introduction of Topology Manager, the CPU and Device Manager in Kubernetes make resource allocation decisions independently of each other. This can result in undesirable allocations on multiple-socketed systems, and performance/latency sensitive applications will suffer due to these undesirable allocations. Undesirable in this case meaning, for example, CPUs and devices being allocated from different NUMA Nodes, thus incurring additional latency.The Topology Manager is a kubelet component, which acts as a source of truth so that other kubelet components can make topology aligned resource allocation choices.The Topology Manager provides an interface for components, called Hint Providers, to send and receive topology information. The Topology Manager has a set of node level policies which are explained below.The Topology Manager receives topology information from the Hint Providers as a bitmask denoting NUMA Nodes available and a preferred allocation indication. The Topology Manager policies perform a set of operations on the hints provided and converge on the hint determined by the policy to give the optimal result. If an undesirable hint is stored, the preferred field for the hint will be set to false. In the current policies preferred is the narrowest preferred mask. The selected hint is stored as part of the Topology Manager. Depending on the policy configured, the pod can be accepted or rejected from the node based on the selected hint. The hint is then stored in the Topology Manager for use by the Hint Providers when making the resource allocation decisions.Windows SupportFEATURE STATE:


Question: What is Control Topology Management Policies on a node?

Answer: A n   i n c r e a s i n g   n u m b e r   o f   s y s t e m s   l e v e r a g e   a   c o m b i n a t i o n   o f   C P U s   a n d   h a r d w a r e   a c c e l e r a t o r s   t o   s u p p o r t   l a t e n c y - c r i t i c a l   e x e c u t i o n   a n d   h i g h - t h r o u g h p u t   p a r a l l e l   c o m p u t a t i o n .   T h e s e   i n c l u d e   w o r k l o a d s   i n   f i e l d s   s u c h   a s   t e l e c o m m u n i c a t i o n s ,   s c i e n t i f i c   c o m p u t i n g ,   m a c h i n e   l e a r n i n g ,   f i n a n c i a l   s e r v i c e s   a n d   d a t a   a n a l y t i c s .   S u c h   h y b r i d   s y s t e m s   c o m p r i s e   a   h i g h   p e r f o r m a n c e   e n v i r o n m e n t .   I n   o r d e r   t o   e x t r a c t   t h e   b e s t   p e r f o r m a n c e ,   o p t i m i z a t i o n s   r e l a t e d   t o   C P U   i s o l a t i o n ,   m e m o r y   a n d   d e v i c e   l o c a l i t y   a r e   r e q u i r e d .   H o w e v e r ,   i n   K u b e r n e t e s ,   t h e s e   o p t i m i z a t i o n s   a r e   h a n d l e d   b y   a   d i s j o i n t   s e t   o f   c o m p o n e n t s .   T o p o l o g y   M a n a g e r   i s   a   k u b e l e t   c o m p o n e n t   t h a t   a i m s   t o   c o o r d i n a t e   t h e   s e t   o f   c o m p o n e n t s   t h a t   a r e   r e s p o n s i b l e   f o r   t h e s e   o p t i m i z a t i o n s .


Question: What is Before you begin?

Answer: Y o u   n e e d   t o   h a v e   a   K u b e r n e t e s   c l u s t e r ,   a n d   t h e   k u b e c t l   c o m m a n d - l i n e   t o o l   m u s t   b e   c o n f i g u r e d   t o   c o m m u n i c a t e   w i t h   y o u r   c l u s t e r .   I t   i s   r e c o m m e n d e d   t o   r u n   t h i s   t u t o r i a l   o n   a   c l u s t e r   w i t h   a t   l e a s t   t w o   n o d e s   t h a t   a r e   n o t   a c t i n g   a s   c o n t r o l   p l a n e   h o s t s .   I f   y o u   d o   n o t   a l r e a d y   h a v e   a   c l u s t e r ,   y o u   c a n   c r e a t e   o n e   b y   u s i n g   m i n i k u b e   o r   y o u   c a n   u s e   o n e   o f   t h e s e   K u b e r n e t e s   p l a y g r o u n d s : i x i m i u z   L a b s K i l l e r c o d a K o d e K l o u d P l a y   w i t h   K u b e r n e t e s Y o u r   K u b e r n e t e s   s e r v e r   m u s t   b e   a t   o r   l a t e r   t h a n   v e r s i o n   v 1 . 1 8 . T o   c h e c k   t h e   v e r s i o n ,   e n t e r   k u b e c t l   v e r s i o n .   Y o u   n e e d   t o   h a v e   a   K u b e r n e t e s   c l u s t e r ,   a n d   t h e   k u b e c t l   c o m m a n d - l i n e   t o o l   m u s t   b e   c o n f i g u r e d   t o   c o m m u n i c a t e   w i t h   y o u r   c l u s t e r .   I t   i s   r e c o m m e n d e d   t o   r u n   t h i s   t u t o r i a l   o n   a   c l u s t e r   w i t h   a t   l e a s t   t w o   n o d e s   t h a t   a r e   n o t   a c t i n g   a s   c o n t r o l   p l a n e   h o s t s .   I f   y o u   d o   n o t   a l r e a d y   h a v e   a   c l u s t e r ,   y o u   c a n   c r e a t e   o n e   b y   u s i n g   m i n i k u b e   o r   y o u   c a n   u s e   o n e   o f   t h e s e   K u b e r n e t e s   p l a y g r o u n d s :   i x i m i u z   L a b s K i l l e r c o d a K o d e K l o u d P l a y   w i t h   K u b e r n e t e s   T o   c h e c k   t h e   v e r s i o n ,   e n t e r   k u b e c t l   v e r s i o n .


Question: What is How topology manager works?

Answer: P r i o r   t o   t h e   i n t r o d u c t i o n   o f   T o p o l o g y   M a n a g e r ,   t h e   C P U   a n d   D e v i c e   M a n a g e r   i n   K u b e r n e t e s   m a k e   r e s o u r c e   a l l o c a t i o n   d e c i s i o n s   i n d e p e n d e n t l y   o f   e a c h   o t h e r .   T h i s   c a n   r e s u l t   i n   u n d e s i r a b l e   a l l o c a t i o n s   o n   m u l t i p l e - s o c k e t e d   s y s t e m s ,   a n d   p e r f o r m a n c e / l a t e n c y   s e n s i t i v e   a p p l i c a t i o n s   w i l l   s u f f e r   d u e   t o   t h e s e   u n d e s i r a b l e   a l l o c a t i o n s .   U n d e s i r a b l e   i n   t h i s   c a s e   m e a n i n g ,   f o r   e x a m p l e ,   C P U s   a n d   d e v i c e s   b e i n g   a l l o c a t e d   f r o m   d i f f e r e n t   N U M A   N o d e s ,   t h u s   i n c u r r i n g   a d d i t i o n a l   l a t e n c y .   T h e   T o p o l o g y   M a n a g e r   i s   a   k u b e l e t   c o m p o n e n t ,   w h i c h   a c t s   a s   a   s o u r c e   o f   t r u t h   s o   t h a t   o t h e r   k u b e l e t   c o m p o n e n t s   c a n   m a k e   t o p o l o g y   a l i g n e d   r e s o u r c e   a l l o c a t i o n   c h o i c e s .   T h e   T o p o l o g y   M a n a g e r   p r o v i d e s   a n   i n t e r f a c e   f o r   c o m p o n e n t s ,   c a l l e d   H i n t   P r o v i d e r s ,   t o   s e n d   a n d   r e c e i v e   t o p o l o g y   i n f o r m a t i o n .   T h e   T o p o l o g y   M a n a g e r   h a s   a   s e t   o f   n o d e   l e v e l   p o l i c i e s   w h i c h   a r e   e x p l a i n e d   b e l o w .   T h e   T o p o l o g y   M a n a g e r   r e c e i v e s   t o p o l o g y   i n f o r m a t i o n   f r o m   t h e   H i n t   P r o v i d e r s   a s   a   b i t m a s k   d e n o t i n g   N U M A   N o d e s   a v a i l a b l e   a n d   a   p r e f e r r e d   a l l o c a t i o n   i n d i c a t i o n .   T h e   T o p o l


Question: What is Windows Support?

Answer: T h e   T o p o l o g y   M a n a g e r   s u p p o r t   c a n   b e   e n a b l e d   o n   W i n d o w s   b y   u s i n g   t h e   W i n d o w s C P U A n d M e m o r y A f f i n i t y   f e a t u r e   g a t e   a n d   i t   r e q u i r e s   s u p p o r t   i n   t h e   c o n t a i n e r   r u n t i m e .


Question: What is Topology manager scopes and policies?

Answer: T h e   T o p o l o g y   M a n a g e r   c u r r e n t l y :   a l i g n s   P o d s   o f   a l l   Q o S   c l a s s e s . a l i g n s   t h e   r e q u e s t e d   r e s o u r c e s   t h a t   H i n t   P r o v i d e r   p r o v i d e s   t o p o l o g y   h i n t s   f o r .   I f   t h e s e   c o n d i t i o n s   a r e   m e t ,   t h e   T o p o l o g y   M a n a g e r   w i l l   a l i g n   t h e   r e q u e s t e d   r e s o u r c e s .   I n   o r d e r   t o   c u s t o m i z e   h o w   t h i s   a l i g n m e n t   i s   c a r r i e d   o u t ,   t h e   T o p o l o g y   M a n a g e r   p r o v i d e s   t w o   d i s t i n c t   o p t i o n s :   s c o p e   a n d   p o l i c y .   T h e   s c o p e   d e f i n e s   t h e   g r a n u l a r i t y   a t   w h i c h   y o u   w o u l d   l i k e   r e s o u r c e   a l i g n m e n t   t o   b e   p e r f o r m e d ,   f o r   e x a m p l e ,   a t   t h e   p o d   o r   c o n t a i n e r   l e v e l .   A n d   t h e   p o l i c y   d e f i n e s   t h e   a c t u a l   p o l i c y   u s e d   t o   c a r r y   o u t   t h e   a l i g n m e n t ,   f o r   e x a m p l e ,   b e s t - e f f o r t ,   r e s t r i c t e d ,   a n d   s i n g l e - n u m a - n o d e .   D e t a i l s   o n   t h e   v a r i o u s   s c o p e s   a n d   p o l i c i e s   a v a i l a b l e   t o d a y   c a n   b e   f o u n d   b e l o w .


Question: What is Topology manager scopes?

Answer: T h e   T o p o l o g y   M a n a g e r   c a n   d e a l   w i t h   t h e   a l i g n m e n t   o f   r e s o u r c e s   i n   a   c o u p l e   o f   d i s t i n c t   s c o p e s :   c o n t a i n e r   ( d e f a u l t ) p o d   E i t h e r   o p t i o n   c a n   b e   s e l e c t e d   a t   a   t i m e   o f   t h e   k u b e l e t   s t a r t u p ,   b y   s e t t i n g   t h e   t o p o l o g y M a n a g e r S c o p e   i n   t h e   k u b e l e t   c o n f i g u r a t i o n   f i l e .


Question: What is container scope?

Answer: T h e   c o n t a i n e r   s c o p e   i s   u s e d   b y   d e f a u l t .   Y o u   c a n   a l s o   e x p l i c i t l y   s e t   t h e   t o p o l o g y M a n a g e r S c o p e   t o   c o n t a i n e r   i n   t h e   k u b e l e t   c o n f i g u r a t i o n   f i l e .   W i t h i n   t h i s   s c o p e ,   t h e   T o p o l o g y   M a n a g e r   p e r f o r m s   a   n u m b e r   o f   s e q u e n t i a l   r e s o u r c e   a l i g n m e n t s ,   i . e . ,   f o r   e a c h   c o n t a i n e r   ( i n   a   p o d )   a   s e p a r a t e   a l i g n m e n t   i s   c o m p u t e d .   I n   o t h e r   w o r d s ,   t h e r e   i s   n o   n o t i o n   o f   g r o u p i n g   t h e   c o n t a i n e r s   t o   a   s p e c i f i c   s e t   o f   N U M A   n o d e s ,   f o r   t h i s   p a r t i c u l a r   s c o p e .   I n   e f f e c t ,   t h e   T o p o l o g y   M a n a g e r   p e r f o r m s   a n   a r b i t r a r y   a l i g n m e n t   o f   i n d i v i d u a l   c o n t a i n e r s   t o   N U M A   n o d e s .   T h e   n o t i o n   o f   g r o u p i n g   t h e   c o n t a i n e r s   w a s   e n d o r s e d   a n d   i m p l e m e n t e d   o n   p u r p o s e   i n   t h e   f o l l o w i n g   s c o p e ,   f o r   e x a m p l e   t h e   p o d   s c o p e .


Question: What is pod scope?

Answer: T o   s e l e c t   t h e   p o d   s c o p e ,   s e t   t o p o l o g y M a n a g e r S c o p e   i n   t h e   k u b e l e t   c o n f i g u r a t i o n   f i l e   t o   p o d .   T h i s   s c o p e   a l l o w s   f o r   g r o u p i n g   a l l   c o n t a i n e r s   i n   a   p o d   t o   a   c o m m o n   s e t   o f   N U M A   n o d e s .   T h a t   i s ,   t h e   T o p o l o g y   M a n a g e r   t r e a t s   a   p o d   a s   a   w h o l e   a n d   a t t e m p t s   t o   a l l o c a t e   t h e   e n t i r e   p o d   ( a l l   c o n t a i n e r s )   t o   e i t h e r   a   s i n g l e   N U M A   n o d e   o r   a   c o m m o n   s e t   o f   N U M A   n o d e s .   T h e   f o l l o w i n g   e x a m p l e s   i l l u s t r a t e   t h e   a l i g n m e n t s   p r o d u c e d   b y   t h e   T o p o l o g y   M a n a g e r   o n   d i f f e r e n t   o c c a s i o n s :   a l l   c o n t a i n e r s   c a n   b e   a n d   a r e   a l l o c a t e d   t o   a   s i n g l e   N U M A   n o d e ; a l l   c o n t a i n e r s   c a n   b e   a n d   a r e   a l l o c a t e d   t o   a   s h a r e d   s e t   o f   N U M A   n o d e s .   T h e   t o t a l   a m o u n t   o f   p a r t i c u l a r   r e s o u r c e   d e m a n d e d   f o r   t h e   e n t i r e   p o d   i s   c a l c u l a t e d   a c c o r d i n g   t o   e f f e c t i v e   r e q u e s t s / l i m i t s   f o r m u l a ,   a n d   t h u s ,   t h i s   t o t a l   v a l u e   i s   e q u a l   t o   t h e   m a x i m u m   o f :   t h e   s u m   o f   a l l   a p p   c o n t a i n e r   r e q u e s t s , t h e   m a x i m u m   o f   i n i t   c o n t a i n e r   r e q u e s t s ,   f o r   a   r e s o u r c e .   U s i n g   t h e   p o d   s c o p e   i n   t a n d e m   w i t h   s i n g l e - n u m a - n o d e   T o p o l o g y   M a n a g e r   p o l i c y   i s   s p e c i f i c a l l y   v a l u a b l e   f o r   w o r k l o a d s   t h a t   a r e   l a t e n c y   s


Question: What is Topology manager policies?

Answer: T h e   T o p o l o g y   M a n a g e r   s u p p o r t s   f o u r   a l l o c a t i o n   p o l i c i e s .   Y o u   c a n   s e t   a   p o l i c y   v i a   a   k u b e l e t   f l a g ,   - - t o p o l o g y - m a n a g e r - p o l i c y .   T h e r e   a r e   f o u r   s u p p o r t e d   p o l i c i e s :   n o n e   ( d e f a u l t ) b e s t - e f f o r t r e s t r i c t e d s i n g l e - n u m a - n o d e


Question: What is none policy?

Answer: T h i s   i s   t h e   d e f a u l t   p o l i c y   a n d   d o e s   n o t   p e r f o r m   a n y   t o p o l o g y   a l i g n m e n t .


Question: What is best-effort policy?

Answer: F o r   e a c h   c o n t a i n e r   i n   a   P o d ,   t h e   k u b e l e t ,   w i t h   b e s t - e f f o r t   t o p o l o g y   m a n a g e m e n t   p o l i c y ,   c a l l s   e a c h   H i n t   P r o v i d e r   t o   d i s c o v e r   t h e i r   r e s o u r c e   a v a i l a b i l i t y .   U s i n g   t h i s   i n f o r m a t i o n ,   t h e   T o p o l o g y   M a n a g e r   s t o r e s   t h e   p r e f e r r e d   N U M A   N o d e   a f f i n i t y   f o r   t h a t   c o n t a i n e r .   I f   t h e   a f f i n i t y   i s   n o t   p r e f e r r e d ,   t h e   T o p o l o g y   M a n a g e r   w i l l   s t o r e   t h i s   a n d   a d m i t   t h e   p o d   t o   t h e   n o d e   a n y w a y .   T h e   H i n t   P r o v i d e r s   c a n   t h e n   u s e   t h i s   i n f o r m a t i o n   w h e n   m a k i n g   t h e   r e s o u r c e   a l l o c a t i o n   d e c i s i o n .


Question: What is restricted policy?

Answer: F o r   e a c h   c o n t a i n e r   i n   a   P o d ,   t h e   k u b e l e t ,   w i t h   r e s t r i c t e d   t o p o l o g y   m a n a g e m e n t   p o l i c y ,   c a l l s   e a c h   H i n t   P r o v i d e r   t o   d i s c o v e r   t h e i r   r e s o u r c e   a v a i l a b i l i t y .   U s i n g   t h i s   i n f o r m a t i o n ,   t h e   T o p o l o g y   M a n a g e r   s t o r e s   t h e   p r e f e r r e d   N U M A   N o d e   a f f i n i t y   f o r   t h a t   c o n t a i n e r .   I f   t h e   a f f i n i t y   i s   n o t   p r e f e r r e d ,   t h e   T o p o l o g y   M a n a g e r   w i l l   r e j e c t   t h i s   p o d   f r o m   t h e   n o d e .   T h i s   w i l l   r e s u l t   i n   a   p o d   e n t e r i n g   a   T e r m i n a t e d   s t a t e   w i t h   a   p o d   a d m i s s i o n   f a i l u r e .   O n c e   t h e   p o d   i s   i n   a   T e r m i n a t e d   s t a t e ,   t h e   K u b e r n e t e s   s c h e d u l e r   w i l l   n o t   a t t e m p t   t o   r e s c h e d u l e   t h e   p o d .   I t   i s   r e c o m m e n d e d   t o   u s e   a   R e p l i c a S e t   o r   D e p l o y m e n t   t o   t r i g g e r   a   r e d e p l o y m e n t   o f   t h e   p o d .   A n   e x t e r n a l   c o n t r o l   l o o p   c o u l d   b e   a l s o   i m p l e m e n t e d   t o   t r i g g e r   a   r e d e p l o y m e n t   o f   p o d s   t h a t   h a v e   t h e   T o p o l o g y   A f f i n i t y   e r r o r .   I f   t h e   p o d   i s   a d m i t t e d ,   t h e   H i n t   P r o v i d e r s   c a n   t h e n   u s e   t h i s   i n f o r m a t i o n   w h e n   m a k i n g   t h e   r e s o u r c e   a l l o c a t i o n   d e c i s i o n .


Question: What is single-numa-node policy?

Answer: F o r   e a c h   c o n t a i n e r   i n   a   P o d ,   t h e   k u b e l e t ,   w i t h   s i n g l e - n u m a - n o d e   t o p o l o g y   m a n a g e m e n t   p o l i c y ,   c a l l s   e a c h   H i n t   P r o v i d e r   t o   d i s c o v e r   t h e i r   r e s o u r c e   a v a i l a b i l i t y .   U s i n g   t h i s   i n f o r m a t i o n ,   t h e   T o p o l o g y   M a n a g e r   d e t e r m i n e s   i f   a   s i n g l e   N U M A   N o d e   a f f i n i t y   i s   p o s s i b l e .   I f   i t   i s ,   T o p o l o g y   M a n a g e r   w i l l   s t o r e   t h i s   a n d   t h e   H i n t   P r o v i d e r s   c a n   t h e n   u s e   t h i s   i n f o r m a t i o n   w h e n   m a k i n g   t h e   r e s o u r c e   a l l o c a t i o n   d e c i s i o n .   I f ,   h o w e v e r ,   t h i s   i s   n o t   p o s s i b l e   t h e n   t h e   T o p o l o g y   M a n a g e r   w i l l   r e j e c t   t h e   p o d   f r o m   t h e   n o d e .   T h i s   w i l l   r e s u l t   i n   a   p o d   i n   a   T e r m i n a t e d   s t a t e   w i t h   a   p o d   a d m i s s i o n   f a i l u r e .   O n c e   t h e   p o d   i s   i n   a   T e r m i n a t e d   s t a t e ,   t h e   K u b e r n e t e s   s c h e d u l e r   w i l l   n o t   a t t e m p t   t o   r e s c h e d u l e   t h e   p o d .   I t   i s   r e c o m m e n d e d   t o   u s e   a   D e p l o y m e n t   w i t h   r e p l i c a s   t o   t r i g g e r   a   r e d e p l o y m e n t   o f   t h e   P o d .   A n   e x t e r n a l   c o n t r o l   l o o p   c o u l d   b e   a l s o   i m p l e m e n t e d   t o   t r i g g e r   a   r e d e p l o y m e n t   o f   p o d s   t h a t   h a v e   t h e   T o p o l o g y   A f f i n i t y   e r r o r .


Question: What is Topology manager policy options?

Answer: S u p p o r t   f o r   t h e   T o p o l o g y   M a n a g e r   p o l i c y   o p t i o n s   r e q u i r e s   T o p o l o g y M a n a g e r P o l i c y O p t i o n s   f e a t u r e   g a t e   t o   b e   e n a b l e d   ( i t   i s   e n a b l e d   b y   d e f a u l t ) .   Y o u   c a n   t o g g l e   g r o u p s   o f   o p t i o n s   o n   a n d   o f f   b a s e d   u p o n   t h e i r   m a t u r i t y   l e v e l   u s i n g   t h e   f o l l o w i n g   f e a t u r e   g a t e s :   T o p o l o g y M a n a g e r P o l i c y B e t a O p t i o n s   d e f a u l t   e n a b l e d .   E n a b l e   t o   s h o w   b e t a - l e v e l   o p t i o n s . T o p o l o g y M a n a g e r P o l i c y A l p h a O p t i o n s   d e f a u l t   d i s a b l e d .   E n a b l e   t o   s h o w   a l p h a - l e v e l   o p t i o n s .   Y o u   w i l l   s t i l l   h a v e   t o   e n a b l e   e a c h   o p t i o n   u s i n g   t h e   T o p o l o g y M a n a g e r P o l i c y O p t i o n s   k u b e l e t   o p t i o n .


Question: What is prefer-closest-numa-nodes?

Answer: T h e   p r e f e r - c l o s e s t - n u m a - n o d e s   o p t i o n   i s   G A   s i n c e   K u b e r n e t e s   1 . 3 2 .   I n   K u b e r n e t e s   1 . 3 4   t h i s   p o l i c y   o p t i o n   i s   v i s i b l e   b y   d e f a u l t   p r o v i d e d   t h a t   t h e   T o p o l o g y M a n a g e r P o l i c y O p t i o n s   f e a t u r e   g a t e   i s   e n a b l e d .   T h e   T o p o l o g y   M a n a g e r   i s   n o t   a w a r e   b y   d e f a u l t   o f   N U M A   d i s t a n c e s ,   a n d   d o e s   n o t   t a k e   t h e m   i n t o   a c c o u n t   w h e n   m a k i n g   P o d   a d m i s s i o n   d e c i s i o n s .   T h i s   l i m i t a t i o n   s u r f a c e s   i n   m u l t i - s o c k e t ,   a s   w e l l   a s   s i n g l e - s o c k e t   m u l t i   N U M A   s y s t e m s ,   a n d   c a n   c a u s e   s i g n i f i c a n t   p e r f o r m a n c e   d e g r a d a t i o n   i n   l a t e n c y - c r i t i c a l   e x e c u t i o n   a n d   h i g h - t h r o u g h p u t   a p p l i c a t i o n s   i f   t h e   T o p o l o g y   M a n a g e r   d e c i d e s   t o   a l i g n   r e s o u r c e s   o n   n o n - a d j a c e n t   N U M A   n o d e s .   I f   y o u   s p e c i f y   t h e   p r e f e r - c l o s e s t - n u m a - n o d e s   p o l i c y   o p t i o n ,   t h e   b e s t - e f f o r t   a n d   r e s t r i c t e d   p o l i c i e s   f a v o r   s e t s   o f   N U M A   n o d e s   w i t h   s h o r t e r   d i s t a n c e   b e t w e e n   t h e m   w h e n   m a k i n g   a d m i s s i o n   d e c i s i o n s .   Y o u   c a n   e n a b l e   t h i s   o p t i o n   b y   a d d i n g   p r e f e r - c l o s e s t - n u m a - n o d e s = t r u e   t o   t h e   T o p o l o g y   M a n a g e r   p o l i c y   o p t i o n s .   B y   d e f a u l t   ( w i t h o u t   t h i s   o p t i o n ) ,   t h e   T o p o l o g y   M a n a g e r   a l i g n s   r e s o u r c e s   o n   e i t h e r   a   s


Question: What is max-allowable-numa-nodes (beta)?

Answer: T h e   m a x - a l l o w a b l e - n u m a - n o d e s   o p t i o n   i s   b e t a   s i n c e   K u b e r n e t e s   1 . 3 1 .   I n   K u b e r n e t e s   1 . 3 4 ,   t h i s   p o l i c y   o p t i o n   i s   v i s i b l e   b y   d e f a u l t   p r o v i d e d   t h a t   t h e   T o p o l o g y M a n a g e r P o l i c y O p t i o n s   a n d   T o p o l o g y M a n a g e r P o l i c y B e t a O p t i o n s   f e a t u r e   g a t e s   a r e   e n a b l e d .   T h e   t i m e   t o   a d m i t   a   p o d   i s   t i e d   t o   t h e   n u m b e r   o f   N U M A   n o d e s   o n   t h e   p h y s i c a l   m a c h i n e .   B y   d e f a u l t ,   K u b e r n e t e s   d o e s   n o t   r u n   a   k u b e l e t   w i t h   t h e   T o p o l o g y   M a n a g e r   e n a b l e d ,   o n   a n y   ( K u b e r n e t e s )   n o d e   w h e r e   m o r e   t h a n   8   N U M A   n o d e s   a r e   d e t e c t e d .


Question: What is Note:?

Answer: Y o u   c a n   e n a b l e   t h i s   o p t i o n   b y   a d d i n g   m a x - a l l o w a b l e - n u m a - n o d e s = t r u e   t o   t h e   T o p o l o g y   M a n a g e r   p o l i c y   o p t i o n s .   S e t t i n g   a   v a l u e   o f   m a x - a l l o w a b l e - n u m a - n o d e s   d o e s   n o t   ( i n   a n d   o f   i t s e l f )   a f f e c t   t h e   l a t e n c y   o f   p o d   a d m i s s i o n ,   b u t   b i n d i n g   a   P o d   t o   a   ( K u b e r n e t e s )   n o d e   w i t h   m a n y   N U M A   d o e s   h a v e   a n   i m p a c t .   F u t u r e ,   p o t e n t i a l   i m p r o v e m e n t s   t o   K u b e r n e t e s   m a y   i m p r o v e   P o d   a d m i s s i o n   p e r f o r m a n c e   a n d   t h e   h i g h   l a t e n c y   t h a t   h a p p e n s   a s   t h e   n u m b e r   o f   N U M A   n o d e s   i n c r e a s e s .


Question: What is Pod interactions with topology manager policies?

Answer: C o n s i d e r   t h e   c o n t a i n e r s   i n   t h e   f o l l o w i n g   P o d   m a n i f e s t :   s p e c :   c o n t a i n e r s :   -   n a m e :   n g i n x   i m a g e :   n g i n x   T h i s   p o d   r u n s   i n   t h e   B e s t E f f o r t   Q o S   c l a s s   b e c a u s e   n o   r e s o u r c e   r e q u e s t s   o r   l i m i t s   a r e   s p e c i f i e d .   s p e c :   c o n t a i n e r s :   -   n a m e :   n g i n x   i m a g e :   n g i n x   r e s o u r c e s :   l i m i t s :   m e m o r y :   " 2 0 0 M i "   r e q u e s t s :   m e m o r y :   " 1 0 0 M i "   T h i s   p o d   r u n s   i n   t h e   B u r s t a b l e   Q o S   c l a s s   b e c a u s e   r e q u e s t s   a r e   l e s s   t h a n   l i m i t s .   I f   t h e   s e l e c t e d   p o l i c y   i s   a n y t h i n g   o t h e r   t h a n   n o n e ,   t h e   T o p o l o g y   M a n a g e r   w o u l d   c o n s i d e r   t h e s e   P o d   s p e c i f i c a t i o n s .   T h e   T o p o l o g y   M a n a g e r   w o u l d   c o n s u l t   t h e   H i n t   P r o v i d e r s   t o   g e t   t o p o l o g y   h i n t s .   I n   t h e   c a s e   o f   t h e   s t a t i c ,   t h e   C P U   M a n a g e r   p o l i c y   w o u l d   r e t u r n   d e f a u l t   t o p o l o g y   h i n t ,   b e c a u s e   t h e s e   P o d s   d o   n o t   e x p l i c i t l y   r e q u e s t   C P U   r e s o u r c e s .   s p e c :   c o n t a i n e r s :   -   n a m e :   n g i n x   i m a g e :   n g i n x   r e s o u r c e s :   l i m i t s :   m e m o r y :   " 2 0 0 M i "   c p u :   " 2 "   e x a m p l e . c o m / d e v i c e :   " 1 "   r e q u e s t s :   m e m o r y :   " 2 0 0 M i "   c p u :   " 2 "   e x a m p l e . c o m / d e v i c e :   " 1 "   T h i s   p o d   w i t h   i n t e g e r   C P U   r e q u e s t   r u n s   i n   t h e   G u a r a n t e e d   Q o S   c l a s s   b e c a u s e   r e q u e s t s   a r e   e q u a l   t o   l i m i t s .   s p e c


Question: What is Known limitations?

Answer: T h e   m a x i m u m   n u m b e r   o f   N U M A   n o d e s   t h a t   T o p o l o g y   M a n a g e r   a l l o w s   i s   8 .   W i t h   m o r e   t h a n   8   N U M A   n o d e s ,   t h e r e   w i l l   b e   a   s t a t e   e x p l o s i o n   w h e n   t r y i n g   t o   e n u m e r a t e   t h e   p o s s i b l e   N U M A   a f f i n i t i e s   a n d   g e n e r a t i n g   t h e i r   h i n t s .   S e e   m a x - a l l o w a b l e - n u m a - n o d e s   ( b e t a )   f o r   m o r e   o p t i o n s . T h e   s c h e d u l e r   i s   n o t   t o p o l o g y - a w a r e ,   s o   i t   i s   p o s s i b l e   t o   b e   s c h e d u l e d   o n   a   n o d e   a n d   t h e n   f a i l   o n   t h e   n o d e   d u e   t o   t h e   T o p o l o g y   M a n a g e r .   T h e   m a x i m u m   n u m b e r   o f   N U M A   n o d e s   t h a t   T o p o l o g y   M a n a g e r   a l l o w s   i s   8 .   W i t h   m o r e   t h a n   8   N U M A   n o d e s ,   t h e r e   w i l l   b e   a   s t a t e   e x p l o s i o n   w h e n   t r y i n g   t o   e n u m e r a t e   t h e   p o s s i b l e   N U M A   a f f i n i t i e s   a n d   g e n e r a t i n g   t h e i r   h i n t s .   S e e   m a x - a l l o w a b l e - n u m a - n o d e s   ( b e t a )   f o r   m o r e   o p t i o n s .   T h e   s c h e d u l e r   i s   n o t   t o p o l o g y - a w a r e ,   s o   i t   i s   p o s s i b l e   t o   b e   s c h e d u l e d   o n   a   n o d e   a n d   t h e n   f a i l   o n   t h e   n o d e   d u e   t o   t h e   T o p o l o g y   M a n a g e r .