kubeadm方式部署 k8s 1.21
比起君子讷于言而敏于行,我更喜欢君子善于言且敏于行。
目录
前言
一、基础知识
Master 节点需要安装的内容
Node 节点需要安装的内容
二、具体操作
1.准备工作
(1)关 swap
(2)内核参数调优(必做)
(3)并安装 bridge 模块:
(4)容器 runtime
2.安装kubelet
(1)创建临时目录
(2)下载 kubeadm/kubelet/kubectl 1.21.10
(3)解压并安装
(4)设置可执行权限
3. 安装 kubeadm, kubelet, kubectl
(1)使用阿里云等国内源安装指定版本的 Kubernetes 组件。
(2) 安装指定版本,例如 1.21.10
(3)验证版本
(4) 阻止这三者被意外升级
(5)启动 kubelet
(6)如需要移除此版本
(7) 预拉取镜像
(8)master执行初始化集群
(9)给它搞个日志
总结
前言
之前做的部署了,很久之前也做过二进制的部署。对比起来,kubedam确实更迅速更方便,个人认为kube-proxy 作为 Pod 运行更省心
一、基础知识
Master 节点需要安装的内容
kubeadm 功能:用来初始化集群(kubeadm init)、加入节点(kubeadm join)、升级集群等。
kubelet 功能:负责节点上 Pod 的生命周期管理。
kubectl 功能:命令行客户端,用于操作 Kubernetes API。
container Runtime 功能:kubelet 需要容器运行时来启动 Pod。
CNI插件(Calico/Flannel) 功能:Pod 网络通信。
Node 节点需要安装的内容
kubeadm 功能:用 kubeadm join 将节点加入集群。
kubelet 功能:管理 Node 上的 Pod 生命周期,与 Master 通信。
kubectl(可选) 功能:Node 节点不一定需要安装 kubectl,但方便调试,可以安装。
Container Runtime 功能:Node 节点的核心依赖,所有 Pod 都需要通过容器运行时启动。
CNI 插件 功能:Node 节点需要 CNI 插件,Pod 网络才会正常工作。
二、具体操作
1.准备工作
(1)关 swap
sudo swapoff -a sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab(2)内核参数调优(必做)
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 vm.swappiness = 0 EOF sudo sysctl --system(3)并安装 bridge 模块:
sudo modprobe br_netfilter echo br_netfilter | sudo tee /etc/modules-load.d/br_netfilter.conf(4)容器 runtime
sudo apt-get install containerd -y sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml sudo systemctl restart containerd sudo systemctl enable containerd2.安装kubelet
(1)创建临时目录
mkdir -p /tmp/k8s && cd /tmp/k8s(2)下载 kubeadm/kubelet/kubectl 1.21.10
curl -LO https://dl.k8s.io/v1.21.10/kubernetes-node-linux-amd64.tar.gz(3)解压并安装
tar -xzvf kubernetes-node-linux-amd64.tar.gz sudo cp kubernetes/node/bin/kubeadm /usr/local/bin/ sudo cp kubernetes/node/bin/kubelet /usr/local/bin/ sudo cp kubernetes/node/bin/kubectl /usr/local/bin/(4)设置可执行权限
sudo chmod +x /usr/local/bin/kubeadm /usr/local/bin/kubelet /usr/local/bin/kubectl sudo mkdir -p /etc/systemd/system/kubelet.service.dcat <<EOF | sudo tee /etc/systemd/system/kubelet.service [Unit] Description=kubelet: The Kubernetes Node Agent Documentation=https://kubernetes.io/docs/home/ Wants=network-online.target After=network-online.target [Service] ExecStart=/usr/local/bin/kubelet Restart=always StartLimitInterval=0 RestartSec=10 [Install] WantedBy=multi-user.target EOFsudo systemctl daemon-reexec sudo systemctl start kubelet sudo systemctl enable kubelet3. 安装 kubeadm, kubelet, kubectl
(1)使用阿里云等国内源安装指定版本的 Kubernetes 组件。
sudo apt-get update && sudo apt-get install -y apt-transport-https curl# 添加 Kubernetes 阿里云 GPG **
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -# 添加 Kubernetes 阿里源
sudo tee /etc/apt/sources.list.d/kubernetes.list <<EOF deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF sudo apt-get update(2) 安装指定版本,例如 1.21.10
sudo apt-get install -y kubelet=1.21.10-00 kubeadm=1.21.10-00 kubectl=1.21.10-00(3)验证版本
kubeadm version kubelet --version kubectl version --client(4) 阻止这三者被意外升级
sudo apt-mark hold kubelet kubeadm kubectl(5)启动 kubelet
sudo systemctl start kubelet sudo systemctl enable kubelet(6)如需要移除此版本
这一步是防止临时要改版本而记录的,如果不需要,直接去执行7就行。
查看被锁定的包:会显示出所有包的名字
sudo apt-mark showhold取消锁定
sudo apt-mark unhold kubelet kubeadm kubectl移除
sudo apt-get remove -y kubelet kubeadm kubectl(7) 预拉取镜像
kubeadm config images pull --kubernetes-version=v1.21.10(8)master执行初始化集群
sudo kubeadm init \ --kubernetes-version=v1.21.10 \ --pod-network-cidr=192.168.0.0/16(9)给它搞个日志
sudo kubeadm init --kubernetes-version=v1.21.10 --pod-network-cidr=192.168.0.0/16 |& tee kubeadm-init.log注意:这里 pod 网络要写 192.168.0.0/16,Calico 默认就是这个网段。--pod-network-cidr 不是指你服务器的 IP 段,而是 集群中 Pod 所使用的虚拟网络段,必须和宿主机实际使用的网段 不冲突。集群启用后慎用init这个命令,会初始化所有内容
总结
大概一年前部署的,没有及时记录成文章,找都不好找,再也不偷懒了,补上补上,都补上!
