文章目录
master
: 192.168.121.134node01
: 192.168.121.135node02
: 192.168.121.136
一、环境准备(所有节点都要做)
1. 设置主机名(每台执行)
# master 节点执行:
sudo hostnamectl set-hostname master
# node01 执行:
sudo hostnamectl set-hostname node01
# node02 执行:
sudo hostnamectl set-hostname node02
2. 配置 /etc/hosts
(每台都一样)
sudo tee -a /etc/hosts <<EOF
192.168.121.134 master
192.168.121.135 node01
192.168.121.136 node02
EOF
二、基础设置(每台都执行)
# 关闭 swap(Kubernetes 要求)
sudo swapoff -a
sudo sed -i '/swap/ s/^/#/' /etc/fstab
# 加载内核模块
sudo modprobe overlay
sudo modprobe br_netfilter
# 配置内核参数
sudo tee /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
三、安装 Docker(每台都执行)
详细教程可以查看docker安装那篇博客
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
# 添加 Docker 源
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
# 配置 containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl restart containerd
sudo systemctl enable containerd
四、安装 Kubernetes 组件(每台都执行)
# 添加 K8s 源
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | \
sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
#假如404--删除之前的配置 并且把镜像改成aliyun
sudo rm /etc/apt/sources.list.d/kubernetes.list
sudo rm /etc/apt/trusted.gpg.d/kubernetes.gpg
#添加阿里云镜像
echo "deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main" | \
sudo tee /etc/apt/sources.list.d/kubernetes.list
#添加GPS Key
curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | \
sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/kubernetes-aliyun.gpg
sudo apt install -y kubelet kubeadm kubectl
#锁定 kubelet、kubeadm、kubectl 的当前版本,不让它们被自动升级或更新
sudo apt-mark hold kubelet kubeadm kubectl
五、初始化 Master 节点(仅 master 执行)
sudo kubeadm init --apiserver-advertise-address=192.168.121.134 --pod-network-cidr=192.168.0.0/16
#假如是以上错误
#重新加载内核模块
sudo modprobe br_netfilter
#检查
lsmod | grep br_netfilter
#设置 sysctl 参数并且配置生效
sudo tee /etc/sysctl.d/k8s.conf > /dev/null <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sudo sysctl --system
#然后再次初始化
初始化成功后,会输出一个 kubeadm join
命令,请复制它,稍后用于让 node 节点加入集群。
六、配置 kubectl(master 节点)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
七、安装网络插件(master 节点)
使用 Calico 网络插件:
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yaml
#查看etcd状态
curl -s http://127.0.0.1:2381/health?serializable=false
八、加入 Worker 节点(node01 和 node02)
使用 kubeadm init
输出的命令,例如:
#可以提前拉取镜像
kubeadm config images pull
sudo kubeadm join 192.168.121.134:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
在 node01 和 node02 上都执行这条命令
九、验证集群(在 master 节点)
kubectl get nodes
输出类似:
NAME STATUS ROLES AGE VERSION
master Ready control-plane 5m v1.28.x
node01 Ready <none> 1m v1.28.x
node02 Ready <none> 1m v1.28.x