准备3台Centos8服务器
192.168.31.81 | master |
192.168.31.214 | node1 |
192.168.31.206 | node2 |
分别修改hostname
hostnamectl set-hostname master.k8s.local
hostnamectl set-hostname node1.k8s.local
hostnamectl set-hostname node2.k8s.local
分别配置别名
vim /etc/hosts
192.168.31.81 master.k8s.local master
192.168.31.214 node1.k8s.local node1
192.168.31.206 node2.k8s.local node2
开始安装:
1.关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
2.关闭selinux
setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
reboot
3.关闭系统的 Swap
swapoff -a
注释掉 SWAP 的自动挂载
vim /etc/fstab
/dev/mapper/cl-root / xfs defaults 0 0
/dev/mapper/cl-home /home xfs defaults 0 0
# /dev/mapper/cl-swap swap swap defaults 0 0
4.设置路由,
允许iptables检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
cat <<EOF | sudo tee /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
sudo sysctl -p /etc/sysctl.d/k8s.conf
sudo sysctl --system
cat /proc/sys/net/bridge/bridge-nf-call-iptables
cat /proc/sys/net/bridge/bridge-nf-call-ip6tables
# 显示1则生效
5.安装docker
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce
systemctl enable docker && systemctl start docker
因为kubernetes的默认驱动是 systemd, 而docker默认的是 cgroupfs
所以要修改docker的驱动与kubernetes的一致
参考:
sudo mkdir /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
systemctl restart docker
6.
添加阿里kubernetes源
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=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
7.安装kubelet、kubeadm 和 kubectl
在所有节点上安装指定版本 kubelet、kubeadm 和 kubectl
yum install -y kubectl-1.23.1 kubeadm-1.23.1 kubelet-1.23.1
systemctl enable kubelet && systemctl start kubelet
在所有节点执行1-7步
8.初始化Master节点
kubeadm init \
--kubernetes-version=v1.23.1 \
--image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=192.168.0.0/16 \
--service-cidr=10.96.0.0/12 \
--apiserver-advertise-address=192.168.31.81 \
--ignore-preflight-errors=Swap
初始化成功会出现下面的信息
Your Kubernetes master has initialized successfully!
To start using your cluster, you need to run the following as a 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
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
Installing Addons | Kubernetes
You can now join any number of machines by running the following on each node
as root:
kubeadm join 192.168.31.81:6443 \
--token 7sl2tt.cjkwf3yqkr1s7vqd \
--discovery-token-ca-cert-hash sha256:947703ee30bef00882bd7fa9682857d9c152fecfa42ffbc86a83a4113757f79a \
--ignore-preflight-errors=Swap
按照以上提示创建需要的文件夹
执行下面命令,使kubectl可以自动补充
source <(kubectl completion bash)
9.执行以下命令安装 calico 部署网络插件
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.1/manifests/tigera-operator.yaml
检查安装成功:
# 查看calico相关服务是否启动
kubectl get pods -n kube-system
# 查看 STATUS 是否为 Ready
kubectl get nodes
所有节点执行 kubeadm join 加入主节点,安装完毕