在Ubuntu 22.04上搭建Kubernetes集群

news2024/12/14 1:26:27

Kubernetes 简介

什么是 Kubernetes?

Kubernetes(常简称为 K8s)是一个强大的开源平台,用于管理容器化应用程序的部署、扩展和运行。它最初由 Google 设计并捐赠给 Cloud Native Computing Foundation(CNCF)来维护,现在已经成为容器编排领域的事实标准。

Kubernetes 的核心特性

  • 服务发现和负载均衡:Kubernetes 可以使用 DNS 名称或自己的 IP 地址暴露容器,并在容器之间负载均衡流量。
  • 存储编排:自动挂载所选的存储系统,如本地磁盘、公共云提供商等。
  • 自动部署和回滚:Kubernetes 支持声明式滚动更新和回滚。
  • 自动完成装箱计算:Kubernetes 允许你指定每个容器所需 CPU 和内存(RAM),并自动完成装箱计算,以尽可能高效地利用集群资源。
  • 自我修复:Kubernetes 重启失败的容器、替换和杀死不响应用户定义健康检查的容器,并且在一些节点失败时重新调度容器。
  • 密钥和配置管理:你可以存储和管理敏感信息,如密码、OAuth 令牌和 ssh 密钥,并通过 Kubernetes Secrets 和 ConfigMaps 传递给容器。
  • 扩展性:Kubernetes 的 API 允许你开发自己的扩展和服务,添加插件和集成第三方工具。

接下来,我将一步一步教大家如何进行安装和部署!!

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品云服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

https://img-blog.csdnimg.cn/img_convert/4c16271f125adea69da6ed9e7b2a4226.png

  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

https://img-blog.csdnimg.cn/img_convert/414570cd3da48d4cc4bf51489992000b.png

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。

https://img-blog.csdnimg.cn/img_convert/c8afbeb764459a37a8451dd2ed8eeff1.png

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。

https://img-blog.csdnimg.cn/img_convert/ea5814f1d1068ca9fa2bb94631cfbdf1.png

  • 到此为止,我们的云服务器就远程连接上了。

开始部署

1 安装Docker

Kubernetes依赖于容器化技术,Docker是最受欢迎的容器化平台。让我们从在你的Ubuntu 22.04机器上安装Docker开始。

sudo apt update
sudo apt install docker.io

启动并启用Docker服务:

sudo systemctl start docker
sudo systemctl enable docker

验证安装是否成功,运行测试容器:

sudo docker run hello-world

2 在Ubuntu 22.04上安装Kubernetes

安装并配置Docker后,我们可以继续在Ubuntu 22.04上安装Kubernetes。Kubernetes使用多个组件来管理和编排容器。

添加Kubernetes的Ubuntu 22.04仓库并导入仓库的GPG密钥:

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/kubernetes-xenial.gpg

添加Kubernetes仓库:

sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"

安装Kubernetes的必要包:

sudo apt update
sudo apt install kubeadm kubelet kubectl
sudo apt-mark hold kubelet kubeadm kubectl

使用kubeadm工具初始化Ubuntu 22.04上的Kubernetes集群:

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

配置你的用户账户,以非root用户身份访问集群:

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

3 配置Kubernetes

成功在Ubuntu 22.04上安装Kubernetes后,是时候根据你的需求进行配置了。以下是一些重要的配置:

  1. 设置集群范围的DNS:Kubernetes使用CoreDNS进行集群DNS管理。按照官方Kubernetes文档进行设置。
  2. 使用SSL/TLS证书保护你的集群:通过配置SSL/TLS证书来保护你的集群。参考Kubernetes文档获取详细指导。
  3. 管理资源分配和限制:为你的应用程序定义资源请求和限制,以确保最佳性能。在你的pod配置中使用资源规范,如CPU和内存限制。
  4. 配置持久存储:通过创建持久卷和卷声明,为你的应用程序启用持久存储。这允许数据即使在pod重新启动或重新调度后也能持久保存。
  5. 启用集群的监控和日志记录:安装监控和日志记录解决方案,如Prometheus和Elasticsearch,以深入了解集群的健康状况并有效排除问题。

4 在Kubernetes上部署应用程序

Kubernetes在Ubuntu 22.04上运行后,你现在可以在集群上部署应用程序。以下是一个简化的示例,展示了如何部署一个示例应用程序:

