比起君子讷于言而敏于行我更喜欢君子善于言且敏于行。目录前言一、基础知识Master 节点需要安装的内容Node 节点需要安装的内容二、具体操作1.准备工作1关 swap2内核参数调优必做3并安装 bridge 模块4容器 runtime2.安装kubelet1创建临时目录2下载 kubeadm/kubelet/kubectl 1.21.103解压并安装4设置可执行权限3. 安装 kubeadm, kubelet, kubectl1使用阿里云等国内源安装指定版本的 Kubernetes 组件。2 安装指定版本例如 1.21.103验证版本4 阻止这三者被意外升级5启动 kubelet6如需要移除此版本7 预拉取镜像8master执行初始化集群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关 swapsudo swapoff -a sudo sed -i / swap / s/^\(.*\)$/#\1/g /etc/fstab2内核参数调优必做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 --system3并安装 bridge 模块sudo modprobe br_netfilter echo br_netfilter | sudo tee /etc/modules-load.d/br_netfilter.conf4容器 runtimesudo 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.安装kubelet1创建临时目录mkdir -p /tmp/k8s cd /tmp/k8s2下载 kubeadm/kubelet/kubectl 1.21.10curl -LO https://dl.k8s.io/v1.21.10/kubernetes-node-linux-amd64.tar.gz3解压并安装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] Descriptionkubelet: The Kubernetes Node Agent Documentationhttps://kubernetes.io/docs/home/ Wantsnetwork-online.target Afternetwork-online.target [Service] ExecStart/usr/local/bin/kubelet Restartalways StartLimitInterval0 RestartSec10 [Install] WantedBymulti-user.target EOFsudo systemctl daemon-reexec sudo systemctl start kubelet sudo systemctl enable kubelet3. 安装 kubeadm, kubelet, kubectl1使用阿里云等国内源安装指定版本的 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 update2 安装指定版本例如 1.21.10sudo apt-get install -y kubelet1.21.10-00 kubeadm1.21.10-00 kubectl1.21.10-003验证版本kubeadm version kubelet --version kubectl version --client4 阻止这三者被意外升级sudo apt-mark hold kubelet kubeadm kubectl5启动 kubeletsudo systemctl start kubelet sudo systemctl enable kubelet6如需要移除此版本这一步是防止临时要改版本而记录的如果不需要直接去执行7就行。查看被锁定的包会显示出所有包的名字sudo apt-mark showhold取消锁定sudo apt-mark unhold kubelet kubeadm kubectl移除sudo apt-get remove -y kubelet kubeadm kubectl7 预拉取镜像kubeadm config images pull --kubernetes-versionv1.21.108master执行初始化集群sudo kubeadm init \ --kubernetes-versionv1.21.10 \ --pod-network-cidr192.168.0.0/169给它搞个日志sudo kubeadm init --kubernetes-versionv1.21.10 --pod-network-cidr192.168.0.0/16 | tee kubeadm-init.log注意这里 pod 网络要写 192.168.0.0/16Calico 默认就是这个网段。--pod-network-cidr 不是指你服务器的 IP 段而是 集群中 Pod 所使用的虚拟网络段必须和宿主机实际使用的网段 不冲突。集群启用后慎用init这个命令会初始化所有内容总结大概一年前部署的没有及时记录成文章找都不好找再也不偷懒了补上补上都补上