一、部署 Master 节点
1.安装 Docker,请参考“centos7离线部署docker”文章

2.配置内核参数,将桥接的 IPv4 流量传递到 iptables 的链
(1)新建配置文件
cat <<EOF > /etc/sysctl.d/k8s.conf
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 <<EOF > /etc/yum.repos.d/kubernetes.repo
[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 节点部署成功

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