Ubuntu 24.04 上安装 Kubernetes,超级详细的教程!

How to Install Kubernetes on Ubuntu 24.04

Kubernetes 是一个免费的开源容器编排工具,它允许基于容器的应用程序的自动化部署、扩展和管理。

我们将介绍如何使用 Kubeadm 逐步在 Ubuntu 24.04 上安装 Kubernetes

此次演示中,我们将使用以下三个 Ubuntu 24.04 实例

  • Instance 1 : Master Node (k8s-master-noble 192.168.1.120)
  • Instance 2 : Worker Node (k8s-worker01-noble 192.168.1.121)
  • Instance 3 : Worker Node (k8s-worker02-noble 192.168.1.122)

1) 设置 Host Name 更新 hosts 文件

登录到各个主机,并使用 hostnamectl 命令设置它们各自的主机名。

$ sudo hostnamectl set-hostname "k8s-master-noble"      // Master Node
$ sudo hostnamectl set-hostname "k8s-worker01-noble"    // Worker Node 1
$ sudo hostnamectl set-hostname "k8s-worker02-noble"    // Worker Node 2

将以下行添加到每个实例上的 /etc/hosts 文件中。

192.168.1.120  k8s-master-noble
192.168.1.121  k8s-worker01-noble
192.168.1.122  k8s-worker02-noble

2) 禁用 swap,加载内核模块

在每个实例上运行以下命令来禁用交换空间,这样 Kubernetes 集群才能顺利工作。

$ sudo swapoff -a
$ sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

使用 modprobe 命令加载以下内核模块。

$ sudo modprobe overlay
$ sudo modprobe br_netfilter

要永久加载这些模块,请创建包含以下内容的文件。

$ sudo tee /etc/modules-load.d/k8s.conf <<EOF
overlay
br_netfilter
EOF

接下来,添加像 IP 转发这样的内核参数。创建一个文件,并使用 sysctl 命令加载参数。

$ sudo tee /etc/sysctl.d/kubernetes.conf <<EOT
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

Containerd 为 Kubernetes 提供了容器运行时,在所有三个实例上安装 containerd

首先,安装容器依赖项

$ sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates

接下来,使用以下命令添加 containerd 存储库。

$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/containerd.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 containerd.io -y

接下来,配置 containerd,使其开始使用 SystemdCgroup 运行下面的命令。

$ 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

4) 添加 Kubernetes Package Repository

Kubernetes 软件包在 Ubuntu 24.04 的默认包存储库中不可用,所以要先添加它的存储库。在每个实例上运行这些步骤。

注意: 在撰写本文时,Kubernetes 的最新版本是 1.30 所以你可以根据自己的需求选择版本。

使用 curl 命令下载 Kubernetes 包存储库的公共签名密钥。

$ curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/k8s.gpg

接下来,通过运行以下命令添加 Kubernetes 存储库。

$ echo 'deb [signed-by=/etc/apt/keyrings/k8s.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/k8s.list

5) 安装 Kubernetes 部件 (Kubeadm, kubelet & kubectl)

安装 Kubernetes 组件,在所有实例上运行以下 apt 命令。

$ sudo apt update
$ sudo apt install kubelet kubeadm kubectl -y

6) 安装 Kubernetes

所有的先决条件都满足了,我们可以开始安装 Kubernetes 了。

在 master 节点上执行 Kubeadm 命令,仅用于初始化 Kubernetes 集群。

$ sudo kubeadm init --control-plane-endpoint=k8s-master-noble

该命令将为 Kubernetes 集群拉取所需的镜像。成功执行此命令后,我们将得到如下所示的输出。

Install Kubernetes on Ubuntu 24.04

在上面的输出中,我们将获得一系列命令。例如:如何与 kubernetes 群集互动,如何添加 worker 节点到此群集。

在 master 节点上运行以下命令。

$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

接下来,从输出中复制命令以连接 woker 节点,在两个 woker 节点上运行它。

$ sudo kubeadm join k8s-master-noble:6443 --token p3sdpk.zn0s060af0089ioa \--discovery-token-ca-cert-hash sha256:afa3d90b6cd8c5889fca12ea3e9b50659b933ab6c808e2906fd63bde5e695bfd

第一个 worker 节点的输出

Join-Worker01-Node-Kubernetes-Cluster-Ubuntu-24-04

第二个 worker 节点的输出

Join-Worker02-Node-Kubernetes-Cluster-Ubuntu-24-04

Now head back to the master node and run kubectl get nodes command to verify the status of worker nodes.

回到 master 节点,运行 kubectl get nodes 命令来验证 worker 节点的状态。

$ kubectl get nodes

Worker-Nodes-Status-Post-Join-Kuberntes-Cluster

输出确认 worker 节点已加入集群,但状态为 NotReady。我们需要在这个集群上安装 Network Add-on Plugin,例如:calico

7) 安装 Calico Network Add-on Plugin

仅在 master 节点上运行如下的命令

$ kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/tigera-operator.yaml

Install-Calico-Network-Addon-Plugin-Kuberntes

calico 安装成功后,节点状态会在 1 ~ 2 分钟后变为 Ready

