Kubernetes cluster pre-installation configuration¶
Kubernetes cluster pre-installation configuration involves preparing the host operating system and network environment to ensure nodes can successfully form a cluster^[400-devops-06-kubernetes-k8s-learning-00install-01-kubernetes.md].
Hostname Configuration¶
Each node within the cluster must possess a unique hostname^[400-devops-06-kubernetes-k8s-learning-00install-01-kubernetes.md]. This can be set using the hostnamectl command^[400-devops-06-kubernetes-k8s-learning-00install-01-kubernetes.md]. Additionally, it is common practice to map hostnames to IP addresses in /etc/hosts to facilitate resolution between nodes^[400-devops-06-kubernetes-k8s-learning-00install-01-kubernetes.md].
SELinux Configuration¶
For Kubernetes to function correctly, SELinux should be set to permissive mode or disabled^[400-devops-06-kubernetes-k8s-learning-00install-01-kubernetes.md]. This allows the container runtime to interact with the system without strict policy enforcement blocking operations^[400-devops-06-kubernetes-k8s-learning-00install-01-kubernetes.md].
Swap Management¶
The kubelet service requires swap memory to be disabled^[400-devops-06-kubernetes-k8s-learning-00install-01-kubernetes.md].
To disable swap temporarily, the command swapoff -a is used^[400-devops-06-kubernetes-k8s-learning-00install-01-kubernetes.md].
To ensure this change persists across reboots, the swap entry in the /etc/fstab file must be commented out^[400-devops-06-kubernetes-k8s-learning-00install-01-kubernetes.md].
Network Bridge Settings¶
Kubernetes requires specific kernel parameters to allow iptables to correctly handle bridged traffic^[400-devops-06-kubernetes-k8s-learning-00install-01-kubernetes.md].
Configuration files must be created or modified to load the br_netfilter module and set net.bridge.bridge-nf-call-ip6tables and net.bridge.bridge-nf-call-iptables to 1^[400-devops-06-kubernetes-k8s-learning-00install-01-kubernetes.md].
After creating the configuration in /etc/sysctl.d/k8s.conf, the settings are applied using sudo sysctl --system^[400-devops-06-kubernetes-k8s-learning-00install-01-kubernetes.md].
Container Runtime Configuration¶
The container runtime (e.g., Docker) must share a consistent cgroup driver with the kubelet^[400-devops-06-kubernetes-k8s-learning-00install-01-kubernetes.md]. A common issue occurs when Docker uses cgroupfs while Kubernetes expects systemd, causing the kubelet to fail health checks^[400-devops-06-kubernetes-k8s-learning-00install-01-kubernetes.md].
To resolve this, the Docker daemon configuration (/etc/docker/daemon.json) should explicitly set the exec-opts to native.cgroupdriver=systemd^[400-devops-06-kubernetes-k8s-learning-00install-01-kubernetes.md].
Related Concepts¶
- Kubernetes
- Kubelet
- [[Docker]]
- [[iptables]]
Sources¶
^[400-devops-06-kubernetes-k8s-learning-00install-01-kubernetes.md]