当前位置: 首页 > news >正文

k8s服务搭建与实战案例

Kubernetes(K8s)作为一个开源的容器编排平台,广泛应用于现代的云原生应用架构中。以下是一些常见的 **Kubernetes 实战案例**,包括从基础部署到高级应用场景的使用。通过这些案例,可以更好地理解 K8s 的运作原理和最佳实践。

---

### 1. **部署一个简单的 Web 应用(Nginx)**
这是一个常见的入门级案例,适合刚接触 Kubernetes 的开发者。

#### 步骤:
1. **创建一个 Deployment**
   ```yaml
 

 apiVersion: apps/v1kind: Deploymentmetadata:name: nginx-deploymentspec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:latestports:- containerPort: 80


   ```

2. **创建一个 Service 来暴露应用**
   ```yaml
   

apiVersion: v1kind: Servicemetadata:name: nginx-servicespec:selector:app: nginxports:- protocol: TCPport: 80targetPort: 80type: LoadBalancer


   ```

3. **部署应用到 Kubernetes 集群**
   ```bash
 

  kubectl apply -f nginx-deployment.yamlkubectl apply -f nginx-service.yaml


   ```

4. **验证部署**
   ```bash
 

 kubectl get deploymentskubectl get podskubectl get services


   ```

通过这个案例,你可以学习如何部署一个简单的 Web 应用,如何利用 `Deployment` 和 `Service` 来实现容器管理和应用的暴露。

---

### 2. **自动扩容应用(Horizontal Pod Autoscaler)**
在生产环境中,应用的流量和负载是动态变化的,K8s 提供了 Horizontal Pod Autoscaler(HPA)来根据负载自动扩容和缩容 Pod。

#### 步骤:
1. **创建一个 Deployment(例如一个基于 CPU 使用率扩容的 Nginx 部署)**
   ```yaml
 

 apiVersion: apps/v1kind: Deploymentmetadata:name: nginx-deploymentspec:replicas: 2selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:latestresources:requests:cpu: 100mmemory: 100Milimits:cpu: 500mmemory: 500Miports:- containerPort: 80


   ```

2. **创建 HPA 对象**
   ```yaml
 

  apiVersion: autoscaling/v2kind: HorizontalPodAutoscalermetadata:name: nginx-hpaspec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: nginx-deploymentminReplicas: 2maxReplicas: 10metrics:- type: Resourceresource:name: cputarget:type: UtilizationaverageUtilization: 50


   ```

3. **部署 HPA**
   ```bash
 

  kubectl apply -f nginx-hpa.yaml


   ```

4. **监控 HPA 状态**
   ```bash
   

kubectl get hpa


   ```

通过这个案例,你可以学习如何使用 HPA 来动态扩容和缩容 Pod,确保应用在不同负载下的高可用性。

---

### 3. **基于 Helm 安装和管理应用**
Helm 是 Kubernetes 的包管理工具,可以方便地管理复杂应用的部署和版本控制。

#### 步骤:
1. **安装 Helm**
   ```bash
 

 curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash


   ```

2. **添加 Helm 仓库**
   ```bash
 

 helm repo add stable https://charts.helm.sh/stablehelm repo update


   ```

3. **使用 Helm 安装应用(例如安装 MySQL)**
   ```bash
 

 helm install my-mysql stable/mysql


   ```

4. **查看安装的应用**
   ```bash
 

 helm list


   ```

5. **删除 Helm 安装的应用**
   ```bash
 

 helm uninstall my-mysql


   ```

通过这个案例,你可以学习如何使用 Helm 来简化应用的安装、更新和管理,尤其是在多环境部署时非常有用。

---

### 4. **使用 Persistent Volumes 和 Persistent Volume Claims**
Kubernetes 提供了持久化存储(Persistent Volumes, PV)和持久化存储声明(Persistent Volume Claims, PVC),用来管理应用的持久化数据存储。

