`

k8s pod, service, deployment关系

    博客分类:
  • k8s
 
阅读更多

 

Pod:

 

Pod是一个或多个容器的组合,这些容器共享存储、网络和命名空间,以及如何运行的规范。Pod是Kubernetes的最小可部署单元。Pod的中文译词是豌豆荚,docker容器就像是豆子运行在豌豆荚内。

 

ReplicaSet:

先说下Replication Controller。Replication Controller的作用是确保Pod以指定的副本个数运行。

ReplicaSet是Replication Controller升级版。ReplicaSet和Replication Controller之间的唯一区别是对选择器支持。Replication Controller只支持基于等式的selector(env=dev或environment!=qa),但ReplicaSet还支持新的,基于集合的selector(version in (v1.0,v2.0)或env notin (dev, qa))。

在yaml文件中通过spec.replicas声明pod的副本数。

 

Deployment:

Deployment用于管理Pod、ReplicaSet,可实现滚动升级和回滚应用、扩容和缩容。

 

Service:

试想一个问题,ReplicaSet定义了pod的数量是2,当一个pod由于某种原因停止了,ReplicaSet会新建一个pod,以确保运行中的pod数量始终是2。但每个pod都有自己的ip,前端请求不知道这个新pod的ip是什么,那前端的请求如何发送到新pod中呢?

答案是使用Service

k8s的Service定义了一个服务的访问入口地址,前端的应用通过这个入口地址访问其背后的一组由Pod副本组成的集群实例,来自外部的访问请求被负载均衡到后端的各个容器应用上。Service与其后端Pod副本集群之间则是通过Label Selector实现关联。

请说人话:前端请求不是直接发送给Pod,而是发送到Service,Service再将请求转发给pod。

 

总结一下:Pod被ReplicaSet管理,ReplicaSet控制pod的数量;ReplicaSet被Deployment管理,Deployment控制pod应用的升级、回滚,当然也能控制pod的数量。Service提供一个统一固定入口,负责将前端请求转发给Pod。

 

实践环节

定义一个myapp.yaml文件

apiVersion: apps/v1
# 声明一个Deployment资源对象
kind: Deployment
metadata:
  name: deployment-myapp
spec:
# 通过replicas声明pod个数是2  
  replicas: 2
# 通过标签选择被控制的pod    
  selector:
    matchLabels:
      app: myapp
# 在template中定义pod      
  template:
    metadata:
# 给pod打上标签app=myapp    
      labels:
        app: myapp
    spec:
      containers:
# 声明容器名称,注意不是pod名称,pod名称应该定义在metadata中
      - name: myapp
        image: ikubernetes/myapp:v1
        ports:
        - name: http
          containerPort: 80
# 在一个yaml文件中通过---分割多个资源对象          
---
apiVersion: v1
# 声明一个Service资源对象
kind: Service
metadata:
  name: service-myapp
spec:
# service-myapp将选择标签包含app=myapp的pod
  selector:
    app: myapp
  ports:
  - name: http
# Service监听端口  
    port: 80
# 转发到后端Pod的端口号   
    targetPort: 80

 部署这个资源清单 

kubectl apply -f myapp.yaml

分享到:
评论

相关推荐

    k8s tutorials - k8s 教程( pod, deployment, service, ingress, conf)

    k8s tutorials | k8s 教程( pod, deployment, service, ingress, conf) 在学习本教程前,需要注意本教程侧重于实战引导,以渐进式修改代码的方式,将从最基础的 container 容器的定义开始,经过 pod, deployment, ...

    k8s pod-infrastructure.tgz 软件包,用于 k8s部署基础包

    《K8s Pod基础设施软件包详解》 在现代云计算领域,Kubernetes(简称K8s)作为容器编排的领头羊,已经成为管理和部署应用程序的标准工具。...理解这些文件的作用和相互关系,对于有效地管理和优化K8s集群至关重要。

    6-k8s部署之Deployment+Pod+Service1

    Service 提供了稳定的访问接口,即使后端 Pod 在不断变化,Service 的 IP 和端口保持不变,从而保证外部访问的连续性。 创建 Pod 的过程通常涉及编写 YAML 文件,如 `test_pod.yaml`,其中定义了 Pod 的元数据(如...

    k8s deployment service 实现例子.pdf

    首先使用Deployment来创建和管理Pod,然后通过Service来暴露这些Pod,提供给内部或者外部访问。 ### 具体例子说明 1. **创建Deployment** 创建一个Deployment定义文件,例如`nginx-deployment.yaml`,其中包括...

    K8S监控模板,用于k8S集群Pod监控

    - kube-state-metrics:收集K8S对象的状态信息,如Pod、Deployment、Service等。 - Prometheus:流行的开源监控系统,可与K8S集成,收集和存储指标。 - Grafana:可视化工具,用于展示Prometheus收集的数据,创建...

    在k8s中部署prometheus的镜像

    根据实际需求,配置Prometheus以发现k8s中的服务或Pod,如使用KubernetesSD(Kubernetes Service Discovery)。 6. (可选)部署Alertmanager 类似地,创建Alertmanager的Deployment和服务,并配置相应的yaml文件。...

    k8s+k8s+pod介绍与网络通讯+配合博文

    本文将深入探讨k8s中的Pod、控制器、网络架构以及Flannel网络解决方案,同时阐述不同层次的网络通信机制。 1、k8s的Pod介绍 Pod是k8s的基本调度单元,它代表了运行在一个或多个容器中的应用程序实例。Pod封装了一个...

    K8S入门基础课件docx版本

    2. **Service**: Service是K8S中的抽象层,它定义了一种访问Pod的方式,提供了负载均衡和持久化DNS名称。即使Pod重启,Service仍然可以继续提供服务。 3. **Deployment**: Deployment是用于管理Pod和ReplicaSet的...

    k8s容器管理工具视频教程.zip

    04-k8s的基础单元pod.mp4 k8s-day2 01-副本控制器rc.mp4 02-新副本控制器deployment.mp4 03-容器的网络访问service.mp4 04-tomcat-app项目持久化.mp4 k8s-day3 01-k8s的dahsboard部署.mp4 02-k8s的dns和heapster监控...

    k8s极速入门赠送培训视频.zip

    39 kubernetes极速入门k8s集群核心概念 Service通过资源清单文件创建 Service ClusterlP. mp4 40 kubernetes极速入门k8s集群核心概念 Service通过资源清单文件创建 Service Node Port. mp4 41 ...

    k8s-test_java和k8s_k8s环境日常_k8s_

    2. Kubernetes API客户端:Java开发者可以使用Kubernetes的Java客户端库(如io.kubernetes.client-java)直接与Kubernetes API交互,实现自动化运维任务,如创建、更新和删除Pod、Service、Deployment等资源。...

    K8s概述、原理及应用.pdf

    - **定义**:Pod是K8s中最小的可部署单位,一个Pod可以包含一个或多个容器。 - **作用**:Pod为容器提供了一个共享的网络命名空间和存储环境,使得容器之间的通信更为简单直接。 #### 服务(Service) - **定义**:...

    K8S监控blackbox-exporter镜像及资源清单文件

    在K8S中部署Blackbox Exporter通常涉及创建一个Deployment和一个Service。Deployment定义了Blackbox Exporter的Pod规格,包括使用的镜像、端口暴露等信息;Service则用来让集群内部其他组件可以访问Blackbox ...

    k8s容器集群讲义.zip

    1. **Kubernetes基础知识**:K8s的核心概念包括Pod、Service、Deployment、ReplicaSet、ConfigMap、Secret等。Pod是K8s的基本运行单元,包含一个或多个紧密关联的容器;Service是容器的抽象,提供一种方法来访问Pod...

    K8S部署+实战+集群架构图.zip

    9. **K8S网络模型**:Kubernetes采用了独特的网络模型,每个Pod有自己的IP地址,Pod间通信如同在同一网络,而Service提供虚拟IP以实现负载均衡和对外访问。 10. **扩展性与容错**:Kubernetes通过Horizontal Pod ...

    k8s安装文档和系统间集成ppt

    本文将围绕“k8s集群安装文档”和“K8S的Service实现以及系统间集成”的主题,深入探讨Kubernetes的基础知识、安装流程以及服务间的通信机制。 首先,我们要了解Kubernetes的基本概念。Kubernetes由Google开发,现...

    k8s视频教程入门到进阶(基于V1.19版本).rar

    2. **核心概念**:了解K8s的基本单元,如Pod(应用实例)、Service(服务发现和负载均衡)、Deployment(应用部署)、ReplicaSet(副本集,保证应用的高可用性)等。 3. **集群架构**:K8s集群由Master节点和Worker...

    k8s入门介绍,k8s多master多noede安装部署教程

    * apiserver:提供k8s api,是整个系统的对外接口,提供资源操作的唯一入口,供客户端和其它组件调用,提供了k8s各类资源对象(pod,deployment,Service等)的增删改查,是整个系统的数据总线和数据中心,并提供认证...

    Kubernetes(k8s)2020版入门笔记和资料(尚).zip

    Pod的生命周期管理和网络配置由k8s负责。 2. **Service**: 定义了如何访问Pod的逻辑抽象,提供了一种稳定的IP和端口来访问不断变化的Pod集合。 3. **Deployment**: 用于声明式地更新应用的副本数量,实现滚动更新...

Global site tag (gtag.js) - Google Analytics