分享到:
发表于 2024-07-15 14:18:47 楼主 | |
Kubernetes,通常缩写为K8s,是一个开源的容器编排平台,旨在自动化容器化应用的部署、扩展和管理。有了Kubernetes,您可以轻松地部署、更新和扩展应用,而无需担心底层基础设施。 一个Kubernetes集群由控制平面节点(master节点)和工作节点(worker节点)组成。确保集群的高效运行和管理的顺畅进行。我们通常在工作节点上运行应用工作负载,而控制平面节点作为控制平面,用于管理集群中的工作节点和Pod。 前提条件 首先我们需要准备一台云服务器,我是在PetaExpress领了一台免费的云服务器,https://cn.petaexpress.com,文章结尾告诉你申请步骤。 在本指南中,我们使用一台控制平面节点和两台工作节点。以下是每个节点的系统要求: · 安装了最小化的Ubuntu 22.04 · 最少2GB内存或更多 · 至少2个CPU核心或2个vCPU · /var上至少有20GB的可用磁盘空间 · 具有管理员权限的Sudo用户 · 每个节点都有可以互通 · 实验设置 · 控制平面节点:172.20.0.2– k8smaster.example.net · 第一工作节点:172.20.0.3 – k8sworker1.example.net · 第二工作节点:172.20.0.4 – k8sworker2.example.net 1)设置每个节点的主机名 登录到PetaExpress控制平面节点并通过hostnamectl命令设置主机名: $ sudo hostnamectl set-hostname "k8smaster.example.net" $ exec bash 在工作节点上,运行: $ sudo hostnamectl set-hostname "k8sworker1.example.net" // 第一工作节点 $ sudo hostnamectl set-hostname "k8sworker2.example.net" // 第二工作节点 $ exec bash 在每个节点的 /etc/hosts 文件中添加以下行: 172.20.0.2 k8smaster.example.net k8smaster 172.20.0.3 k8sworker1.example.net k8sworker1 172.20.0.4 k8sworker2.example.net k8sworker2 2)禁用交换分区并添加内核参数 执行以下swapoff和sed命令以禁用交换分区。确保在所有节点上运行以下命令: $ sudo swapoff -a $ sudo sed -i '/ swap / s/^(.*)$/#1/g' /etc/fstab 在所有节点上加载以下内核模块: $ sudo tee /etc/modules-load.d/containerd.conf < overlay br_netfilter EOF $ sudo modprobe overlay $ sudo modprobe br_netfilter 为Kubernetes设置以下内核参数,运行以下tee命令: $ sudo tee /etc/sysctl.d/kubernetes.conf < net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOT 重新加载上述更改,运行: $ sudo sysctl --system 3)安装Containerd run time 在本指南中,我们使用Containerd作为Kubernetes集群的run time。因此,要安装Containerd,首先安装其依赖项: $ sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates 启用Docker仓库: $ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 现在,运行以下apt命令以安装Containerd: $ sudo apt update $ sudo apt install -y containerd.io 配置Containerd以便其使用systemd作为cgroup: $ containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1 $ sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml 重启并启用Containerd服务: $ sudo systemctl restart containerd $ sudo systemctl enable containerd 4)添加Kubernetes的Apt仓库 Kubernetes包在默认的Ubuntu 20.04包仓库中不可用。因此,我们需要添加Kubernetes仓库。运行以下命令以下载公共签名密钥: $ curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg 接下来,运行以下echo命令以添加Kubernetes apt仓库: $ echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list 5)安装Kubectl、Kubeadm和Kubelet 添加仓库后,在所有节点上安装Kubernetes组件,如kubectl、kubelet和kubeadm工具。执行以下命令: $ sudo apt update $ sudo apt install -y kubelet kubeadm kubectl $ sudo apt-mark hold kubelet kubeadm kubectl 6)在Ubuntu 22.04上安装Kubernetes集群 现在,我们已经准备好初始化Kubernetes集群。仅在控制平面节点上运行以下kubeadm命令: $ sudo apt update $ sudo apt install -y kubelet kubeadm kubectl $ sudo apt-mark hold kubelet kubeadm kubectl 上述命令的输出: 初始化完成后,您将看到一条包含如何将工作节点加入集群的指令的信息。请记录下kubeadm join命令以供将来参考。 因此,要开始与集群交互,请在控制平面节点上运行以下命令: $ mkdir -p $HOME/.kube $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ sudo chown $(id -u):$(id -g) $HOME/.kube/config 接下来,尝试运行以下kubectl命令以查看集群和节点状态: $ kubectl cluster-info $ kubectl get nodes 输出: 7)将工作节点加入集群 在每个工作节点上,使用您在第6步中初始化控制平面节点后记下的kubeadm join命令。命令应类似于: kubeadm join k8smaster.example.net:6443 --token af4qe1.4mn5nt3v5vk0oai5 --discovery-token-ca-cert-hash sha256:c62c1826f8188f0fab5b4de07c76c41b46b5ed51cd369bdd998788ed0ade957d 来自两个工作节点的输出: 上述工作节点的输出确认了这两个节点已加入集群。使用kubectl命令从控制平面节点检查节点状态: $ kubectl get nodes 命令在工作节点加入后的输出: 正如我们所见,节点状态是'NotReady',因此为了使其激活,我们必须安装CNI(容器网络接口)或网络插件,如Calico、Flannel和Weave-net。 8)安装Calico网络插件 需要一个网络插件来启用集群中Pod之间的通信。在控制平面节点上运行以下kubectl命令以安装Calico网络插件: $ kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/calico.yaml 上述命令的输出如下所示: 验证kube-system命名空间中Pod的状态: $ kubectl get pods -n kube-system 输出: 完美,检查节点状态: $ kubectl get nodes Calico安装后节点的状态: 现在,我们可以说我们的Kubernetes集群是功能正常的。 凭此文章可以去PetaExpress发工单可以搞一台2核2G的免费云服务器/月 PetaExpress 奖品的申领步骤:注册→登录→发工单 回复“文章网址+文章标题+申请奖励” |
|
楼主热贴
个性签名:无
|
针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员 、 查看帮助 或 给我提意见