Skip to content

Instantly share code, notes, and snippets.

@qzchenwl
Last active March 29, 2021 06:42
Show Gist options
  • Save qzchenwl/86c582e178ea15fd307427dd027b5a0d to your computer and use it in GitHub Desktop.
Save qzchenwl/86c582e178ea15fd307427dd027b5a0d to your computer and use it in GitHub Desktop.
k8s-master on centos7
# 0. SYSTEM INFO & CLUSTER ARCH
# CentOS 7
#
# +------------+ +-----------+
# | k8s-master |>192.168.99.20 -- 192.168.99.21<| k8s-node1 |
# +------------+ +-----------+
# v v
# internet internet
#
# /etc/hosts
# 192.168.99.20 k8s-master
# 192.168.99.21 k8s-node1
#
# 1. INSTALL DOCKER
# refer:
# - [official-doc](https://kubernetes.io/docs/setup/cri/#docker)
# - [repo-mirrors](https://www.jianshu.com/p/ad3c712e1d95)
# - [registry-mirrors](https://blog.csdn.net/u010316188/article/details/79865451)
# add repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache
# install the *right* version
yum install docker-ce-18.06.1.ce -y
# config docker
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"
],
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
# restart docker
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
# check docker
docker run hello-world
# 2. INSTALL KUBEADM
# refer:
# - [official-doc](https://kubernetes.io/docs/setup/independent/install-kubeadm/)
# - [repo-mirrors](https://www.jianshu.com/p/e43f5e848da1)
# config repo
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kube*
EOF
# disable SELinux
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
# install
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
# start
systemctl enable kubelet && systemctl start kubelet
# network issue
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
# 3. INIT KUBERNETES
# refer:
# - [official-doc](https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/)
# - [init-options-ip](https://www.jianshu.com/p/e43f5e848da1)
# init
kubeadm init --pod-network-cidr=192.168.99.0/24 --apiserver-advertise-address=192.168.99.20
# use weave addon
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
####### su <regular-user> #######
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes
kubectl get pods --all-namespaces
####### ssh k8s-node1 #########
# repeat until kubeadm init (not include)
kubeadm join 192.168.99.20:6443 --token gijxs5.w049ky73l5u8rbcm --discovery-token-ca-cert-hash sha256:293e4d09c2c1f580a4ec469443f70305bf0a7957bdc1cfaa933f78fd838d93bc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment