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

K8S简介、使用教程

以下是关于 Kubernetes(通常缩写为 K8S)的简介和使用教程:

一、Kubernetes 简介

  1. 定义与作用
    Kubernetes 是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它最初由谷歌开发,后捐赠给云原生计算基金会(CNCF),并成为云原生领域中非常重要的基础设施。在如今的软件开发和部署场景中,随着容器技术(如 Docker)的广泛应用,Kubernetes 能够帮助开发者和运维团队高效地管理大量的容器,确保应用程序在不同的环境(如开发、测试、生产环境)中可靠且稳定地运行。

  2. 核心概念

    • Pod:是 Kubernetes 中最小的可部署和可管理的计算单元,它可以包含一个或多个紧密相关的容器。这些容器通常会共享网络和存储资源,并且总是一起被调度到同一个节点上运行。例如,一个包含 Web 服务器容器和数据库容器的组合,如果它们之间关联紧密,就可以放在一个 Pod 中(不过实际应用中更建议将数据库单独部署在不同的 Pod 中,这里只是为了便于理解举例)。
    • Node(节点):指的是集群中的一台机器,可以是物理机也可以是虚拟机,节点上运行着 Kubernetes 的相关组件(如 kubeletkube-proxy 等),并且可以用来运行 Pod。简单理解就是承载 Pod 的宿主主机。
    • Service(服务):用于将一组 Pod 暴露给其他应用或者外部网络,提供了稳定的网络访问入口。它可以通过不同的类型(如 ClusterIP 只在集群内部可访问、NodePort 可以通过集群中节点的特定端口访问、LoadBalancer 借助外部负载均衡器来对外提供服务等)实现不同的网络访问需求。
    • Deployment(部署):用于声明式地管理 Pod 的创建、更新和删除等操作,提供了应用程序的滚动更新、回滚等功能,方便开发者对应用进行版本升级等操作。
    • Namespace(命名空间):类似于操作系统中的文件夹,用于对集群中的资源进行隔离和分组管理,不同的命名空间中的资源可以同名,便于在多团队、多项目共用集群时划分资源和权限。

二、Kubernetes 使用教程

安装 Kubernetes
  1. 本地环境安装(以 Minikube 为例,适合用于学习和开发测试)

    • 前提条件:需要先安装好 Docker(因为 Minikube 依赖 Docker 来运行容器)以及对应的命令行工具(如 kubectl,用于与 Kubernetes 集群交互的客户端工具)。
    • 安装步骤
      • 根据操作系统下载对应的 Minikube 安装包(可以从官方网站获取),然后进行安装。
      • 安装完成后,在命令行执行 minikube start 命令来启动本地的 Kubernetes 集群。这个过程中,Minikube 会自动下载所需的镜像等资源并初始化集群。
      • 通过 kubectl get nodes 命令可以查看集群中的节点信息,若看到节点状态为 Ready,则表示集群启动成功。
  2. 生产环境安装(有多种方式,以基于云服务商提供的 Kubernetes 服务为例,如云原生的 Google Kubernetes Engine(GKE)、Amazon Elastic Kubernetes Service(EKS)、阿里云的容器服务 Kubernetes 版等)

    • 以 GKE 为例的步骤
      • 登录 Google Cloud 平台账号,在控制台中选择创建 Kubernetes 引擎集群,按照提示配置集群的相关参数,如节点数量、机器类型、网络配置等。
      • 完成配置后,点击创建,平台会自动完成集群的创建和初始化工作,创建完成后同样可以使用 kubectl get nodes 命令(前提是在本地配置好与 GKE 集群连接的 kubectl)来查看节点信息,确认集群状态。
创建和管理资源
  1. 创建 Pod
    • 使用 YAML 文件定义 Pod(推荐方式,便于版本控制和复用):创建一个例如名为 my-pod.yaml 的文件,内容示例如下:
      apiVersion: v1
      kind: Pod
      metadata:name: my-podlabels:app: my-app
      spec:containers:- name: my-containerimage: nginx:latestports:- containerPort: 80

