经验分享 – 微服务 – 搭建k8s(kubeadm)模拟复杂的生产环境(上篇)

概述

在之前的k8s实践中,我们使用minikube搭建了k8s环境,为了更真实的展示生产级别的k8s,本节课采用kubeadm来搭建master+worker集群,实现k8s集群,master、worker在虚拟机上来执行,中间遇到了超级多的坑,在这里系统的总结一下,分上下两篇进行讲解。

kubeadm架构图

一共有3台虚拟服务器主机,上篇主要介绍,kubeadm安装前的准备,kubeadm安装,下篇主要介绍使用Flannel 把Master、worker节点链接在k8s的同一个网络中,安装k8s的模拟环境是一切实践k8s的基础条件。

安装kubeadm前的准备

安装kubeadm前的准备可以说是至关重要的一个环节,如果这个出错,就会造成后面的各种报错,每台机器里都要提前安装好docker。

master IP: 192.168.88.134
worker IP: 192.168.88.139
console IP: 192.168.88.136

1.改变hostnmae,把名字改成master

sudo vim /etc/hostname 

2.Docker 的配置做一点修改,在“/etc/docker/daemon.json”里把 cgroup 的驱动程序改成 systemd ,然后重启 Docker 的守护进程。

# fix docker issue
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

sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker

3.为了让 Kubernetes 能够检查、转发网络流量,你需要修改 iptables 的配置,启用“br_netfilter”模块。

# iptables

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

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 # better than modify /etc/sysctl.conf
EOF

sudo sysctl --system

4.你需要修改“/etc/fstab”,关闭 Linux 的 swap 分区。

# Disable Swap

sudo swapoff -a
sudo sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab

安装kubeadm前的准备特别重要,前期准备不正确,容易造成kubeadm安装不正确。

安装 kubeadm

执行下面的脚本,去.bashrc里面添加一下提示的命令:

sudo apt install -y apt-transport-https ca-certificates curl nfs-common

#sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg 
https://packages.cloud.google.com/apt/doc/apt-key.gpg
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -

#echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

sudo apt update
sudo apt install -y kubeadm=1.23.3-00 kubelet=1.23.3-00 kubectl=1.23.3-00
sudo apt-mark hold kubeadm kubelet kubectl

source <(kubectl completion bash) ,执行 source .bashrc 生效。

ubuntu22.04 默认是关闭selinux的,( 我没有使用这个命令) 下面是关闭的命令:

vim /etc/selinux/config
SELINUX=disabled

验证kubeadm

kubeadm version
kubectl version --client

恭喜你,kubeadm已经成功安装了。

正文完