Kubernetes大杂烩

news/2024/7/4 7:47:25 标签: kubernetes, 容器, 云原生

文章目录

  • 前言
  • Kubernetes是什么,有什么用
  • Kubernetes主要有哪些组件,都有什么用
  • Pod和容器之间的关系
  • Pod有什么用
  • Replication Controller(ReplicaSet)和Deployment是什么
  • 如何在Kubernetes集群中部署一个应用
  • 如何实现Kubernetes集群内部的服务发现
  • 如何监控和调试Kubernetes集群中的应用
  • Kubernetes中服务发现和负载均衡的机制
  • Kubernetes调度器的决策过程是什么

前言

我认为学一门技术的时候,应该多思考为什么,有什么用,当把你所有的问题都解决的时候,说明你对这门技术已经拥有自己的理解了,相当于把学习从被动输入转换成主动输出,可以提升很多的学习效率,这篇博客我总结了我学习Kubernetes中的一些问题

Kubernetes是什么,有什么用

Kubernetes是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它的主要作用是简化容器应用程序的部署、管理和调度,并提供高可用性、弹性伸缩、自我修复等功能

Kubernetes主要有哪些组件,都有什么用

Master节点:负责集群的管理和控制。包括API Server、Controller Manager、Scheduler和Etcd等
Node节点:用于运行容器化应用。包括kubelet、kube-proxy和容器运行时等
Pod:最小的调度和管理单位,包含一个或多个容器,共享网络和存储资源
Service:暴露Pod的网络服务,提供对内外部的访问

Pod和容器之间的关系

在Kubernetes中,一个Pod内可以运行一个或多个容器,Pod是Kubernetes调度和部署的基本单元

Pod有什么用

Pod内的容器可以共享网络和存储资源
Pod可以用来管理容器的生命周期,当PodPod被终止时,其中的所有容器也会被终止
Kubernetes会将一个Pod中的所有容器一起调度到同一个节点上,以确保它们可以共享资源并快速通信

Replication Controller(ReplicaSet)和Deployment是什么

Replication Controller(ReplicaSet)和Deployment是Kubernetes中用于定义和管理应用副本数量的对象。Replication Controller(ReplicaSet)用于确保在集群中始终保持指定数量的Pod副本,而Deployment可以在升级和回滚应用程序时提供便利

如何在Kubernetes集群中部署一个应用

创建一个容器镜像:将应用打包成一个容器镜像,可以使用Docker来完成这个步骤

创建一个Deployment对象:Deployment是Kubernetes中的一种资源对象,用于定义和管理Pod的创建和更新。使用Deployment可以指定应用运行所需的资源,如容器镜像、副本数量、挂载的存储卷等

应用部署:使用kubectl命令行工具或通过Kubernetes API来创建和管理资源对象。通过运行kubectl create命令并指定Deployment的配置文件,可以将应用部署到集群中

监控和管理:一旦应用成功部署,可以使用kubectl来监控和管理应用的状态。例如,可以使用kubectl get命令来查看Deployment、Pod和容器的状态信息

暴露应用:通常情况下,需要将应用暴露给外部用户。可以使用Kubernetes中的Service对象来创建一个负载均衡服务,将流量从集群外部引导到应用的Pod

扩展和更新:如果需要扩展应用的容量或更新应用版本,可以通过修改Deployment的配置文件或运行kubectl scale命令来实现

如何实现Kubernetes集群内部的服务发现

Kubernetes提供了Service对象来实现服务发现。Service会为一组Pod提供一个唯一的虚拟IP地址和域名,通过这个IP和域名,其他Pod或应用可以访问到该服务。Service根据标签选择器来关联和识别Pod

如何监控和调试Kubernetes集群中的应用

Kubernetes Dashboard:Kubernetes提供了一个Web UI仪表板,可以通过它来监控集群中的应用运行状态、资源使用情况等。可以使用kubectl命令来启动Dashboard,并通过浏览器访问仪表板

Prometheus:Prometheus是一个流行的开源监控和警报系统,可以在Kubernetes中使用它来收集和存储应用和集群的指标数据。通过Prometheus可以监控应用的资源使用情况、性能指标等,并进行可视化展示

Grafana:Grafana是一个用于可视化监控数据的开源工具,在Kubernetes中可以与Prometheus结合使用,用于创建仪表盘和图表,展示应用指标和集群状态

kubectl命令:kubectl是Kubernetes的命令行工具,可以使用它来获取和监控应用的状态、日志等信息。例如,可以使用kubectl logs命令来查看应用容器的日志,使用kubectl describe命令来查看应用Pods的详细信息

