k8s 集群搭建


官方教程
ubuntu20

操作系统初始化配置

# 关闭防火墙
 ufw disable 

# 关闭swap
swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久

# 根据规划设置主机名
hostnamectl set-hostname 

# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.3.54 k8s-master1
192.168.3.55 k8s-node1
192.168.3.56 k8s-node2
192.168.3.57 k8s-node3
EOF

# 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system  # 生效

# 时间同步
yum install ntpdate -y
ntpdate time.windows.com

kubelet kubeadm kubectl 安装-使用阿里源

国内使用官方网址 -- 会有网络连接问题

sudo apt-get update && sudo apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
cat > /etc/apt/sources.list.d/kubernetes.list << EOF
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF  

sudo apt-get update
sudo apt-get install -y kubelet=1.20.11-00 kubeadm=1.20.11-00 kubectl=1.20.11-00

# 锁定 软件版本
sudo apt-mark hold kubelet kubeadm kubectl

# 设置开机自启-kubelet
systemctl enable kubelet

初始化集群master

kubeadm init   --apiserver-advertise-address=192.168.3.54   --image-repository registry.aliyuncs.com/google_containers  --kubernetes-version=v1.22.2 --service-cidr=10.96.0.0/12   --pod-network-cidr=10.244.0.0/16 --v=5

--apiserver-advertise-address master节点主机ip
--image-repository 镜像拉取地址
--kubernetes-version k8s版本指定;不指定会默认安装最新版本
--service-cidr 集群service网段规划
--pod-network-cidr 集群service网段规划
--v=5 查看初始化详情

成功截图

图片.png
请注意图中的 节点加入集群的命令 -- 这个会在后续节点加入时,使用到;

kubeadm join 192.168.3.54:6443 --token 364g4z.v47bi2rqeo1qjnce \
        --discovery-token-ca-cert-hash sha256:a66a8884e1f19a34daac72dac1d878f7c679bb970fdb0a36a45b66c1508942ff

添加配置信息

初始化集群完成时,会有该提示执行以下命令

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

验证k8s集群安装是否成功

kubectl get nodes 查看 k8s 集群节点

成功截图

图片.png

集群节点加入-node

将 master 的配置文档<$HOME/.kube/config>复制到需要加入集群的node节点机器中
scp $HOME/.kube/config root@192.168.3.56:~/.kube/config
加入集群

kubeadm join 192.168.3.54:6443 --token 364g4z.v47bi2rqeo1qjnce \
        --discovery-token-ca-cert-hash sha256:a66a8884e1f19a34daac72dac1d878f7c679bb970fdb0a36a45b66c1508942ff

k8s 网络模型 -

未配置时, 节点的 status 为 NotReady; 网络模型有多种 常用的有 flannel、calico;
这里我使用的 calico;

  • 这里的操作节点是 master
  • 下载配置文件 curl https://docs.projectcalico.org/manifests/calico.yaml -O
  • 创建对应应用 kubectl apply -f calico.yaml

成功截图

图片.png

验证截图图片.png