一定要看着官方文档搭建
确保每个节点上 MAC 地址和 product_uuid 的唯一性
三台虚拟机
一台master节点(控制平面节点)
两台node节点(工作节点)
配置要求:最少2G内存,双核处理器
一、配置环境
1. 关闭SELinux和firewalld
要同时永久关闭和临时关闭
setenforce 0 #临时关闭selinux
sed -ri '/^SELINUX=/ c SELINUX=disabled' /etc/selinux/config #永久关闭selinux
systemctl stop firewalld
2. 关闭swap交换分区
swapoff -a
sed -ri 's/.*swap.*/#&/g' /etc/fstab
3. 允许 iptables 检查桥接流量
确保 br_netfilter 模块被加载。这一操作可以通过运行 lsmod | grep br_netfilter 来完成。若要显式加载该模块,可执行 sudo modprobe br_netfilter。
为了让你的 Linux 节点上的 iptables 能够正确地查看桥接流量,你需要确保在你的 sysctl 配置中将 net.bridge.bridge-nf-call-iptables 设置为 1。
[root@k8s-node1 ~]# cat /etc/modules-load.d/k8s.conf
# BEGIN ANSIBLE MANAGED BLOCK
br_netfilter
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4
# END ANSIBLE MANAGED BLOCK
[root@k8s-node1 ~]# cat /etc/sysctl.d/k8s.conf
# BEGIN ANSIBLE MANAGED BLOCK
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
# END ANSIBLE MANAGED BLOCK
4. 检查所需端口
4.1 控制平面节点
端口范围 | 作用 |
---|---|
6443 | Kubernetes API 服务器 |
2379-2380 | etcd 服务器客户端 API |
10250 | Kubelet API |
10251 | kube-scheduler |
10252 | kube-controller-manager |
4.2 工作节点
端口范围 | 作用 |
---|---|
10250 | Kubelet API |
30000-32767 | NodePort 服务† |
二、安装 docker
我主页有关于docker安装的详解
点击查看安装docker的操作步骤
2.1 配置 Docker 守护程序
cat >> /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
三、 安装 kubeadm、kubelet 和 kubectl
你需要在每台机器上安装以下的软件包:
- kubeadm:用来初始化集群的指令。
- kubelet:在集群中的每个节点上用来启动 Pod 和容器等。
- kubectl:用来与集群通信的命令行工具。
[root@k8s-master k8s]# cat /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet