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;手…

费马点猜想,求解,如何用java编写?

“费马点”是指位于三角形内且到三角形三个顶点距离之和最短的点。这个点与三角形三顶点连线构成的三个钝角都相等且为 120。注意&#xff0c;这不是“费马大定理”。 package com.ai157.aigc.controller.test; import javafx.application.Application; import javafx.scene.G…

一站式天气预报解决方案,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技术的辉煌篇章便已…

7月强化|跟武忠祥,写严选题还是880题

严选题和武老师的高数强化讲义是一套的&#xff0c;做的时候可以很明显感觉到&#xff0c;严选题上面的题跟讲义也是对应上的。如果大家要选择严选题&#xff0c;那么建议搭配武忠祥老师的强化课和强化讲义一起使用。&#x1f60e; 我当时强化阶段也是跟武老师的强化课&#xf…

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

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

AOP在业务中的简单使用

背景 业务组有一些给开发用的后门接口&#xff0c;为了做到调用溯源&#xff0c;业务组最近需要记录所有接口的访问记录&#xff0c;暂时只需要记录接口的响应结果&#xff0c;如果调用失败&#xff0c;则记录异常信息。由于后门接口较多以及只是业务组内部轻度使用&#xff0…

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…

黑马苍穹外卖技术亮点 详情

1.使用工厂模式和策略模式实现布隆过滤器解决缓存穿透问题 Bitmap Bitmap是一种数据结构&#xff0c;它使用位图来表示数据。在处理大量数据时&#xff0c;Bitmap可以通过将每个数据元素映射到一个位&#xff0c;然后使用位运算来对数据进行操作。 通过使用Bitmap&#xff0c…

C++期末整理

课堂笔记 构造与析构 #include <iosteam> #include <cstring> using namespace std;struct Date {int y, m, d;void setDate(int, int, int);Date(int yy, int mm, int dd) {y yy, m mm, d dd;} };class Student { private:char* name;Date birthday; public:…

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

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

RTL8211FSI PHY电路设计

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

leetcode 152. 乘积最大子数组「贪心」「动态规划」

152. 乘积最大子数组 题目描述&#xff1a; 给你一个整数数组nums&#xff0c;请你找出数组中乘积最大的非空连续子数组&#xff0c;并返回该子数组所对应的乘积 思路1&#xff1a;贪心 由于 n u m s [ i ] nums[i] nums[i]都是整数&#xff0c;所以多乘一些数肯定不会让绝…

Java 方法中循环调用具有事务的方法

在Java中&#xff0c;循环调用一个具有事务的方法时&#xff0c;需要特别注意事务的边界和管理。通常&#xff0c;事务的边界是由框架&#xff08;如Spring&#xff09;来控制的&#xff0c;确保方法执行时数据的完整性和一致性。然而&#xff0c;在循环中调用事务方法时&#…

RAG:本地部署Langchain-Ollma(Windows)

RAG&#xff1a;本地部署Langchain&#x1f99c;&#x1f517;-Ollma&#x1f42b;(Windows) RAG&#xff0c;即“Retrieval Augmented Generation”&#xff08;检索增强生成&#xff09;&#xff0c;是一种结合了检索和生成技术的自然语言处理模型。它主要用于文本生成任务&…

对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;单位立方…

情绪识别反馈训练系统

系统应用简介 情绪识别检测训练系统可以通过语音、实时面部表情、静态情绪图片智能检测使用者的情绪&#xff0c;对异常情绪进行预警&#xff0c;以达到及时明晰情绪状态并辅助缓解负性情绪的目的。 应用范围&#xff1a;适用于年满足12周岁及以上人群。 二、系统基本原理 …

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

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

代码随想录算法训练营第五十九天 | 110.字符串接龙、105.有向图的完全可达性、106.岛屿的周长、复习

110.字符串接龙 题目链接&#xff1a;https://kamacoder.com/problempage.php?pid1183 文档讲解&#xff1a;https://programmercarl.com/kamacoder/0110.%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%8E%A5%E9%BE%99.html 思路 本题只需要求出最短路径的长度就可以了&#xff0c;不用找出…