kubernetes最小调度单元Pod概述

news2024/11/14 12:18:41

Pod概述

  • 一.Pod的概念
    • 1.Pod是什么
    • 2.Pod网络共享实现方式
    • 3.Pod存储共享方式
    • 4.创建Pod的流程
  • 二.使用YAML文件定义Pod资源
    • 1.Pod资源清单YAML文件书写技巧
      • 1.YAML语法格式:
      • 2.配置Linux tab缩进两个空格
      • 3.使用kubectl explain帮助命令
    • 2.创建Pod及Pod常用命令
      • 1.创建Pod资源
    • 2.Pod常用命令

一.Pod的概念

K8s官方文档:https://kubernetes.io/
K8s中文官方文档: https://kubernetes.io/zh/
K8s Github地址:https://github.com/kubernetes/kubernetes

1.Pod是什么

官方文档:https://kubernetes.io/docs/concepts/workloads/pods/

Pod是Kubernetes中的最小调度单元,k8s是通过定义一个Pod的资源,然后在Pod里面运行容器,容器需要指定一个镜像,这样就可以用来运行具体的服务。一个Pod封装一个容器(也可以封装多个容器),Pod里的容器共享存储、网络等。也就是说,应该把整个pod看作虚拟机,然后每个容器相当于运行在虚拟机的进程。
在这里插入图片描述
Pod是需要调度到k8s集群的工作节点来运行的,具体调度到哪个节点,是根据scheduler调度器实现的。

可以把pod看成是一个**“豌豆荚”,里面有很多“豆子”**(容器)。一个豌豆荚里可以有很多豆子(容器)
在这里插入图片描述
pod相当于一个逻辑主机–比方说我们想要部署一个tomcat应用,如果不用容器,我们可能会部署到物理机、虚拟机或者云主机上,那么出现k8s之后,我们就可以定义一个pod资源,在pod里定义一个把tomcat容器,所以pod充当的是一个逻辑主机的角色。

2.Pod网络共享实现方式

K8s集群中Pod网络指在集群中,Pod之间和Pod与外部网络之间进行通信的网络,每一个Pod都有唯一的IP地址,Pod中的容器共享该IP地址。

查看Pod得到IP地址

kubectl get pod -n kube-system -o wide

在这里插入图片描述
Pod网络实现方式有很多种,包括如下:

  • 容器网络接口(CNI):CNI是Kubernetes中最常用的Pod网络实现方式之一。它允许不同的网络插件来管理Pod网络,如Flannel、Calico、Weave Net等
  • Kubernetes Service:Kubernetes Service是一种抽象的概念,它允许Pod之间通过Service名称进行通信,而不需要知道具体的Pod IP地址。Service可以通过ClusterIP、NodePort、LoadBalancer等方式进行暴露
  • Ingress:Ingress是Kubernetes中的一种资源对象,它允许将外部流量路由到集群内的Service。Ingress可以通过多种方式进行配置,如Nginx Ingress Controller、Traefik等。

Pod中容器共享网络方式:

在K8S中,启动Pod是,首先会启动一个pause的容器,然后将后续的所有容器都link到这个pause容器,以实现网络共享。如下图所示:
在这里插入图片描述
Pod与Pod共享网络方式:

  • 在同节点不同Pod之间通信:通过linux虚拟以太网设备或者是用两个虚拟接口组成的以太网接口对不同的网络命名空间连接起来通信。

  • 不同节点的不同 pod 主机间通信:当跨 pod 通信时,本节点内无法找到目的 pod 的 mac 地址,则会查找三层路由表转发,这需要依靠不同节点间的网路配置来实现。

  • 外部网络和 pod 之间通信:pod 之间通过他们自己的 ip 地址进行通信.(但是 pod 的 ip 地址不是持久的,当集群中 pod 的规模缩减或者 pod 故障或者 node 故障重启后,新的 pod 的 ip 就可能与之前的不一样的,service 的虚拟 IP 可以解决这个问题,因为虚拟 ip 是固定的。)

3.Pod存储共享方式

在创建Pod时可以指定挂载存储卷,Pod中所有容器共享访问此存储卷,允许这个容器共享数据,Pod挂载存储卷后,Pod重启之后数据不会丢失,数据依旧存在。如下图所示:
在这里插入图片描述

4.创建Pod的流程

在这里插入图片描述

  • 第一步:通过kubectl命令向apiserver提交创建pod请求,apiservice接收到创建pod请求后,会将pod的属性信息(metadata)写入到etcd数据库中。
  • 第二步:apiserver触发watch机制准备创建pod资源,信息转发给scheduler调度器,scheduler调度器负责该pod调度到合适的节点,并将调度信息给apiserver,apiserver在写入到etcd数据库中。
  • 第三步:apiserver又通过watch机制,调用kubelet,指定pod信息,调用容器运行时创建并启动pod内容器。
  • 第四步:创建完成后反馈给kubelet,kubelet又将pod状态信息给apiserver,apiserver又将pod的状态信息写入到etcd数据库中。

总结,scheduler负责将pod调度到合适的节点,kubelet会使用容器运行时来创建容器,最后将pod状态写入etcd中。

