安裝kubenetes有5種部署工具,分別是kubeadm、kops、KRIB、Kubespray。本實驗采用的是kubeadm部署工具。如有想了解其他部署工具,請點擊這里
環境說明
角色/主機名 |
系統版本 |
CPU |
MEM |
IP |
master |
CentOS 7.7 |
4 |
4 |
192.168.100.80 |
node01 |
CentOS 7.7 |
4 |
4 |
192.168.100.81 |
node02 |
CentOS 7.7 |
4 |
4 |
192.168.100.82 |
注:系統版本要求7.4+
環境准備
檢查網絡(三個主機)
ping baidu.com
檢查端口
Control-plane node
Protocol |
Port Range |
Purpose |
TCP |
6443 |
Kubernetes API server |
TCP |
2379-2380 |
etcd server client API |
TCP |
10250 |
Kubelet API |
TCP |
10251 |
kube-scheduler |
TCP |
10252 |
kube-controller-manager |
Worker node(s)
Protocol |
Port Range |
Purpose |
TCP | 10250 | Kubelet API |
TCP | 30000-32767 | NodePort Services** |
設置主機名映射(三個主機)
vim /etc/hosts
192.168.100.80 master
192.168.100.81 node01
192.168.100.82 node02
關閉防火牆和selinux(三個主機)
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -ri 's/(^SELINUX=).*/\1disabled/' /etc/selinux/config
配置docker和kubernetes源(三個節點)
yum install wget –y
cd /etc/yum.repos.d && wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo && cd -
cat >> /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Aliyun-kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF
下載docker(三個主機)
yum install docker-ce-18.06.3.ce-3.el7 -y
設置docker加速器和Cgroup drivers
mkdir /etc/docker
vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://registry.docker-cn.com"]
}
啟動docker並設置開機自啟動(三個主機)
systemctl start docker.service
systemctl enable docker.service
查看docker版本
docker --version
安裝kubeadm, kubelet and kubectl(master)
yum install kubelet kubeadm kubectl –y
安裝kubeadm,kubelet(nodes)
yum install kubelet kubeadm -y
設置Cgroup drivers和交換分區(三個主機)
vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false --cgroup-driver=systemd"
說明:
--fail-swap-on:關閉交換分區,kubernetes不允許開啟交換分區
--cgroup-driver:指定Cgroup drivers用誰
設置kubectl開機自啟動(三個主機)
systemctl enable --now kubelet
設置必須的sysctl參數,讓這些參數重啟后仍然生效
cat > /etc/sysctl.d/99-kubernetes-cri.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sysctl --system
使用kubernetes創建單個控制平面集群(master)
kubeadm init --kubernetes-version=v1.16.3 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap
說明:
--kubernetes-version:為控制平面選擇特定的Kubernetes版本。
--image-repository :指定鏡像部署的地址,原地址https://k8s.gcr.io不可用
--pod-network-cidr:pod的網絡地址
--service-cidr:server的網絡地址
是輸出一段字符保持好,后面需要用到
kubeadm join 192.168.100.80:6443 --token oc5h3c.bs1gikpbvgzbc86y \
--discovery-token-ca-cert-hash sha256:e0e176b55cb5fbf1238351e8d009bf8cc1f9a69a283a47c9ec5766564657d6a0