创建一个部署YAML文件(例如app-deployment.yaml),包含你应用程序所需的规范。这是一个Nginx应用程序的示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          ports:
            - containerPort: 80

将部署应用到你的集群:

kubectl apply -f app-deployment.yaml

监控部署并检查其状态:

kubectl get deployments
kubectl get pods

相关链接
雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site

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

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

相关文章

【ubuntu】将Chroma配置为LINUX服务

Chroma是一个轻量级向量数据库。既然是数据库,那么我希望它是能够长时间运行。最直接的方式是配置为service服务。 可惜官方没有去提供配置为服务的办法,而鄙人对docker又不是特别感冒。所以自己研究了下chroma配置为服务的方式。 系统:ubu…

【CSS in Depth 2 精译_071】11.4 思考字体颜色的对比效果 + 11.5 本章小结

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第四部分 视觉增强技术 ✔️【第 11 章 颜色与对比】 ✔️ 11.1 通过对比进行交流 11.1.1 模式的建立11.1.2 还原设计稿 11.2 颜色的定义 11.2.1 色域与色彩空间11.2.2 CSS 颜色表示法 11.2.2.1 RGB…

PHP:连接Grid++Report模板,实现循环打印

实现效果 模板 代码 cycle.php <html xmlns"http://www.w3.org/1999/xhtml"><head><title>Web报表(B/S报表)演示 - 不用报表插件展现报表而是直接输出</title><meta http-equiv"Content-Type" content"text/html; chars…

Ubuntu22.04安装docker desktop遇到的bug

1. 确认已启用 KVM 虚拟化 如果加载了模块&#xff0c;输出应该如下图。说明 Intel CPU 的 KVM 模块已开启。 否则在VMware开启宿主机虚拟化功能&#xff1a; 2. 下一步操作&#xff1a; Ubuntu | Docker Docs 3. 启动Docker桌面后发现账户登陆不上去&#xff1a; Sign in | …

STM32F103单片机HAL库串口通信卡死问题解决方法

在上篇文章 STM32F103单片机使用STM32CubeMX创建IAR串口工程 中分享了使用cubeMX直接生成串口代码的方法&#xff0c;在测试的过程中无意间发现&#xff0c;串口会出现卡死的问题。 当串口一次性发送十几个数据的时候&#xff0c;串口感觉像卡死了一样&#xff0c;不再接收数据…

qt QCommandLineParser详解

1、概述 QCommandLineParser是Qt框架中提供的一个类&#xff0c;专门用于解析命令行参数。它简化了命令行参数的处理过程&#xff0c;使得开发者能够轻松定义、解析和验证命令行选项和参数。QCommandLineParser适用于需要从命令行获取输入的控制台应用程序&#xff0c;以及需要…

默认插槽,具名插槽(v-slot:具名,name=‘ ‘),作用域插槽

在App.vue父组件需要两次调用MyDialog子组件&#xff0c;但是想要两个子组件中略有不同。 1.首先在父组件中引入子组件&#xff0c;定义子组件&#xff0c;展示组件标签 2.不一样的地方在子组件中放<slot>标签占位 3.在父组件中的子组件标签中写上不一样的内容&#xff0…

快速上手Neo4j图关系数据库

快速上手Neo4j图关系数据库 参考视频&#xff1a; 【IT老齐589】快速上手Neo4j网状关系图库 1 Neo4j简介 Neo4j是一个图数据库&#xff0c;是知识图谱的基础 在Neo4j中&#xff0c;数据的基本构建块包括&#xff1a; 节点(Nodes)关系(Relationships)属性(Properties)标签(Lab…

远程桌面防护的几种方式及优缺点分析

远程桌面登录是管理服务器最主要的方式&#xff0c;于是很多不法分子打起了远程桌面的歪心思。他们采用暴力破解或撞库的方式破解系统密码&#xff0c;悄悄潜入服务器而管理员不自知。 同时远程桌面服务中的远程代码执行漏洞也严重威胁着服务器的安全&#xff0c;攻击者可以利…

【机器学习】基础知识:拟合度(Goodness of Fit)

拟合度概念及意义 拟合度&#xff08;Goodness of Fit&#xff09;是衡量统计模型对数据解释能力的指标&#xff0c;用于评价模型对观测数据的拟合效果。在回归分析、分类模型或其他预测模型中&#xff0c;拟合度是模型性能的重要衡量标准。 1. 拟合度的作用 拟合度的主要作用…

