一、部署 Master 节点
1.安装 Docker,请参考“centos7离线部署docker”文章
2.配置内核参数,将桥接的 IPv4 流量传递到 iptables 的链
(1)新建配置文件
cat <
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
(2)使参数生效,并确认是否已经修改成功:sysctl --system
3.使用 systemd 作为 Cgroup驱动
(1)查看当前Docker Cgroup Driver:docker info
(2)若Cgroup Driver:cgroupfs,则需要进行修改
(3)vi /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
(4)重启docker服务,使配置生效:systemctl restart docker
(5)再次确认 Docker Cgroup Driver。
4.安装 Kubectl、Kubelet、Kubeadm
(1)添加阿里 Kubernetes 源
(yum install -y kubelet-1.20.2 kubeadm-1.20.2 kubectl-1.20.2 --downloadonly --downloaddir /root/k8s(可将kube组件的RPM包下载到/root/k8s下,用于离线安装,此文章是使用yum安装))
cat <
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
(2)Disable SELinux(操作前提是未关闭selinux)
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
(3)关闭 swap 分区(两条命令都执行)
临时关闭:swapoff -a
永久关闭:sed -ri 's/.*swap.*/#&/' /etc/fstab
(4)安装:yum install -y kubelet-1.20.2 kubeadm-1.20.2 kubectl-1.20.2 --disableexcludes=kubernetes
(5)设置 kubelet 开机自启动:systemctl enable kubelet
5.修改 Kubelet cgroup-driver参数
(1)vi /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS=--cgroup-driver=systemd
(2)重启 Kubelet
systemctl daemon-reload
systemctl restart kubelet
6.配置主机名
(1)vi /etc/hosts
IP 主机名
(2)hostnamectl set-hostname 主机名(修改主机名,也可不修改)
7.下载初始化所需镜像
先使用kubeadm config images list查看初始化所需镜像
vi pull-images.sh
#!/bin/bash
images=(
kube-apiserver:v1.20.15
kube-controller-manager:v1.20.15
kube-scheduler:v1.20.15
kube-proxy:v1.20.15
pause:3.2
etcd:3.4.13-0
coredns:1.7.0
)
for imageName in ${images[@]};
do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName} k8s.gcr.io/${imageName}
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
done
运行脚本:sh pull-images.sh
P.S. CentOS 防火墙关闭/解除开机启动命令:systemctl stop/disable firewalld
8.初始化 K8S 集群 (注意防火墙可能导致端口不通)
kubeadm init --kubernetes-version=1.20.2 \
--apiserver-advertise-address=本机IP \
--pod-network-cidr=10.244.0.0/16(注意选择一个绝对不会与master和node节点IP冲突的网段)
9.添加安全配置文件,使 kubectl 命令可用
(1)mkdir -p $HOME/.kube
(2)sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
(3)sudo chown $(id -u):$(id -g) $HOME/.kube/config
(4)source <(kubectl completion bash) (使kubectl可以自动补充)
10.查看集群状态
(1)查看节点状态:kubectl get node
(2)查看pod状态:kubectl get pod --all-namespaces
10.安装 Calico 网络
(1)使用kubectl命令部署:kubectl apply -f https://docs.projectcalico.org/v3.11/manifests/calico.yaml
(2)再次检查pod状态
(3)再次检查node状态:若为Ready,则 K8S Master 节点部署成功