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) 在学习本教程前,需要注意本教程侧重于实战引导,以渐进式修改代码的方式,将从最基础的 container 容器的定义开始,经过 pod, deployment, ...
《K8s Pod基础设施软件包详解》 在现代云计算领域,Kubernetes(简称K8s)作为容器编排的领头羊,已经成为管理和部署应用程序的标准工具。...理解这些文件的作用和相互关系,对于有效地管理和优化K8s集群至关重要。
Service 提供了稳定的访问接口,即使后端 Pod 在不断变化,Service 的 IP 和端口保持不变,从而保证外部访问的连续性。 创建 Pod 的过程通常涉及编写 YAML 文件,如 `test_pod.yaml`,其中定义了 Pod 的元数据(如...
首先使用Deployment来创建和管理Pod,然后通过Service来暴露这些Pod,提供给内部或者外部访问。 ### 具体例子说明 1. **创建Deployment** 创建一个Deployment定义文件,例如`nginx-deployment.yaml`,其中包括...
- kube-state-metrics:收集K8S对象的状态信息,如Pod、Deployment、Service等。 - Prometheus:流行的开源监控系统,可与K8S集成,收集和存储指标。 - Grafana:可视化工具,用于展示Prometheus收集的数据,创建...
根据实际需求,配置Prometheus以发现k8s中的服务或Pod,如使用KubernetesSD(Kubernetes Service Discovery)。 6. (可选)部署Alertmanager 类似地,创建Alertmanager的Deployment和服务,并配置相应的yaml文件。...
本文将深入探讨k8s中的Pod、控制器、网络架构以及Flannel网络解决方案,同时阐述不同层次的网络通信机制。 1、k8s的Pod介绍 Pod是k8s的基本调度单元,它代表了运行在一个或多个容器中的应用程序实例。Pod封装了一个...
2. **Service**: Service是K8S中的抽象层,它定义了一种访问Pod的方式,提供了负载均衡和持久化DNS名称。即使Pod重启,Service仍然可以继续提供服务。 3. **Deployment**: Deployment是用于管理Pod和ReplicaSet的...
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监控...
39 kubernetes极速入门k8s集群核心概念 Service通过资源清单文件创建 Service ClusterlP. mp4 40 kubernetes极速入门k8s集群核心概念 Service通过资源清单文件创建 Service Node Port. mp4 41 ...
2. Kubernetes API客户端:Java开发者可以使用Kubernetes的Java客户端库(如io.kubernetes.client-java)直接与Kubernetes API交互,实现自动化运维任务,如创建、更新和删除Pod、Service、Deployment等资源。...
- **定义**:Pod是K8s中最小的可部署单位,一个Pod可以包含一个或多个容器。 - **作用**:Pod为容器提供了一个共享的网络命名空间和存储环境,使得容器之间的通信更为简单直接。 #### 服务(Service) - **定义**:...
在K8S中部署Blackbox Exporter通常涉及创建一个Deployment和一个Service。Deployment定义了Blackbox Exporter的Pod规格,包括使用的镜像、端口暴露等信息;Service则用来让集群内部其他组件可以访问Blackbox ...
1. **Kubernetes基础知识**:K8s的核心概念包括Pod、Service、Deployment、ReplicaSet、ConfigMap、Secret等。Pod是K8s的基本运行单元,包含一个或多个紧密关联的容器;Service是容器的抽象,提供一种方法来访问Pod...
9. **K8S网络模型**:Kubernetes采用了独特的网络模型,每个Pod有自己的IP地址,Pod间通信如同在同一网络,而Service提供虚拟IP以实现负载均衡和对外访问。 10. **扩展性与容错**:Kubernetes通过Horizontal Pod ...
本文将围绕“k8s集群安装文档”和“K8S的Service实现以及系统间集成”的主题,深入探讨Kubernetes的基础知识、安装流程以及服务间的通信机制。 首先,我们要了解Kubernetes的基本概念。Kubernetes由Google开发,现...
2. **核心概念**:了解K8s的基本单元,如Pod(应用实例)、Service(服务发现和负载均衡)、Deployment(应用部署)、ReplicaSet(副本集,保证应用的高可用性)等。 3. **集群架构**:K8s集群由Master节点和Worker...
* apiserver:提供k8s api,是整个系统的对外接口,提供资源操作的唯一入口,供客户端和其它组件调用,提供了k8s各类资源对象(pod,deployment,Service等)的增删改查,是整个系统的数据总线和数据中心,并提供认证...
Pod的生命周期管理和网络配置由k8s负责。 2. **Service**: 定义了如何访问Pod的逻辑抽象,提供了一种稳定的IP和端口来访问不断变化的Pod集合。 3. **Deployment**: 用于声明式地更新应用的副本数量,实现滚动更新...