康耐视智能相机(Insight)通过ModbusTCP发送字符串到倍福(BECKHOFF)PLC中

文章目录 1.背景2.分析3.实现3.1.PLC的ModbusTCP_Server3.1.1.安装TF6250-Modbus-TCP3.1.2.PLC设置 3.2.智能相机的ModbusTCP_Client3.2.1.了解ModbusTCP的协议3.2.2.根据协议写代码3.2.2.1.纯函数代码3.2.2.2.脚本代码 3.2.3.非脚本处理时的代码逻辑图3.2.4.关于代码的问题及解…

【设计模式系列】策略模式(二十四)

一、什么是策略模式 策略模式&#xff08;Strategy Pattern&#xff09;是软件设计模式中的一种行为型模式。它定义了一系列算法&#xff0c;并将每一个算法封装起来&#xff0c;使它们可以互换使用&#xff0c;算法的变化不会影响使用算法的用户。策略模式让算法的变化独立于…

Spark SQL 执行计划解析源码分析

本文用于记录Spark SQL执行计划解析的源码分析。文中仅对关键要点进行提及&#xff0c;无法面面具到&#xff0c;仅描述大体的框架。 Spark的Client有很多种&#xff0c;spark-sql&#xff0c;pyspark&#xff0c;spark- submit&#xff0c;R等各种提交方式&#xff0c;这里以…

(2)Spring Security - 了解UserDetailsService

目录 1.认识UserDetailsService1.1.认识UserDetails1.2.UserDetailsService的默认实现 -- InMemoryUserDetailsManager 2.用户信息存储在MySQL数据库中2.1.添加依赖2.2.配置MySQL和Mybatis2.3.在数据库中添加用户信息2.4.添加数据库实体类2.5.编写Mybatis代码2.6.实现UserDetai…

智能设备安全-固件逆向分析

固件逆向分析实验报告-20241022 使用固件常用逆向分析工具&#xff0c;对提供的固件进行文件系统提取&#xff0c;并记录逆向分析实验过程&#xff0c;提交实验报告&#xff08;报告要求图文并茂&#xff0c;对涉及到的关键步骤附截图说明&#xff09;。具体任务如下&#xff1…

图形编辑器基于Paper.js教程17:图像转gcode前的处理,灰度,黑白,抖动

好久没有正经写博客了&#xff0c;前一段时间一直在备考中级项目管理&#xff0c;再加上项目开发只有自己一个人&#xff0c;每天忙的飞起。有闲暇时间也不想写&#xff0c;其中一部分原因也是因为很多简单问题&#xff0c;AI就能回答的很好。而对复杂的问题&#xff0c;也不是…

AI大模型学习笔记|人工智能的发展历程、智能体的发展、机器学习与深度学习的基本理论

学习链接&#xff1a;冒死上传&#xff01;价值2W的大模型入门到就业教程分享给大家&#xff01;轻松打造专属大模型助手&#xff0c;—多模态、Agent、LangChain、ViT、NLP_哔哩哔哩_bilibili 百度网盘自己整理的笔记&#xff1a; 通过网盘分享的文件&#xff1a;1-人工智能的…

qt 设置系统缩放为150%,导致的文字和界面的问题

1 当我们设置好布局后&#xff0c;在100%的设置里面都是正常的&#xff0c;但是当我们修改缩放为150%后&#xff0c;字体图标&#xff0c;界面大小就出现问题了&#xff0c;这就需要我们设置一些参数。 QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);QCoreAppl…

linux-15 关于shell(十四)printenv,hash,环境变量

此前没有用过linux&#xff0c;可能有些觉得很奇怪&#xff0c;就觉得我们在这敲来敲去命令干什么&#xff1f;为什么不使用双击这种方式来操作&#xff1f;大家知道&#xff0c;在Windows里面&#xff0c;其实我们双击也无非就是告诉我们shell需要将这个命令发送在内核上启动的…

虚拟机如何使用物理机的公私钥

一、生成公私钥&#xff08;如果没有的话&#xff09; 使用如下指令生成 生成RSA公私钥 ssh-keygen 生成EdDSA公私钥 ssh-keygen -t ed25519 Windows目录 linux会直接生成在当前目录下。 二、导出 一般都是从windows系统导入到linux系统。 可以直接将公私钥文件复制到虚拟机…