$ kubectl get pods -n kube-system

Calico-Pods-Deployment-Status-Kubernetes

$ kubectl get nodes

Nodes-Status-Post-Installing-Calico-Kubernetes

上面的输出确认所有节点处于 Ready 状态。

8) 测试 Kubernetes Installation

为了测试 Kubernetes 安装,我们将创建基于 nginx 的部署,副本计数为 2,在 master 节点上执行下面的kubectl 命令。

$ kubectl create ns demo-app
$ kubectl create deployment nginx-app --image nginx --replicas 2 --namespace demo-app
$ kubectl get deployment -n demo-app
$ kubectl get pods -n demo-app

Nginx-Based-Deployment-Kubernetes-Ubuntu-24-04

接下来,使用 NodePort 类型公开此部署,运行如下命令

$ kubectl expose deployment nginx-app -n demo-app --type NodePort --port 80
$ kubectl get svc -n demo-app

Exposing-Deployment-Kubernetes-Ubuntu-24-04

现在,尝试使用 nodeport 访问您的应用程序,如下所示

$ curl http://<Any-worker-IP>:30336

Access-Nginx-App-Using-NodePort-Ubuntu-24-04

很好,我们可以使用 nodeport 在Kubernetes 集群之外访问基于 nginx 的应用程序,这确认 Kubernetes 安装成功。

我的开源项目

酷瓜云课堂-开源知识付费解决方案

  • course-tencent-cloud(酷瓜云课堂 - gitee仓库)
  • course-tencent-cloud(酷瓜云课堂 - github仓库)

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

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

相关文章

Studying-代码随想录训练营day30| 452.用最少数量的箭引爆气球、435.无重叠区间、763.划分字母区间

第30天&#xff0c;贪心part04&#xff0c;加油&#xff0c;编程语言&#xff1a;C 目录 452.用最少数量的箭引爆气球 435.无重叠区间 763.划分字母区间 总结 452.用最少数量的箭引爆气球 文档讲解&#xff1a;代码随想录用最少数量的箭引爆气球 视频讲解&#xff1a;手…

一站式天气预报解决方案,API接口轻松接入

天气对我们的日常生活有着重要的影响&#xff0c;无论是出门旅行还是安排工作&#xff0c;都需要提前了解天气情况。WAPI平台提供了一站式天气预报解决方案&#xff0c;通过简单的API接口&#xff0c;轻松获取各类天气预报数据。 这个API接口提供了丰富的天气预报信息&#xf…

AI Agent技术的最新进展与改变世界的典型项目巡礼

AI Agent 探索 1. AI Agent 技术发展以及典型项目 1.0 前 AI Agent 时代 在学术探索的浩瀚星空中&#xff0c;机器人技术领域的璀璨明珠莫过于Agent技术的深入研究&#xff0c;这一领域历来是创新与突破的温床。回溯至大模型浪潮兴起之前&#xff0c;Agent技术的辉煌篇章便已…

欧洲智慧能源展揭幕,海博思创闪耀登场展示储能创新

近日&#xff0c;备受瞩目的欧洲智慧能源展&#xff08;The Smarter E Europe&#xff09;盛大开幕&#xff0c;吸引了全球能源行业的目光。在这场国际性的盛会中&#xff0c;中国储能行业的领军企业海博思创凭借卓越的技术实力和创新的解决方案&#xff0c;成为展会上一颗耀眼…

vim未找到命令,且yum install vim安装vim失败

vim未找到命令&#xff0c;且yum安装vim失败 1、wget更新yum云资源&#xff0c;本次更新为华为云镜像资源 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.huaweicloud.com/repository/conf/CentOS-7-anon.repowget报未找到命令&#xff0c;请查看文章Linux wget…

视频号矩阵源码:构建短视频生态的基石

在数字化时代&#xff0c;视频内容已成为连接品牌与消费者的重要桥梁。视频号矩阵源码&#xff0c;作为短视频营销自动化的创新引擎&#xff0c;正在帮助内容创作者和营销团队以前所未有的效率和智能&#xff0c;管理和扩展他们的视频内容。本文将深入探讨视频号矩阵源码的核心…

RTL8211FSI PHY电路设计

文章目录 硬件设计引脚功能框图说明PHYADDRPageLED 模式自动协商/速度/全半双工模式Soft Reset上电顺序 原理图设计参考 软件控制&#xff08;FPGA&#xff09;硬件调试 硬件设计 引脚 笔者前代数字采集板采用的 PHY 芯片是博通 Boardcom 的 B50610&#xff0c;其仅支持 0 ∼…

对SRS媒体服务器进行漏洞扫描时,SRS的API模块会出现漏洞,如何修补这些漏洞的简单方法

目录 一、引言 1、srs介绍 2、媒体流介绍 3、应用场景 二、SRS的http_api介绍、及漏洞 1、概述 2、http_api模块的作用 &#xff08;1&#xff09;提供HTTP API服务 &#xff08;2&#xff09;管理和监控SRS服务器 &#xff08;3&#xff09;自定义开发 三、漏洞扫描…

单位立方体各个面上的法向量,向量场以及每个面上的通量

