-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathk8s-installation
97 lines (70 loc) · 3 KB
/
k8s-installation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# This is Kubernetes installation short script for k8s version 1.19.0 on Centos 7
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Refer documentation page https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm
Set hostname on both nodes and make sure that both nodes are accessible to each other via names. Also open all ports between these servers and specific port (as given in below link) to outside world:
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#check-required-ports
RUN below commands on both nodes
==============================================================
swapoff -a;
setenforce 0;
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config;
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system;
yum install -y yum-utils device-mapper-persistent-data lvm2;
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo;
yum update -y && yum install -y \
containerd.io-1.2.13 \
docker-ce-19.03.11 \
docker-ce-cli-19.03.11;
mkdir /etc/docker;
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
systemctl daemon-reload;
systemctl restart docker;
systemctl enable docker;
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
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
# Set SELinux in permissive mode (effectively disabling it)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
sudo systemctl enable --now kubelet
===========================================
Run only on master
kubeadm init --apiserver-advertise-address=[your-eth0-ip-of-master-node] --pod-network-cidr=192.168.0.0/16
// notedown the last line of output - kubeadm join command
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
===========================================
Run only on worker node
// Below (similar) command will come from output of kubeadm init from master run
kubeadm join 172.31.23.148:6443 --token anhfg0.u7syvgnmveezqakv \
> --discovery-token-ca-cert-hash sha256:19a47aff811159bc06f6f31d24578c322b69512fbf2b55db8825e18e2c9b7c05
===========================================
Check nodes on master:
kubectl get nodes