本分步指南将向您展示如何使用Kubeadm工具在Debian11上安装Kubernetes集群。Kubernetes(k8s)集群包含用于运行容器化应用程序的主节点和工作节点。主控节点作为控制平面,工作节点为实际工作负载提供环境。前提条件:安装Debian112CPU/vCPU2GBRAM20GB空闲硬盘空间具有管理员权限的sudo用户稳定的网络连接实验环境配置:本文中,我使用Debian11系统的3个节点,配置如下Masternode(k8s-master)–192.168.1.236Workernode1(k8s-worker1)–192.168.1.237Workernode2(k8s-worker2)–192.168.1.238废话不多说,我们直接上安装步。1.设置主机名并更新/etc/hosts文件在master节点和worker节点上使用hostnamectl命令设置主机名:$sudohostnamectlset-hostname"k8s-master"//run$onthemasternodesudohostnamectlset-hostname"k8s-worker1"//在worker节点1上运行$sudohostnamectlset-hostname"k8s-worker2"//在worker节点2上运行在所有节点的/etc/hosts文件末尾添加如下几行:192.168.1.236k8s-master192.168.1.237k8s-worker1192.168.1.238k8s-worker22,关闭所有节点上的交换分区我建议关闭交换分区以便更流畅地使用kubelet。在所有节点上执行以下命令关闭swap分区:$sudoswapoff-a$sudosed-i'/swap/s/^\(.*\)$/#\1/g'/etc/fstab3,配置KubernetesCluster相关的防火墙规则如果您的操作系统防火墙开启,请在master节点和worker节点分别允许以下端口。在主控节点执行:$sudoufwallow6443/tcp$sudoufwallow2379/tcp$sudoufwallow2380/tcp$sudoufwallow10250/tcp$sudoufwallow10251/tcp$sudoufwallow10252/tcp$sudoufwallow10255/tcp$sudoufwreload在工作节点上,执行:$sudoufwallow10250/tcp$sudoufwallow30000:32767/tcp$sudoufwreload注意:如果你的Debian11系统防火墙关闭,你可以跳过这一步。4、在所有节点上安装ContainerdruntimeContainerd是容器运行时的行业标准,所有节点都必须安装Containerd。先在所有节点上配置如下核心参数,然后再安装Containerd。$猫</dev/null2>&1在所有节点上设置cgroupdriver为systemd,编辑/etc/containerd/config.toml文件,找到[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]部分,添加一行:SystemdCgroup=true:$sudovi/etc/containerd/config.tomlsystemdCgroup-true-containerd-config-toml保存并退出文件。在所有节点上重新启动并启用containerd服务:$sudosystemctlrestartcontainerd$sudosystemctlenablecontainerd5。添加KubernetesApt库执行以下命令添加KubernetesApt库:$sudoaptinstallgnupggnupg2curlsoftware-properties-common-y$curl-shttps://packages.cloud.google.com/apt/doc/apt-密钥.gpg|sudogpg--dearmour-o/etc/apt/trusted.gpg.d/cgoogle.gpg$sudoapt-add-repository"debhttp://apt.kubernetes.io/kubernetes-xenialmain"6.安装kubelet,所有节点上的kubectl和kubeadm在所有节点上执行以下apt命令,安装kubelet、kubectl和kubeadm等Kubernetes集群组件。$sudoaptupdate$sudoaptinstallkubeletkubeadmkubectl-y$sudoapt-markholdkubeletkubeadmkubectl7.使用Kubeadm创建Kubernetes集群现在我们可以创建Kubernetes集群。在master节点执行如下命令:$sudokubeadminit--control-plane-endpoint=k8s-master命令输出:Kubernetes-Control-Plane-Initialization-Debian11出现以上内容,说明控制平面初始化成功。在输出中,有普通用户与集群交互的命令,以及将任何工作节点加入集群的命令。要开始与集群交互,请在主节点上运行以下命令:$mkdir-p$HOME/.kube$sudocp-i/etc/kubernetes/admin.conf$HOME/.kube/config$sudochown$(id-u):$(id-g)$HOME/.kube/config执行以下kubectl命令获取节点和集群信息:$kubectlgetnodes$kubectlcluster-info上面命令的输出:Nodes-Cluster-Info-Kubectl通过执行kubeadmjoin命令将两个工作节点加入集群。注意:请从kubeadminit命令的输出中复制完整命令。在我的示例中,命令如下:$sudokubeadmjoink8s-master:6443--tokenta622t.enl212euq7z87mgj\--discovery-token-ca-cert-HashSHA256:2BE58F54458D0E788C96B8841F811069019019161F9A3DD8502A38C773E5C773E5C6EAD17node检查节点的状态:$kubectlgetnodesNAMESTATUSROLESAGEVERSIONk8s-masterNotReadycontrol-plane23mv1.25.0k8s-worker1NotReady9m27sv1.25.0k8s-worker2NotReady2m19sv1.25.0$为了使节点状态变为就绪,我们需要安装容器pod网络插件,例如Calico或flannel。8、安装CalicoPod网络插件在主控节点执行如下命令安装Calico:$kubectlapply-fhttps://projectcalico.docs.tigera.io/manifests/calico.yaml输出:Install-calico-pod-network-addon-debian11在所有节点上执行以下命令,配置防火墙允许Calico端口:$sudoufwallow179/tcp$sudoufwallow4789/udp$sudoufwallow51820/udp$sudoufwallow51821/udp$sudoufwallow4789/udp$sudoufwreload执行以下命令检查Calico的状态:$kubectlgetpods-nkube-systemCalico-Pods-Status-Kuberenetes-Debian11完美!现在再次检查节点状态:Nodes-status-after-calico-Installation很棒!上面的输出表明master节点和worker节点的状态都是ready。现在集群工作正常。9、检查Kubernetes集群是否安装正确我们尝试通过部署命令部署基于Nginx的应用,以验证Kubernetes集群是否安装正确。执行以下命令:$kubectlcreatedeploymentnginx-app--image=nginx--replicas2$kubectlexposedeploymentnginx-app--name=nginx-web-svc--typeNodePort--port80--target-port80$kubectldescribesvcnginx-web-svc上面命令的输出:Nginx-Based-App-Kubernetes-Cluster-Debian11使用下面的curl命令通过节点端口30036访问基于nginx的应用。注意:在curl中命令,您可以使用两个工作节点中任何一个的主机名。$curlhttp://k8s-worker1:30036Access-Nginx-Based-App-via-NodePort-Kubernetes-Debian11上面的输出表明我们可以正常访问基于nginx的应用。以上是全部内容。我希望这篇文章对你有用。参考本文即可在Debian11上正常安装Kubernetes集群。