这个 YAML 文件定义了一个名为 my-pod 的 Pod,它包含一个基于 nginx:latest 镜像的容器,并且容器暴露了 80 端口。

  • 创建 Pod:在命令行执行 kubectl create -f my-pod.yaml 命令,Kubernetes 就会根据这个 YAML 文件创建对应的 Pod。可以通过 kubectl get pods 命令查看 Pod 的状态。
  1. 创建 Deployment
    • 同样使用 YAML 文件定义(例如 my-deployment.yaml
      apiVersion: apps/v1
      kind: Deployment
      metadata:name: my-deploymentlabels:app: my-app
      spec:replicas: 3selector:matchLabels:app: my-apptemplate:metadata:labels:app: my-appspec:containers:- name: my-containerimage: nginx:latestports:- containerPort: 80

这里定义了一个名为 my-deployment 的 Deployment,它会创建 3 个副本(由 replicas 参数指定)的 Pod,Pod 中的容器基于 nginx:latest 镜像且暴露 80 端口。

  • 创建 Deployment:执行 kubectl create -f my-deployment.yaml 命令,通过 kubectl get deployments 和 kubectl get pods 命令可以分别查看 Deployment 和其创建的 Pod 的状态。
  1. 创建 Service
    • 使用 YAML 文件定义服务(例如 my-service.yaml),以下是创建一个 ClusterIP 类型服务的示例
      apiVersion: v1
      kind: Service
      metadata:name: my-servicelabels:app: my-app
      spec:type: ClusterIPselector:app: my-appports:- protocol: TCPport: 80targetPort: 80

这个服务会选择所有带有 app: my-app 标签的 Pod,将它们的 80 端口(targetPort)映射到服务的 80 端口(port)上,并且服务类型为 ClusterIP,意味着只能在集群内部访问。

  • 创建 Service:执行 kubectl create -f my-service.yaml 命令,通过 kubectl get services 命令可以查看服务的相关信息。
应用更新与回滚
  1. 更新 Deployment 中的容器镜像(实现应用版本升级)
    执行 kubectl set image deployment/my-deployment my-container=nginx:new-version 命令(这里假设 nginx:new-version 是要更新的新镜像版本),Kubernetes 会自动进行滚动更新,逐个替换旧版本的 Pod 为新版本的 Pod,在更新过程中可以通过 kubectl rollout status deployment/my-deployment 命令查看更新进度。
  2. 回滚 Deployment
    如果更新后出现问题,可以执行 kubectl rollout undo deployment/my-deployment 命令进行回滚操作,将 Deployment 回滚到上一个版本的状态。
资源删除

要删除之前创建的资源,可以执行以下命令:

  • 删除 Podkubectl delete pod my-pod(不过通常更建议通过管理 Deployment 等上层资源来间接管理 Pod,直接删除 Pod 可能会被重新创建,如果是由 Deployment 管理的话)。
  • 删除 Deploymentkubectl delete deployment my-deployment,这会同时删除它管理的所有 Pod。
  • 删除 Servicekubectl delete service my-service

以上只是 Kubernetes 的一个非常基础的使用教程,实际应用中它还有很多高级的功能和配置选项,比如配置存储卷、网络策略、资源配额等,需要进一步深入学习和实践来掌握。

相关文章:

K8S简介、使用教程

以下是关于 Kubernetes(通常缩写为 K8S)的简介和使用教程: 一、Kubernetes 简介 定义与作用 Kubernetes 是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它最初由谷歌开发,后捐赠给云原生计算基…...

极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【四】

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…...

麦肯锡报告 | 科技落地的真谛:超越技术本身的价值创造

科技创新正在以惊人的速度改变企业运作和客户体验,但实现其潜力的关键在于正确的策略、流程、文化和人才。麦肯锡强调了一个理念:Never just tech(不仅仅是技术)。这表明,成功的数字化转型不仅依赖于技术,还…...

彻底解决 macOS 下Matplotlib 中文显示乱码问题

彻底解决 macOS 下Matplotlib 中文显示乱码问题 在使用 Python 的 Matplotlib 库进行数据可视化时,中文字符的显示常常会出现乱码问题,尤其在 macOS 系统上。在网上找了一大堆方法,花了很久,发现不是要安装各种字体就是要改配置&…...

STM32-- keil 的option for target使用

keil版本号 1.device界面 如:stm32f103c8t6的工程,可以直接在device这里修改成stm32f103vct6,虽然引脚不一样,但是很多一样的地方,可以直接使用,有些不修改也可以下载程序。 2.target xtal的设置不起作用了…...

【MCU】微控制器的编程技术:ISP 与 IAP

在嵌入式领域中,将程序下载到内置 Flash 有两种技术 ISP (In-system programming) ISP 即在系统编程,是指一些可编程逻辑器件、微控制器、芯片组和其他嵌入式设备在安装到完整嵌入式系统后能够进行编程,而不需要在将芯片安装到系统中之前对…...

C#基础题总结

16.一张单据上有一个5位数的号码为6**42,其中百位数和千位数已模糊不清,但知道该数能被 57 和 67 除尽。设计一个算法,找出该单据所有可能的号码。 17.编程序求2~10000以内的完全数。一个数的因子(除了这个数本身&…...

Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?

大家好,我是锋哥。今天分享关于【Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?】面试题。希望对大家有帮助; Elasticsearch中的节…...

《参与中型项目,领略 Spring 魅力》

一、Spring 在中型项目中的魅力展现 Spring 框架以其强大的功能和灵活性,在中型项目中发挥着重要作用。它不仅简化了开发过程,还提高了代码的可维护性和可扩展性。 Spring 在中型项目中魅力十足,其优势主要体现在以下几个方面。 首先&#…...

计算机网络-GRE(通用路由封装协议)简介

昨天我们学习了VPN的基本概念,虚拟专用网络在当前企业总部与分支间广泛使用。常用的划分方法为基于协议层次有GRE VPN、IPSec VPN、L2TP VPN、PPTP VPN、SSL VPN等。其实我有考虑该怎么讲,因为在IP阶段好像虚拟专用网络讲得不深,在IE的阶段会…...

开源电话机器人产品的优点是什么?

开源电话机器人产品的优点是什么? 作者:开源呼叫中心系统 FreeIPCC,Github地址:https://github.com/lihaiya/freeipcc 开源电话机器人产品作为人工智能技术的一种应用,近年来在电销、客户服务等多个领域展现出了显著的…...

Spring Boot 集成 Knife4j 的 Swagger 文档

在开发微服务应用时,API 文档的生成和维护是非常重要的一环。Swagger 是一个非常流行的 API 文档工具,可以帮助我们自动生成 RESTful API 的文档,并提供了一个友好的界面供开发者测试 API。本文将介绍如何在 Spring Boot 项目中集成 Knife4j …...

极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【一】

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…...

C# 在Word文档模板中,按照占位符插入文字或图片

1,引入包:DocX 2,代码如下 public class CC{public static void Ma22in(){// 示例:加载现有模板并替换占位符string templatePath "报告模板.docx"; // 模板文件路径string outputPath "Output.docx"; // 输出文…...

在使用PCA算法进行数据压缩降维时,如何确定最佳维度是一个关键问题?

一、PCA算法的基本原理 PCA算法的核心思想是通过正交变换,将一组可能相关的变量转换成一组线性不相关的变量,称为主成分。这组主成分能够以最小的信息损失来尽可能多地保留原始数据集的变异性。具体来说,PCA算法包括以下几个步骤&#xff1a…...

深度学习3

五、自动微分 1、基础概念 模块 autograd 负责自动计算张量操作的梯度,具有自动求导功能;autograd 创建一个动态计算图来跟踪张量的操作,每个张量是计算图中的一个节点,节点之间的操作构成图的边。 属性 requires_grad 决定…...

Qt5.14.2的安装与环境变量及一些依赖库的配置

目录 1.Qt5.14.2安装 2.Qt环境变量及一些依赖库的配置 1.Qt5.14.2安装 QT从入门到入土(一)——Qt5.14.2安装教程和VS2019环境配置 - 唯有自己强大 - 博客园 2.Qt环境变量及一些依赖库的配置 假设QT安装目录为: D:\Qt\Qt5.14.2 将目录: D:\Qt\Qt5.14.…...

PYNQ 框架 - 时钟系统 + pl_clk 时钟输出不准确问题

目录 1. 简介 2. PS 时钟计算 2.1 计算框架 2.2 KV260 的参考时钟 2.3 PL_CLK 设置 3. 测试 3.1 Block design 3.2 引脚绑定 3.3 使用 AD2 测量 3.4 调整分频 4. PYNQ 时钟驱动 4.1 源码解析 4.2 查看 PL_CLK 4.3 配置 PL_CLK 5. 总结 1. 简介 ZYNQ MPSoC 具有…...

CDAF / PDAF 原理 | PDAF、CDAF 和 LAAF 对比 | 图像清晰度评价指标

注:本文为 “CDAF / PDAF 原理 | PDAF、CDAF 和 LAAF 对比 | 图像清晰度评价指标” 几篇相关文章合辑。 文章中部分超链接、图片异常受引用之前的原文所限。 相机自动对焦原理 TriumphRay 于 2020-01-16 18:59:41 发布 凸透镜成像原理 这一部分大家中学应该就学过…...

类和对象--中--初始化列表(重要)、隐式类型转化(理解)、最后两个默认成员函数

1.初始化列表 1.1作用: 通过特定的值,来初始化对象。 1.2定义: 初始化列表,就相当于定义对象(开空间)。不管写不写初始化列表,每个成员变量都会走一遍初始化列表(开出对应的空间…...

uni-app运行 安卓模拟器 MuMu模拟器

最近公司开发移动端系统,使用真机时每次调试的时候换来换去的麻烦,所以使用模拟器来调试方便。记录一下安装和连接的过程 一、安装MuMu模拟器 百度搜索MuMu模拟器并打开官网或者点这里MuMu模拟器官网 点击下载模拟器 安装模拟器,如果系统…...

java 打印对象所有属性的值 循环

在Java中,如果你想要打印一个对象的所有属性值,可以使用反射(Reflection)来获取对象的所有字段,并循环遍历这些字段以打印它们的值。以下是一个示例代码,展示了如何实现这一点: 示例类 假设我…...

k8s认证、授权

在 Kubernetes 中,kubectl auth can-i 命令用于检查当前用户或指定的 ServiceAccount 是否有权限执行特定的操作: kubectl auth can-i create deployment --as system:serviceaccount:default:dev-sa这个命令的作用是检查名为 dev-sa 的 ServiceAccount…...

基于spring boot的纺织品企业财务管理系统论文

摘 要 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对纺织品企业财务信息管理的提升&…...

@RequestBody和前端的关系以及,如何在前后端之间传递数据?

RequestBody 注解在 Spring MVC 中用于将 HTTP 请求体中的数据绑定到控制器方法的参数上。为了更好地理解 RequestBody 和前端之间的关系,我们可以从以下几个方面进行探讨: 1. 请求体的格式 前端发送的请求体通常是一个 JSON 字符串,也可以…...

详解登录MySQL时出现SSL connection error: unknown error number错误

目录 登录MySQL时出错SSL connection error: unknown error number 出错原因 使用MySQL自带的工具登录MySQL 登陆之后,使用如下命令进行查看 解决方法 找到MySQL8安装目录下的my.ini配置文件 记事本打开my.ini文件,然后按下图所示添加配置 此时再…...

【大数据学习 | Spark-Core】Spark的改变分区的算子

当分区由多变少时,不需要shuffle,也就是父RDD与子RDD之间是窄依赖。 当分区由少变多时,是需要shuffle的。 但极端情况下(1000个分区变成1个分区),这时如果将shuffle设置为false,父子RDD是窄依赖关系&…...

Spring Boot Web应用开发:测试

在Spring Boot中,测试是开发过程的一个重要部分,它确保你的应用按预期工作,并且可以帮助你在早期发现和修复问题。Spring Boot提供了多种便捷的测试工具,使得编写和运行测试案例变得简单。 Spring Boot测试简介 Spring Boot支持…...

服务器数据恢复—光纤存储FC硬盘数据恢复案例

服务器存储数据恢复环境: 某品牌光纤存储上共有16块FC硬盘。存储上的卷映射到Linux操作系统上。Linux操作系统上运行Oracle数据库。 服务器存储故障&检测: 存储上2块硬盘故障灯亮起,存储映射到linux操作系统上的卷挂载不上,业…...

Android Binder技术概览

Android中的Binder是一种基于远程过程调用(Remote Procedure Call, RPC)的轻量级通信机制,核心用于 Android 系统中的进程间通信(Inter-Process Communication, IPC)。Binder 是 Android 系统中不可或缺的一部分&#…...

做网站的常识/高端网站制作

Tomcat 部署项目 本节介绍如何在 Tomcat 上部署服务。 Tomcat 的目录结构 bin:Tomcat 的启动、关闭脚本。conf:Tomcat 配置文件。lib:Tomcat 需要的类库(jar 包)。logs:日志目录。temp:Tomcat…...

钓鱼网站教程/河南网站建设制作

1.关系型数据库简单的可以理解为二维数据库,表的格式就如Excel,有行有列。常用的关系数据库有Oracle,SqlServer,Informix,MySql,SyBase等。(也即是我们平时看到的数据库,都是关系型数…...

wordpress 访问统计/排名优化网站seo排名

浮点型在内存中的存储分布方式因机器平台而异,完全理解所有机器平台中的浮点型存储无疑是一件相当麻烦的事。幸运的是,大多机器平台都遵守 IEEE-754 标准,很可能读者和我使用的平台正是使用的 IEEE-754 标准。计算机是如何存储浮点数的呢&…...

深圳三玉网站建设/百度关键词竞价和收费的方法

看到这篇文章的标题,是不是有小伙伴会感到惊讶呢? Postman 不是做接口测试的吗?为什么还能做 UI 自动化测试呢? 其实,只要你了解 Selenium 的运行原理,就可以理解为什么 Postman 也能实现 UI 自动化测试了…...

wordpress汉化视频模板/百度手机助手下载安装最新版

Java-odbc-000-连接、插入、查询、修改、删除-2020-6-25 目录提示零、最终效果一、准备二、ListDB.java三、SQLDB.java提示 运行环境jdk1.6 零、最终效果 一、准备 ①sample.mdb(利用微软的access) ②管理工具->ODBC数据管理程序(32位)//虽然我电脑是64位->用户DSN-&…...

河南网络洛阳网站建设河南网站建设/软文广告怎么写

在中国做企业,“人”永远都是绕不过去的一道坎,你不可能就事论事,也不可能把“事业”做的那么纯粹。中国企业最难逾越的不是企业本身,而是复杂的中国人性!一个很古老的故事:从前有座山,山里有座…...