`

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

分享到:
评论

相关推荐

    6-k8s部署之Deployment+Pod+Service1

    (2)-Pod可以拥有多个容器 (3)-一个Pod内的容器共享同一个卷、同一个 IP、端口空间、IPC 命名空间 (2)-在Service中使用一个选择器(La

    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概述及应用.pdf

    K8s的核心概念包括节点(Node)、Pod、服务(Service)、部署(Deployment)、副本集(ReplicaSet)等。节点是K8s集群中的工作机器,可以是物理机或虚拟机。Pod是K8s的最小部署单元,一个Pod中可以包含一个或多个...

    K8s概述、原理及应用.pdf

    K8s的核心概念包括节点(Node)、Pod、服务(Service)、部署(Deployment)等。节点是K8s集群中的工作机器,负责运行容器化应用;Pod是K8s中最小的部署单元,一个Pod可以包含一个或多个容器;服务用于定义如何访问...

    k8s-nodejs:显示如何将Node.js服务器应用程序部署到Kubernetes集群的示例

    首轮: kubectl create -f deployment.yaml 让豆荚启动并运行: kubectl get pods -l app=nodeapp 然后运行: kubectl create -f service.yaml 该服务在端口6000上运行 检索服务IP地址和端口: export SERVICE_IP...

    Kubernetes Tutorials | k8s 教程

    在学习本教程前,需要注意本教程侧重于实战引导,以渐进式修改代码的方式,将从最基础的 container 容器的定义开始,经过 `pod`, `deployment`, `service`, `ingress`, `configmap`, `secret` 等资源直到用 `helm` ...

    HCIP-Cloud Computing-Container培训视频教程【共16集】.rar

    deployment管理与使用 pod管理与使用 k8s的存储 k8s的网络 labbel与labbel selector service服务发现 melm,rbac权限,k8s日志管理,监控方案1 melm,rbac权限,k8s日志管理,监控方案2 pass概述 k8s简单架构...

    k8s实战之资源和命令

    包括configmap,pod,service,replicaset,namespace,deployment,daemonset,ingress,pv,pvc,sc,role,rolebinding,clusterrole,clusterrolebinding,secret,serviceaccount,statefulset,job,cronjob,...

    容器集群管理系统K8S从入门到精通视频教程

    视频详细讲解,需要的小伙伴自行网盘下载,链接见...Service24-Pod详解-结构和定义25-Pod详解-基本配置26-Pod详解-镜像拉取策略27-Pod详解-启动命令28-Pod详解-环境变量开始学习29-Pod详解-端口设置30-Pod详解-资源配额

    k8s-rds:Kubernetes RDS预配器

    k8s-rds 用于配置AWS RDS数据库的自定义资源定义。 州:测试版-谨慎使用假设条件运行Pod的节点应具有一个实例配置文件,该实例配置文件允许创建和删除RDS数据库和子网。 代码将搜索第一个节点,并从该节点获取子网。...

    kubernetes安装openldap还有phpldapadmin

    此文介绍通过kubernetes安装openldap还有phpldapadmin。 ...主要包括: 从github取得openldap的...启动deployment和service。 查看service,deploy和pod的启动情况。 使用浏览器访问phpldapadmin。 追加group和account。

    毕业设计基于struts+hibernate+spring的图书管理系统

    Deployment imagepullsecret-patcher,指定 ServiceAccount 是 imagepullsecret-patcher 就有了操作 service account 和 secret 的所有权限,并将上面的 secret 挂载到 Deployment pod 内。 可以包含多个镜像库地址...

    kubernetes容器编排

    Container Orchestration Ecosystem Configuration Management ...POD Management Service Controller Multi-host Networking Replication Controller/Deployment Persistent Storage Kubernetes Security

    carvel-ytt-library-for-kubernetes:ytt(https

    app库可构建由Deployment,Service,Ingress和HPA组成的应用程序。 进一步来说: 入口配置有/路径,并指向服务,该服务指向部署 部署根据节点主机名配置Pod反亲和力 默认情况下,部署具有1个Pod副本 HPA将Pod的缩放...

    aws-k8s-provision:轻松地在AWS上部署kubernetes

    AWS 上简化部署kubernetes project的方案一些变量(如集群service 的IP段, pod 分配的ip段等等)均已hardcode方式嵌入其中以便快速部署出kubernetes 环境, 同时方便理解各个组件工作原理以及相应的功能内容中有任何...

    k8s-webhooks-stuffs

    k8s-webhooks-东西此项目docker映像对于该项目的图像,您可以看到此dockerhub存储使用最新图片(图片> = v1.0.5)设置此变异Webhook kubectl apply -f mutating-webhook-configuration.yamlkubectl apply -f ...

    Kubernetes开源书.pdf

    书中详尽阐述了Kubernetes的核心概念,包括Pod、Deployment、Service、StatefulSet等核心资源对象,并通过实例一步步指导读者从环境搭建到应用部署、服务发现、滚动更新、存储管理、网络配置以及安全策略等实战操作...

    Kubernetes/K8S企业容器云平台入门与进阶实战

    接下来,学习Kubernetes核心功能,例如Pod、Deployment、Service、Ingress、Volume、PersistentVolume等知识点,再教你如何将公司项目部署到集群中,然后对集群资源监控和应用日志统一管理。贴近企业生产环境讲解,...

    demoapp-calcservice

    mvn清洁包-DskipTests mvn dockerfile:构建kubectl apply -f src / main / k8s / app-deployment.yaml kubectl获取pod -o宽kubectl获取svc -o宽名称类型集群IP外部IP端口年龄选择器demoapp服务ClusterIP 10.101.213...

Global site tag (gtag.js) - Google Analytics