二.使用YAML文件定义Pod资源

1.Pod资源清单YAML文件书写技巧

1.YAML语法格式:

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可,通常开头缩进两个空格
  • 字符后缩进一个空格,如冒号,逗号,短横杆(-) 等
  • "—"表示一个文件的开始 “…” 表示一个文件的结束
  • "#"表示注释

2.配置Linux tab缩进两个空格

YAML缩进通常为两个空格,我们可以设置一下在linux中tab为两个空格,这样方便我们后续编写YAML清单

cat >> ~/.vimrc << EOF
set tabstop=2
set shiftwidth=2
set expandtab
EOF

3.使用kubectl explain帮助命令

在编写pod资源清单时,忘记pod中存在那些字段参数或不明白参数含义等,可以使用一下帮助命令进行查看参数详细解释。

kubectl explain pod
kubectl explain pod.spec
kubectl explain pod.spec.containers

2.创建Pod及Pod常用命令

1.创建Pod资源

vim pod.yaml 
---
apiVersion: v1       # api版本
kind: Pod            # 定义类型
metadata:            # 元数据
  labels:           
    app: nginx       # 标签
  name: web-nginx    # Pod名称
  namespace: default # Pod名称空间
spec:           
  containers:        
  - name: web-nginx  # 容器名称
    image: nginx     # 容器使用镜像
    imagePullPolicy: IfNotPresent  # 镜像下载策略
    ports:                   
    - containerPort: 80            # 容器内暴露端口

定义完成pod清单后 使用以下命令进行创建

kubectl apply -f pod.yaml 

也可以使用命令行进行创建Pod,不常用,一般测试时使用

kubectl run nginx-1 --image=nginx --port=80

2.Pod常用命令

1、查看Pod调度节点及IP地址

kubectl get pod -o wide

在这里插入图片描述
2、进入Pod容器内:

kubectl exec -it web-nginx -- /bin/bash

如果Pod中存在多个容器 可以使用 -c 来指定进入的容器

kubectl exec -it web-nginx -c web-nginx -- /bin/bash

3、查看pod日志:

kubectl logs web-nginx

当然可以添加 -f 参数来实时查看日志

kubectl logs -f web-nginx

4、通过Pod标签来查看Pod:

kubectl get pod -l app

5、查看Pod具有哪些标签

kubectl get pod --show-labels

6、查看Pod详细信息

kubectl describe pod web-nginx

7.删除Pod

kubectl delete pod web-nginx

当然也可以指定yaml文件来删除文件中定义的资源

kubectl delete -f pod.yaml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1544204.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL-1.数据库的基本操作

1. 数据库的基本操作 show databases; information_schema&#xff1a;信息图式&#xff0c;存储服务器管理数据库的信息 mysql&#xff1a;存放系统信息&#xff0c;用户名密码等 performance_schema&#xff1a;性能图式 sys&#xff1a;系统文件 1.1 创建数据库-studen…

瑞吉外卖实战学习--项目搭建

瑞吉外卖实战学习 前言1、创建springBoot 项目&#xff0c;并引用相关依赖2、配置数据库3、通过注解检测项目是否可以启动成功4、配置前端页面的静态映射4.1 前端文件放置的位置4.2 由于存放的位置并不是默认的文件中&#xff0c;需要将这些文件静态映射4.3 检测静态文件是否可…

003- AutoCoder 使用Web版大模型,性感的Human As Model 模式

这是下面这篇文章的继续。 002- 用 AutoCoder 添加和修改代码 前面我们提到&#xff0c;如何解决你没有API版大模型&#xff0c;或者你的API版大模型太弱&#xff0c;而你只有Web版本的诸如 Kimi/GPT4 的情况下&#xff0c;改如何让AutoCoder帮助你完成编程&#xff1f; 我们有…

数据结构(五)——树与二叉树的应用

5.5 树与二叉树的应用 5.5.1 哈夫曼树 结点的权&#xff1a;有某种现实含义的数值。 结点的带权路径长度&#xff1a;从树的根到该结点的路径长度&#xff08;经过的边数&#xff09;与该结点上权值的乘积。 树的带权路径长度&#xff1a;树中所有叶结点的带权路径长度之和…

Linux——进程信号(二)

目录 1、阻塞信号 1.1、信号其他相关常见概念 1.2、在内核中的表示 1.3、sigset_t 1.4、信号集操作函数 2、捕捉信号 2.1、内核如何捕捉信号 5.2、sigaction 1、阻塞信号 1.1、信号其他相关常见概念 实际执行信号的处理动作被称为信号递达&#xff08;Delivery&#x…

电脑桌面便签,怎么在电脑桌面上设置便签

在数字化时代&#xff0c;电脑已成为我们日常生活不可或缺的一部分。在我们使用电脑进行各种工作和学习的过程中&#xff0c;经常会遇到需要记录临时信息或提醒自己的情况。这时&#xff0c;设置便签在电脑桌面上就成为了一种非常便捷的方法。那么有一个问题&#xff0c;电脑桌…

(一)基于IDEA的JAVA基础8

