在Ubuntu 22.04上搭建Kubernetes集群

ops/2024/12/14 3:09:38/

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: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:latestports:- containerPort: 80

将部署应用到你的集群:

kubectl apply -f app-deployment.yaml

监控部署并检查其状态:

kubectl get deployments
kubectl get pods

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


http://www.ppmy.cn/ops/141698.html

相关文章

基于Dockerfile的博客管理系统的容器化部署

目录 任务描述 3 1.1课题的基本内容 3 1.2 项目整体技术架构 3 1.3主要技术栈: 3 1.4 模块划分 4 1.5 容器集群化部署的任务内容 5 1.6 项目容器化部署的目的 6总体结构 7 2.1 容器角色和功能 7 2.2 容器之间的关联关系 8 2.3 数据流动示例 8 3.详细设计 9 3.1 设计…

CLIP论文提炼与代码实战

今天和大家分享一篇多模态的经典论文,大名鼎鼎的CLIP:Learning Transferable Visual Models From Natural Language Supervision[pdf] 文章目录 一、论文提炼二、论文疑问三、代码演示CodeDemo 一、论文提炼 Source(来源): ICML2…

VS2019 + Linux 跨平台开发中的 sqlite3 数据库环境配置

Visual Studio 2019 + Linux 跨平台开发中的 sqlite3 数据库环境配置 参考文章链接:Sqlite3环境配置(Windows和Linux) 源码资源下载:SQLite Download Page把源码.tar.gz包复制到Ubuntu下(/opt/Sqlite3/),并新建一个文件夹(/root/sqlite3_build)作为等会配置输出的文件…

力扣题目 - 2931.购买物品的最大开销

题目 还需要你前往力扣官网查看详细的题目要求 地址 思路 这边需要你去力扣官网详细查看题目看了题目提供的示例 已经有了解法, 先把values转成1维数组,排序之后进行累加即可 代码 var maxSpending function (values) {let list values.flat();list.sort((a, b) > a - …

JAVA数据结构

1.数组 (Array): 固定大小的容器,用于存储相同类型的元素,数组在内存中是连续存储的,支持通过索引快 速访问元素。 int[] numbers = new int[10]; numbers[0] = 1;2.Java Collections Framework (JCF) JCF提供了一组接口和类用于管理和操作集合(如列表,集合,…

Docker 学习总结(84)—— Docker 常用运维命令

版本与信息查询 docker --version:查看安装的Docker版本。 docker info:获取Docker系统的详细配置信息。 镜像管理 docker images:列出本地所有镜像。 docker search IMAGE_NAME:搜索Docker Hub上的镜像。 docker pull IMAGE_NAME[:TAG]:从仓库下载指定镜像。 docker rmi …

网络知识:IP数据报知识详解

目录 一、IP数据报概念 二、IPV4数据报报头组成 三、IPV6数据报报头组成 今天给大家分享IP数据库相关的知识,希望对大家进一步了解IP协议提供一些帮助! 一、IP数据报概念 TCP/IP协议的网际层接收到传输层传递过来的数据单元,封装成向下(OSI模型的数据链路层、TCP/IP协…

Spring Security OAuth2内置的服务提供者

Spring Security 5.7.5版本,接入OAuth2登录后需要在配置文件中进行相关配置。如果是框架内置的服务提供者,则配置文件中只需要配置client-id, client-secret即可。那么框架内置了哪些服务提供者呢? 直接上源码: GOOGLE {Overridep…