-
Notifications
You must be signed in to change notification settings - Fork 1
RHEL 7 kubernetes and cassandra installation guide (ContainerD runtime)
At every node of your cluster you have to install:
- containerd.io
- kubelet
- kubectl
- kubeadm
-
Add repositories
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg exclude=kubelet kubeadm kubectl EOF
-
Install packages
NOTE: please change versions according to what you would like to use (compatibility table)yum install -y iproute-tc containerd.io kubelet-1.21.13 kubeadm-1.21.13 kubectl-1.21.13 --disableexcludes=kubernetes
-
Disable swap
sudo swapoff -a
Note: swap should be disabled in /etc/fstab (comment it out)
-
Set SELinux in permissive mode (effectively disabling it)
sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
-
Disable firewall
sudo systemctl disable firewalld && systemctl stop firewalld
or you can add rules
# Master firewall-cmd --permanent --add-port=6443/tcp # Kubernetes API server firewall-cmd --permanent --add-port=2379-2380/tcp # etcd server client API firewall-cmd --permanent --add-port=10250/tcp # Kubelet API firewall-cmd --permanent --add-port=10251/tcp # kube-scheduler firewall-cmd --permanent --add-port=10252/tcp # kube-controller-manager firewall-cmd --permanent --add-port=8285/udp # Flannel firewall-cmd --permanent --add-port=8472/udp # Flannel firewall-cmd --add-masquerade --permanent firewall-cmd --permanent --add-port=30000-32767/tcp # if NodePort on master is required firewall-cmd --reload systemctl restart firewalld # Worker firewall-cmd --permanent --add-port=10250/tcp firewall-cmd --permanent --add-port=8285/udp # Flannel firewall-cmd --permanent --add-port=8472/udp # Flannel firewall-cmd --permanent --add-port=30000-32767/tcp # NodePort range firewall-cmd --add-masquerade --permanent firewall-cmd --reload systemctl restart firewalld
-
Enable services
systemctl enable containerd; systemctl enable kubelet
-
Run the following command to set up the kernel modules immediately
sudo modprobe overlay && modprobe br_netfilter
-
Install kernel modules for containerd
sudo tee /etc/modules-load.d/containerd.conf<<EOF overlay br_netfilter EOF
-
Set system level settings for Kubernetes networking works as expected
sudo tee /etc/sysctl.d/kubernetes.conf<<EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF
-
To take effect immediately run
sudo sysctl --system && echo 1 > /proc/sys/net/ipv4/ip_forward
-
Containerd settings
sudo containerd config default > /etc/containerd/config.toml sudo systemctl start containerd
Reminder: all steps above(1-11) must be performed at every node that you would like to use in your Kubernetes cluster
-
Init your cluster
kubeadm init --pod-network-cidr=10.244.0.0/16
-
Enable auto-completion and kubectl for user
mkdir -p $HOME/.kube && cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && chown $(id -u):$(id -g) $HOME/.kube/config && \ printf "source <(kubectl completion bash)\nsource <(kubeadm completion bash)" >> ~/.bashrc && . .bashrc
-
Flannel installation
NOTE: also you can use Calico, Cilium, Contiv-VPP, Kube-router, Weave Netkubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
-
Check system pods
$ kubectl get pods --namespace=kube-system NAME READY STATUS RESTARTS AGE coredns-74ff55c5b-txmpm 1/1 Running 0 6m58s coredns-74ff55c5b-zl89t 1/1 Running 0 6m58s etcd-th2-kuber-test04 1/1 Running 0 7m8s kube-apiserver-th2-kuber-test04 1/1 Running 0 7m8s kube-controller-manager-th2-kuber-test04 1/1 Running 0 7m8s kube-flannel-ds-cxzq7 1/1 Running 8 117s kube-proxy-9szhv 1/1 Running 0 6m58s kube-scheduler-th2-kuber-test04 1/1 Running 0 7m8s
-
Join nodes
At step 12 (init cluster) you got the command to join your nodes to the clusterkubeadm join 192.168.0.10:6443 \ --token 7adyph.18ud1qnkrz2wwwfg \ --discovery-token-ca-cert-hash sha256:f938f0dbbb3353d9ffeebc2631412182cc2234e8c3d34f0b395623d9bd29fd78
In case you lost the token and hash
- Generate a new token actual 1 hour
kubeadm token create --description "Demo token" --ttl 1h
- Then get a hash of certificate
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
Check your nodes after
$ kubectl get nodes NAME STATUS ROLES AGE VERSION kube00 Ready master 109m v1.21.13 kube01 Ready <none> 53s v1.21.13
- Generate a new token actual 1 hour
Get in touch with us to learn more about th2 mail to: [email protected]
- Architecture
- Tutorials