使用多重if选择结构 多个if条件进行判断: 语法: if(条件1){ 执行语句1&#xff1b; }else if(条件2){ 执行语句2&#xff1b; }else if(条件3){ 执行语句3&#xff1b; }else if (条件4)…… 流程图: 我们来写个好玩的&#xff0c;对暗号: public class Test01 { …

web前端之罗盘时钟、不一样的补零方式、LED字体、padStart

MENU 效果图htmlJavaScriptstyle 效果图 html <div class"clock"><div class"second-box"></div><div class"minute-box"></div><div class"hour-box"></div><div class"day-box&…

atoi函数的使用和模拟实现

1.atoi函数简介 (1).atoi函数原型 &#xff1a;int atoi (const char * str); (2).头文件&#xff1a;<stdlib.h> 用法&#xff1a;将字符串里的数字字符转化为整形数。返回整形值。 注意&#xff1a; 转化时跳过前面的空格字符&#xff0c;直到遇上数字或正负符号才开…

C++中的lambda表达式

引入: 首先来看一个例子 struct fruit {double _price;int _evalute;string _name;fruit(const char* str, int a, double price):_name(str),_evalute(a),_price(price){} }; struct ComparePriceGreater {bool operator()(const fruit& g1, const fruit& gr){return…

redis在docker安装并启动流程

1、启动server docker run -d -p 6379:6379 --name redis01 redis:7.2.4以上命令&#xff0c;每次启动新的Redis容器&#xff0c;数据会丢失。 我们需要挂载数据文件&#xff0c;在宿主机上面&#xff0c;这样就可以持久化数据. 2、挂载数据文件&#xff08;可根据需求选择…

Linux常用操作命令(清单快查版)

Linux常用操作命令&#xff0c;今日先给出快查清单&#xff0c;后续出带命令参数及不同OS的区别语法的相关示例 1. 文件与目录操作 命令描述ls列出目录内容cd切换目录pwd显示当前工作目录mkdir创建目录rmdir删除空目录cp复制文件或目录mv移动或重命名文件或目录rm删除文件或目…

(异步编程)前端八股文修炼Day3

一异步编程异步编程的实现方式&#xff1f; 在 JavaScript 中&#xff0c;异步编程是处理异步操作的重要部分&#xff0c;常见的异步编程实现方式有以下几种&#xff1a; 回调函数&#xff08;Callbacks&#xff09;&#xff1a;回调函数是最基本的异步编程方式&#xff0c;通…

【第三方登录】Google邮箱

登录谷歌邮箱开发者 https://console.developers.google.com/ 先创建项目 我们用的web应用 设置回调 核心主要&#xff1a; 1.创建应用 2.创建客户端ID 3.设置域名和重定向URL 4.对外公开&#xff0c;这样所有的gmail邮箱 都能参与测试PHP代码实现 引入第三方包 h…

智慧园区楼宇AI解决方案

背景 人工智能对于人类的影响要比工业革命发生的速度快10倍,规模大 300倍,影响几乎大3000倍 - 麦肯锡全球研究院;2017年7月20日,国务院印发《新一代人工智能发展规划》,首次把人工智能发展上升为国家战略层面,全面布局面向2030年的中国人工智能发展整体规划;中美同时进…

解密Google Cloud 全新 PaLM2及创新应用

&#x1f4f8;背景 因长期在大模型相关的部门工作&#xff0c;每天接收到很多和AI相关的信息&#xff0c;但小编意识到目前理解到的一些AI知识还有些片面。 恰逢稀土掘金开发者大会有谈到大模型相关的知识&#xff0c;于是借此机会&#xff0c;对大模型相关的一些知识再了解一…

GuLi商城-商品服务-API-三级分类-查询-树形展示三级分类数据

1、网关服务配置路由 2、商品服务 3、启动本地nacos&#xff0c;打开nacos地址看nacos服务列表 4、编写VUE <template> <el-tree :data"menus" :props"defaultProps" node-click"handleNodeClick"></el-tree> </template…

【自我提升】计算机领域相关证书

目录 计算机技术与软件专业资格&#xff08;水平&#xff09;考试证书&#xff08;软考&#xff09;Oracle认证Cisco认证微软认证红帽认证AWS认证 计算机技术与软件专业资格&#xff08;水平&#xff09;考试证书&#xff08;软考&#xff09; 计算机技术与软件专业技术资格&a…

做自配送平台,商家如何发单?平台可以接收那些订单?

为了增加品牌曝光&#xff0c;许多商家选择加入外卖平台&#xff0c;然而随着时间推移&#xff0c;一些问题也逐渐显现&#xff1a;大平台对商家的配送抽佣越来越高&#xff0c;很多商家都选择自配送来降本增效。 但是问题来了&#xff01;目前市面上没有一款产品是自动发单到…

栈应用之---括号匹配

题意描述&#xff1a; 在算术表达式中&#xff0c;除了加、减、乘、除等运算外&#xff0c;往往还有括号。包括有大括号{}&#xff0c;中括号[]&#xff0c;小括号()&#xff0c;尖括号<>等。 对于每一对括号&#xff0c;必须先左边括号&#xff0c;然后右边括号&#xf…