K8S教程:如何使用Kubeadm命令在PetaExpress Ubuntu系统上安装Kubernetes集群

  

  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 奖品的申领步骤:注册→登录→发工单 回复“文章网址+文章标题+申请奖励”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/744056.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Panda数据处理

一、 Pandas简介 Pandas,python+data+analysis的组合缩写,是python中基于numpy和matplotlib第三方数据分析库,与后者共同构成python数据分析基础工具包,享有数据三剑客之名。正因为pandas是在numpy基础上实现的,其核心数据结构与numpy的ndarray十分相似,但pandas与numpy的…

1.基础知识

单片机:Single-Chip Microcomputer,单片微型计算机,是一种集成电路芯片 CPU:CPU内存:SRAM硬盘:FLASH主板:外设 仪器仪表:电源/示波器/焊台家用电器:空调/冰箱/洗衣机工业控制:机器人/PLC/电梯汽车电子:GPS/ABS/胎压监测 :数据与程序储存在同一存储器,分时复用Core…

线程池遇到父子任务,有大坑,要注意!

你好呀,我是歪歪。 最近在使用线程池的时候踩了一个坑,给你分享一下。 在实际业务场景下,涉及到业务代码和不同的微服务,导致问题有点难以定位,但是最终分析出原因之后,发现可以用一个很简单的例子来演示。 所以歪师傅这次先用 Demo 说问题,再说场景,方便吸收。Demo 老…

线性规划模型复习总结

线性规划(Linear Programming, LP)是一种数学优化方法,用于在给定约束条件下最大化或最小化目标函数。线性规划广泛应用于经济、工程、管理等领域,通过建立数学模型,帮助决策者找到最优解决方案。 一、线性规划数学模型 1.1 模型三要素目标函数(Objective Function) 目标…

nginx ./nginx -s reload 工作进程pid与实际不一致导致平滑重启报错

某次修改nginx配置后使用 ./nginx -s reload 重启nginx, 结果报错, 如图所示, 去kill工作进程的时候显示找不到该进程原因是位于nginx/logs下的 nginx.pid 中的pid和实际不一致造成的 nginx.pid 文件是 Nginx web 服务器在启动时创建的一个进程标识符 (PID) 文件。这个文件包含…

第七天学习笔记(经验测试,白盒测试)

经验测试法 错误推测法 基于经验的测试技术之错误推测法 错误推测法也叫错误猜测法,就是根据经验猜想,已有的缺陷,测试经验和失败数据等可能有什么问题并依此设计测试用例.异常分析法 基于经验的测试技术之异常分析法 系统异常分析法就是针对系统有可能存在的异常操作、软硬…

SQL Server sa账号被锁定

SQL Server的sa账号老是被锁(登录已锁定)问题:最近sa登录老是被锁定,去查看数据库->安全性->sa账号右键属性,在状态选项卡中找到sql server 身份验证 ,发现“登录已锁定”被勾选了;把这个勾选去掉,然后提示必须修改密码。“登录已锁定”的勾选去掉并修改密码后又能…

B+树要点梳理

B+树重要操作 中间节点中间节点的key,与其对应的指针的原则是,小于key的元素在其指针指向的节点中 中间节点的key可以看成是右斜着排放的,即小于等于key的节点由key对应的指针指定,最有一个指针指向大于最右侧key的节点分裂当中间节点数量满了时,进行分裂,新生成一个相邻…

AI学习 | 概念解释 + Scikit-learn 的简单情况

一些机器学习概念解释点击查看代码 * 机器学习:是AI的一个子集,不用人类显式编程,让计算机通过算法自行学习和改进 * 监督学习:有数据、有标签,告诉机器什么是什么,让机器来学习输入和输出的映射关系。比如:分类和回归(预测)* 非监督学习:有数据没有标签,让机器自己…

LeetCode 1530. Number of Good Leaf Nodes Pairs

原题链接在这里:https://leetcode.com/problems/number-of-good-leaf-nodes-pairs/description/ 题目: You are given the root of a binary tree and an integer distance. A pair of two different leaf nodes of a binary tree is said to be good if the length of the s…

Windows节点加入K8S集群(K8S搭建Linux和Window混合集群)

说明:K8S多数情况用于linux系统的集群,目前很少人实践linux 和 windows 的混合集群。linux 和 windows 的K8S混合集群,是以linux 为Master节点,Windows 为 Node节点的。本示例linux 采用centos7.6,windows 采用 windows server 2019(均为虚拟机)。 一、前提准备1.熟悉li…

[笔记]快速傅里叶变换(FFT)

模板题:P3803 【模板】多项式乘法(FFT) 快速傅里叶变换(Fast Fourier Transform,FFT)在算法竞赛中主要用于求卷积,或者说多项式乘法。如果我们枚举两数的各系数相乘,时间复杂度是\(O(n^2)\),而FFT可以将这一过程优化到\(O(n\log n)\)。 流程 整个FFT算法分\(3\)个过程:…