#### 步骤:
1. **创建一个 Persistent Volume(PV)**
   ```yaml
 

  apiVersion: v1kind: PersistentVolumemetadata:name: my-pvspec:capacity:storage: 1GiaccessModes:- ReadWriteOncehostPath:path: /mnt/data

2. **创建 Persistent Volume Claim(PVC)**
   ```yaml

   apiVersion: v1kind: PersistentVolumeClaimmetadata:name: my-pvcspec:resources:requests:storage: 1GiaccessModes:- ReadWriteOnce


   ```

3. **在 Pod 中使用 PVC**
   ```yaml
 

  apiVersion: v1kind: Podmetadata:name: nginx-podspec:containers:- name: nginximage: nginxvolumeMounts:- mountPath: /usr/share/nginx/htmlname: nginx-storagevolumes:- name: nginx-storagepersistentVolumeClaim:claimName: my-pvc


   ```

4. **部署应用**
   ```bash
 

  kubectl apply -f pv.yamlkubectl apply -f pvc.yamlkubectl apply -f nginx-pod.yaml


   ```

通过这个案例,你可以了解如何配置 Kubernetes 中的持久化存储,使应用能够在容器重启或迁移时保持数据。

---

### 5. **使用 Ingress 实现 HTTP 路由和负载均衡**
Ingress 允许你配置 HTTP 路由和负载均衡,能够将外部流量路由到 Kubernetes 集群内的不同服务。

#### 步骤:
1. **创建一个 Ingress Controller(例如使用 Nginx)**
   ```bash

   kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml


   ```

2. **创建一个 Deployment 和 Service(例如部署两个不同版本的 Web 应用)**
   ```yaml

   apiVersion: apps/v1kind: Deploymentmetadata:name: webapp-v1spec:replicas: 1selector:matchLabels:app: webapp-v1template:metadata:labels:app: webapp-v1spec:containers:- name: webappimage: webapp:v1ports:- containerPort: 80


   ```

3. **创建 Ingress 规则**
   ```yaml
 

  apiVersion: networking.k8s.io/v1kind: Ingressmetadata:name: webapp-ingressspec:rules:- host: webapp.example.comhttp:paths:- path: /v1pathType: Prefixbackend:service:name: webapp-service-v1port:number: 80


   ```

4. **应用配置**
   ```bash

   kubectl apply -f webapp-deployment.yamlkubectl apply -f ingress.yaml


   ```

通过这个案例,你可以学习如何使用 Ingress 配置 HTTP 路由、负载均衡和 SSL/TLS 终端节点。

---

### 总结

以上是一些常见的 Kubernetes 实战案例,涵盖了应用的部署、扩容、管理、持久化存储和流量路由等方面。学习这些案例有助于你熟练掌握 Kubernetes 的基本操作,并能够在实际的生产环境中高效地管理容器化应用。

相关文章:

k8s服务搭建与实战案例

Kubernetes(K8s)作为一个开源的容器编排平台,广泛应用于现代的云原生应用架构中。以下是一些常见的 **Kubernetes 实战案例**,包括从基础部署到高级应用场景的使用。通过这些案例,可以更好地理解 K8s 的运作原理和最佳…...

JavaScript学习难点

一、语法的灵活性 动态类型: JavaScript 是一种动态类型语言,这意味着变量的类型可以在运行时改变。这与静态类型语言(如 Java、C)形成鲜明对比,在静态类型语言中,变量的类型在编译时就已经确定。 例如&am…...

Qt WORD/PDF(一)使用 QtPdfium库实现 PDF 预览

文章目录 一、简介二、下载 QtPdfium三、加载 QtPdfium 动态库四、Demo 使用 关于QT Widget 其它文章请点击这里: QT Widget 姊妹篇: Qt WORD/PDF(一)使用 QtPdfium库实现 PDF 操作 Qt WORD/PDF(二)使用 QtPdfium库实现…...

解决创建laravel项目,使用国外镜像超时,国内镜像缺包的问题

解决创建laravel项目,使用国外镜像超时,国内镜像缺包的问题 一、前言二、切换镜像三、创建最新版本四、创建指定版本 一、前言 最近想下载 laravel 框架看看,但也遇到了些麻烦,这里做个记录。 二、切换镜像 先查看镜像源&#…...

Java泛型设计详解

引言 在日常Java开发中,泛型是一个非常重要的特性。它提供了编译时的类型安全检查,增强了代码的可读性和可维护性。然而,对于初学者甚至一些有经验的开发者来说,泛型的使用和理解仍然是一个挑战。本文旨在深入探讨Java泛型的诞生…...

用ue5打开网址链接

需要用到 Launch URL 这个函数 字面意思就是打开填写的链接网页 这里填写的是百度,按下Tab键后就会打开百度的网页...

【大数据】-- 读放大和写放大

目录 一、定义 1. 读放大(Read Amplification) 定义 原因 优化方法 2. 写放大(Write Amplification) 定义 原因 优化方法 对比与联系 二、举例 1. Hadoop(HDFS) 读放大 写放大 2. Flink 读放大 写放大 3. Hive 读放大 写放大 4. Presto 读放大 写放…...

【前端】JavaScript 抽取字符串特定部分题目详解与实现思路

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 💯前言💯题目描述💯核心步骤与实现解析1. 分割字符串为数组(split 方法)2. 使用 filter 提取名字(偶数索引判断)3. 使…...

CNCF云原生生态版图-分类指南(一)- 观测和分析

CNCF云原生生态版图-分类指南(一)- 观测和分析 CNCF云原生生态版图-分类指南一、观测和分析(Observability and Analysis)(一)可观测性(Observablility)1. 是什么?2. 解决…...

热更新解决方案3 —— xLua

概述 xLua框架导入和AB包相关准备 xLua导入 其它的导入 C#调用Lua 1.Lua解析器 using System.Collections; using System.Collections.Generic; using UnityEngine; //引用命名空间 using XLua;public class Lesson1_LuaEnv : MonoBehaviour {// Start is called before the fi…...

如何让ai在游戏中更像一个人?

开题开了一整年是我没想到的,还因此延毕了……我重新梳理一下我想做的研究以及相关痕迹。 我2023年3月找到的导师。起初我发现了在玩RTS游戏中会出现很多固定的套路,选手为此要做大量的练习,我就在想如何把这部分内容借助状态机这种流程给…...

websocket_asyncio

WebSocket 和 asyncio 指南 简介 本指南涵盖了使用 Python 中的 websockets 库进行 WebSocket 编程的基础知识,以及 asyncio 在异步非阻塞 I/O 中的作用。它提供了构建高效 WebSocket 服务端和客户端的知识,以及 asyncio 的特性和优势。 1. 什么是 WebS…...

如何在NGINX中实现基于IP的访问控制(IP黑白名单)?

大家好,我是锋哥。今天分享关于【如何在NGINX中实现基于IP的访问控制(IP黑白名单)?】面试题。希望对大家有帮助; 如何在NGINX中实现基于IP的访问控制(IP黑白名单)? 1000道 互联网大…...

Y3编辑器文档4:触发器1(界面及使用简介、变量作用域、入门案例)

文章目录 一、触发器简介1.1 触发器界面1.2 ECA语句编辑及快捷键1.3 参数设置1.4 变量设置1.5 实体触发器1.6 触发器复用 二、触发器的多层结构2.1 子触发器(在游戏内对新的事件进行注册)2.2 触发器变量作用域 三、入门案例3.1 使用触发器实现瞬间移动3.…...

echarts图表自定义配置(二)——代码封装

下图是初版,火山图的代码。可以看出,里面的变量,逻辑,函数存在冗余,基本上都是改了参数,同样的get和set,去刷新图表;对于往后继续开发十几二十个图表,会很麻烦。因此需要…...

02、10个富士胶片模拟的设置

二色彩 1、色彩的加减控制全局的饱和度增减; 2、色彩效果只提升暖色系饱和度; 3、FX蓝色大幅度提升蓝色系饱和度; 4、三个参数都不改变颜色的色相。 2.1 色彩 色彩调整的是拍摄画面整体的色彩饱和程度 2.2色彩效果 调整的是画面中暖色…...

鸿蒙系统-前端0帧起手

鸿蒙系统-前端0帧起手 先search 一番 找到对应的入门文档1. 运行项目遇到问题 如下 (手动设计npm 的 registry 运行 npm config set registry https://registry.npmjs.org/)2.运行后不支持一些模拟器 配置一下(如下图,运行成功&am…...

211-基于FMC的1路1.5G ADC 1路 2.5G DAC子卡

一、板卡概述 FMC-1AD-1DA-1SYNC是我司自主研发的一款1路1G AD采集、1路2.5G DA回放的FMC、1路AD同步信号子卡。板卡采用标准FMC子卡架构,可方便地与其他FMC板卡实现高速互联,可广泛用于高频模拟信号采集等领域。 二、功能介绍 2.1 原理框图 2.2 硬件…...

获取微信用户openid

附上开发文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html 开发之前,准备事项 一个已认证过的服务号|基本信息配置js域名和网站授权域名配置最后确认当前账号网页授权功能是否开通,没有开通的无法获取到用户授权开发人…...

MultiRECloudSim使用

MultiRECloudSim使用 简介 MultiRECloudSim是一个用于云计算环境下的模拟器相关工具,它主要用于模拟和评估云计算中的资源分配、任务调度等多种场景。它可能是基于CloudSim这个基础的云计算模拟器进行扩展而来,CloudSim提供了基本的云计算模拟功能,如数据中心、虚拟机、任务…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

<6>-MySQL表的增删查改

目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表&#xf…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...