单位立方体各个面上的法向量&#xff0c;向量场 F ( x , y , z ) \mathbf{F} (x, y, z) F(x,y,z) 以及每个面上的通量 flyfish 假设我们有一个单位立方体&#xff0c;向量场 F ( x , y , z ) \mathbf{F} (x, y, z) F(x,y,z) 在该立方体上。 法向量 &#xff1a;单位立方…

前端面试题14(贝塞尔曲线)

贝塞尔曲线在前端开发中经常用于创建平滑的动画路径或绘制复杂的矢量图形。贝塞尔曲线可以是一次、二次或三次的&#xff0c;其中三次贝塞尔曲线是最常见的&#xff0c;因为它提供了足够的灵活性来创建各种形状&#xff0c;同时保持计算上的可行性。 下面我将解释三次贝塞尔曲…

LabVIEW幅频特性测试系统

使用LabVIEW软件开发的幅频特性测试系统。该系统整合了Agilent 83732B信号源与Agilent 8563EC频谱仪&#xff0c;通过LabVIEW编程实现自动控制和数据处理&#xff0c;提供了成本效益高、操作简便的解决方案&#xff0c;有效替代了昂贵的专用仪器&#xff0c;提高了测试效率和设…

一款EF Core下高性能、轻量级针对分表分库读写分离的解决方案

ShardingCore项目介绍 ShardingCore是一款开源、简单易用、高性能、普适性&#xff0c;针对EF Core生态下的分表分库的扩展解决方案&#xff0c;支持EF Core2的所有版本&#xff0c;支持EF Core2的所有数据库、支持自定义路由、动态路由、高性能分页、读写分离的一款EF Core拓展…

华为云生态和快速入门

华为云生态 新技术催生新物种&#xff0c;新物种推动新生态 数字技术催生各类运营商去重塑并颠覆各行业的商业模式 从业务层面看&#xff0c;企业始终如一的目标是业务增长和持续盈利&#xff0c;围绕这些目标衍生出提质、增效、降本、安全、创新和合规的业务诉求&#xff0c…

本迪戈和阿德莱德银行与MongoDB合作, 利用生成式AI对银行核心技术进行现代化改造

MongoDB公司&#xff08;纳斯达克股票代码&#xff1a;MDB&#xff09;近日宣布与本迪戈和阿德莱德银行 (Bendigo and Adelaide Bank&#xff0c;澳大利亚证券交易所股票代码&#xff1a;BEN&#xff09;建立合作伙伴关系。 本迪戈和阿德莱德银行将使用MongoDB Atlas对其银行核…

【PTGui、Pano2VR6、UE4】VR全景拍摄及漫游交互制作操作实例(更新中)

一、基本思路 首先进行VR全景拍摄&#xff0c;获取高质量的全景图像&#xff1b;然后使用PTGui进行图像拼接&#xff0c;确保图像的连续性与准确性&#xff1b;接着利用Pano2VR6进行VR漫游的制作&#xff0c;添加交互元素与多媒体内容&#xff1b;最后进行作品的调试与优化&am…

条件筛选1-4题(30 天 Pandas 挑战)

条件筛选 1. 相关知识点1.1 query条件或查询1.2 query条件与查询1.3 存在查询及列名修改1.4 条件查询&#xff0c;相等1.5 删除重复值1.6 排序 2. 题目2.1 大的国家2.2 可回收且低脂的产品2.3 从不订购的客户2.4 文章浏览 I 1. 相关知识点 1.1 query条件或查询 # |或 world.q…

CUDA编程基础

文章目录 1、GPU介绍2、CUDA程序进行编译3、CUDA线程模型3.1、一维网格一维线程块3.2、二维网格二维线程块3.3、三维网格三维线程块3.3、不同组合形式 4、nvcc编译流程5、CUDA程序基本架构6、错误检测函数6.1、运行时API错误代码6.2、检查核函数 7、CUDA记时7.1、记时代码7.2、…

Google Earth Engine(GEE)——控制台ui.Textbox复制你想要的textbox

结果 函数: ui.Textbox(placeholder, value, onChange, disabled, style) A textbox that enables the user to input text information. Arguments: placeholder (String, optional): The placeholder text to display when the textbox is empty. Defaults to none. …

VBA语言専攻T3学员领取资料通知0706

T3学员领取资料通知0706 各位学员∶本周MF系列VBA技术资料增加641-645讲&#xff0c;T3学员看到通知后请免费领取,领取时间7月5日晚上19:00-7月6日晚上19:00。本次增加内容&#xff1a; MF641:前个窗体组合框选项联动下个组合框 MF642:工作表中数据选项联动下个数据验证 MF…

技术驱动旅游创新!深度解析景区导览小程序的地图渲染与AR导航技术

随着现代生活节奏的加快&#xff0c;人们在外出旅游时更倾向于轻便出行&#xff0c;携带导览地图已成为过去。然而&#xff0c;面对景区广阔的面积和众多景点&#xff0c;游客常常感到迷茫&#xff0c;难以快速定位到自己所需的地点。景区导览小程序让游客只需搜索景区名称&…