暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Kubernetes完全指南:从容器编排到服务关联

86

K8s对容器的编排和管理

Kubernetes(简称K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用。

1. K8s是如何对容器编排的?

在K8s集群中,容器被封装在Pod中。Pod是K8s调度的最小单位,一个Pod可以包含一个或多个容器。K8s通过以下步骤对容器进行编排:

用户创建资源请求:用户通过命令行工具(如kubectl
)或API服务器提交Pod的创建请求,这些请求通常以YAML或JSON格式的文件定义。

API Server处理请求:API Server接收到请求后,进行验证并存储到etcd中。

调度器分配主机:K8s调度器会根据资源需求和集群状态,为Pod选择合适的节点。调度器通过过滤和打分两个步骤来选择节点: - 过滤:剔除不符合要求的节点。 - 打分:对剩余节点进行评分,选择得分最高的节点。

创建Pod:调度器选择好节点后,将调度结果写入etcd。kubelet(节点代理)在每个工作节点上监视etcd中的变化,并在选定的节点上创建Pod,拉取容器镜像并启动容器。

例如: 当你使用kubectl apply -f mypod.yaml
命令时,K8s会根据mypod.yaml文件中定义的内容创建一个Pod,并将其调度到合适的节点上运行。

2. Pod是怎样创建出来的?

Pod的创建过程如下:

提交请求:用户通过kubectl
命令行工具或API Server提交创建Pod的请求。

处理请求:API Server验证请求并将其存储到etcd中。

调度分配:调度器根据资源需求和节点状态选择合适的节点。

过滤和打分:调度器通过过滤和打分机制选择最佳节点。

创建Pod:调度结果写入etcd后,kubelet在选定节点上创建Pod并启动容器。

例如: 如果你在mypod.yaml
文件中定义了一个Nginx容器,那么K8s会在指定的节点上启动这个Nginx容器,并将其封装在一个Pod中运行。

3. Service又是怎样关联到Pod的?

Service是K8s中的一种资源对象,用于将Pod暴露给外部访问。Service通过标签选择器(Label Selector)将请求路由到合适的Pod上。

定义Service:用户通过YAML文件定义Service,并指定标签选择器。

关联Pod:Service根据标签选择器选择符合条件的Pod,并为其提供统一的访问入口。

访问Pod:用户通过Service的IP地址和端口访问Pod,Service会将请求负载均衡地分发到后端的Pod上。

例如: 假设你定义了一个Service,将标签选择器设置为app=nginx
,那么所有具有该标签的Pod都会被包含在这个Service的负载均衡范围内,用户访问Service的IP地址时,请求会被转发到这些Pod上。

    非常感谢您读到这里!如果您觉得这篇文章对您有帮助,请不要忘记关注公众号。关注后,您将第一时间获得最新的AI、云计算、运维(Linux、数据库,容器等)技术,以及更多实用的技能干货。

    点击页面右上角的“关注”按钮,不错过任何精彩内容!

    扫码获取联系方式



文章转载自周同学带您玩AI,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论