日志聚合:可以使用一些日志聚合工具(例如ELK、EFK等)来集中管理和分析集群中各个应用的日志。这些工具可以将应用容器的日志收集到一个地方,并提供搜索、过滤和可视化等功能

调试工具:Kubernetes提供了一些调试工具,用于诊断和解决应用问题。例如,kubectl exec命令可以进入容器并在其中运行命令,kubectl port-forward命令可以将本地端口转发到Pod中的端口,方便进行调试

Kubernetes中服务发现和负载均衡的机制

Service对象:Kubernetes中的Service对象定义了一组Pod的逻辑集合,并为它们提供了一个稳定的网络访问端点。Service可以通过Cluster IP、NodePort或者LoadBalancer来将流量引导到后面的Pod

DNS服务发现:Kubernetes内置了一个DNS服务,可以为每个Service分配一个DNS名称。其他Pod可以使用这些DNS名称来发现和访问Service

基于标签的选择器:Kubernetes中的Service可以通过标签选择器来指定要包含在Service中的Pod。这样,可以通过给Pod打上特定的标签来将其自动添加到对应的Service中

Ingress对象:Ingress是Kubernetes中用于配置HTTP和HTTPS路由到Service的资源对象。它提供了一种灵活的方式来在集群外部公开和访问服务。Ingress控制器负责解析Ingress对象并将流量路由到相应的Service,以实现外部访问和负载均衡

外部负载均衡器:如果集群在云厂商的平台上运行,例如AWS、GCP或Azure,可以使用云提供商的负载均衡器来将流量引导到Kubernetes Service

Kubernetes调度器的决策过程是什么

获取集群信息:调度器首先获取集群中所有节点的资源信息,包括CPU、内存、磁盘等资源的容量和使用情况

节点筛选:调度器使用一系列的调度策略和条件,对节点进行筛选,排除掉不符合条件的节点。这些调度策略和条件可以包括资源需求、标签匹配、亲和性/反亲和性规则、污点/容忍等

节点评分:对于符合条件的节点,调度器会对它们进行评分。评分是根据多个因素计算的,包括节点的可用资源、负载情况、亲和性规则等。通过评分可以找到最适合的节点

选择最佳节点:根据评分,调度器选择评分最高的节点作为目标节点。如果有多个节点评分相同,则通常会选择其中一个节点

绑定Pod和节点:一旦选择了目标节点,调度器将更新Pod的状态并将其绑定到目标节点。这将导致Kubernetes控制平面生成相应的调度事件,并通知节点上的kubelet来创建和运行Pod


http://www.niftyadmin.cn/n/5133928.html

相关文章

一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium

大家好,我是python222小锋老师。前段时间卷了一套 Python3零基础7天入门实战 以及1小时掌握Python操作Mysql数据库之pymysql模块技术 近日锋哥又卷了一波课程,python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium,文字版视频版。1…

C++ 存储持续性、作用域、链接性

C 存储持续性(存储周期)、作用域、链接性 自动存储持续性 automatic:在函数定义中声明的变量(包括函数参数)的存储持续性为自动的。它们在程序开始执行其所属的函数或代码块时被创建,在执行完函数或代码块时,它们使用的内存被释放…

【MySQL】常见错误汇总

目录 一、远程连接MySQL用户权限问题 解决方案 二、mysql使用聚合函数group by 报错 解决方案一 解决方案二 三、MySQL导入数据时 server has gone away 解决方案一 解决方案二 一、远程连接MySQL用户权限问题 远程连接MySQL时,提示:ERROR 1130:…

宝塔安装mongodb插件失败的解决办法

安装时始终不成功。 进入控制台进行安装 /www/server/php/71# pecl install mongodb WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update pecl/mongodb requires PHP (version > 7.2.0, …

数据结构───链表

花费一个周时间学完了链表(的一部分),简单总结一下。 链表的学习离不开画图,将其抽象成一种逻辑模型,可以减少思考时间,方便理解。 链表大致分为8种结构,自己学习并实现了两种结构,也…

[2021]不确定成本下的处理分配

英文题目:Treatment Allocation under Uncertain Costs 中文题目:不确定成本下的处理分配 单位:swager、uber 时间:2021 论文链接:https://arxiv.org/pdf/2103.11066.pdf 代码: 摘要: 我…

H 指数问题

问题: 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她…

BUUCTF Reverse 新年快乐

下载文件先查壳,可以看到有UPX壳 用upx脱壳 拖到ida pro32,shiftF12查看字符串,看到关键字flag,双击进去 双击然后f5查看伪代码 main函数伪代码 关键函数: strncmp(const char *str1, const char *str2, size_t n)…