Kubeadm
Prerequisites
- Disable SELinux
- Disable firewalld
- Disable swap
- Add lines below to /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables=1 net.ipv4.ip_forward=1 net.bridge.bridge-nf-call-ip6tables=1</code>
- Probe modules
modprobe overlay modprobe br_netfilter
- Add docker-ce repository
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- Copy kubernetes.repo to /etc/yum.repos.d/kubernetes.repo
Installation
- Install packages
yum install -y yum-utils, device-mapper-persistent-data, lvm2 yum install -y kubeadm kubelet kubectl docker-ce
- Copy daemon.json to /etc/docker/daemon.json
- Start services
systemctl enable docker systemctl start docker systemctl enable kubelet systemctl start kubelet
Initialize cluster
kubeadm init --config cluster.yaml --upload-certs
curl https://docs.projectcalico.org/manifests/calico.yaml -O
sed -i 's/192.168.0.0/10.42.0.0/g' calico.yaml # Replace 10.42.0.0 with what's in cluster.yaml
kubectl apply -f calico.yaml
Join cluster
# Join as control plane
kubeadm join k8s.local:6443 \
--token TOKEN \
--discovery-token-ca-cert-hash SHA256 \
--control-plane --certificate-key CERTKEY
# Join as worker
kubeadm join k8s.local:6443 \
--token TOKEN \
--discovery-token-ca-cert-hash SHA256
Reset cluster
kubeadm reset # Make sure all printed directories are deleted
daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
kubernetes.repo
[kubernetes]
baseurl = https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
gpgcheck = 1
gpgkey = https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
name = Kubernetes YUM repository
repo_gpgcheck = 1
cluster.yaml
---
apiVersion: kubeadm.k8s.io/v1beta2
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: "192.168.2.10"
bindPort: 6443
---
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: 1.17.2
clusterName: kubernetes
controlPlaneEndpoint: "k8s.local:6443"
apiServer:
extraArgs:
authorization-mode: Node,RBAC
certSANs:
- k8s
- k8s.local
networking:
dnsDomain: cluster.local
podSubnet: "10.42.0.0/16"
serviceSubnet: "10.43.0.0/16"