linux系统kubernetes的pod的概念

pod的基本概念

  • pod
    • 基本概念
    • 存在的意义
    • 容器可选的设置属性
    • 创建pod
      • 单容器pod
        • 策略
      • 多容器pod
      • pod交互
      • pod共享进程
      • 配置节点标签
      • 钩子函数
        • exec执行指令
        • 容器中请求端口
        • 向容器发送http请求
        • 示例

pod

基本概念

pod是集群中最小的部署单元,将这个设计落实到API对象上,容器(Container)就成了Pod属性里一个普通的字段。包含多个容器,也是一组容器的集合一个pod中容器共享网络的命名空间pod是短暂的每个pod都有被称为根容器的pause容器每个pod还包含一个或多个用户业务容器

存在的意义

创建容器使用的是docker,一个docker对应一个容器,一个容器有进程,一个容器运行一个应用程序pod是多进程的设计,运行多个应用程序
一个pod有多个容器,一个容器里面运行一个应用程序pod的存在也是为了亲密性应用
两个应用之间进行交互
网络之间的调用
两个应用需要频繁调用

容器可选的设置属性

"name": 容器名称
"image": 容器镜像
"command": 容器启动指令
"args": 指令参数
"workingDir": 工作目录
"ports": 容器端口
"env": 环境变量
"resource": 资源限制
"volumeMounts": 卷挂载
"livenessProbe": 存活探针
"readinessProbe": 就绪探针
"startupProbe": 启动探针
"livecycle": 钩子函数
"terminationMessagePath": 容器的异常终止消息的路径,默认在 /dev/termination-log
"imagePullPolicy": 镜像拉去策略  Always IfNotPresent Nerver 大驼峰 小驼峰
"securityContext": 安全上下文
"stdin": 给容器分配标准输入,类似docker run -i
"tty": 分配终端  

创建pod

单容器pod

vim mysql.yamlapiVersion: v1
kind: Pod  
metadata:name: mysqllabels:    #定义标签name: mysql
spec:restartPolicy: OnFailure   #重启策略containers:- name: mysqlimage: mysql:5.7imagePullPolicy: IfNotPresentenv:    #环境变量- name: MYSQL_ROOT_PASSWORD   value: "123456"resources:     #资源限制limits:    memory: "1024Mi"cpu: "1000m"ports:- containerPort: 3306nodeSelector:kubernetes.io/hostname: kub-k8s-node2# nodeName: kub-k8s-node2kubectl apply -f mysql.yaml    //执行文件
策略
restartPolicy:
重启策略,可选参数有:
Always:Pod中的容器无论如何停止都会自动重启
OnFailure: Pod中的容器非正常停止会自动重启
Never: Pod中的容器无论怎样都不会自动重启imagePullPolicy:
镜像拉取策略,可选参数有:
Always:总是重新拉取
IfNotPresent:默认,如果本地有,则不拉取
Never:只是用本地镜像,从不拉取pod.spec.restartPolicy:
恢复策略,参数有:
Always(默认):在任何情况下,只要容器不在运行状态,就会自动重启容器。
OnFailure:只有容器异常时,才自动重启容器。
Never:无论容器处于何种状态,Kubernetes 都不会自动重启容器,即永远不会重启容器nodeSelector:
节点选择器:可以指定node的标签,查看标签指令:
nodeName:
节点名称: 可以指定node的名称进行调度kubectl get node --show-labels

多容器pod

vim test.yamlapiVersion: v1
kind: Pod
metadata:name: my-podlabels:name: my-pod
spec:containers:- name: writeimage: centos:7command: ["bash", "-c", "for i in {1..100}; do echo $i >> /data/hello; sleep 1; done"]volumeMounts:- name: datamountPath: /data- name: readimage: centos:7command: ["bash", "-c", "tail -f /data/hello"]volumeMounts:- name: datamountPath: /datavolumes:- name: dataemptyDir: {}kubectl apply -f test.yaml    //执行文件
其中两个容器,一个容器写内容,一个容器读取内容

pod交互

vim host-alias.yaml---
apiVersion: v1
kind: Pod
metadata:name: centoslabels:name: centos
spec:containers:- name: centosimage: centos:7command:- "tail"- "-f"- "/dev/null"hostAliases:      #本地域名解析- ip: "192.168.100.128"hostnames:- "master"- "k8s-master"- "apiserver"# 字段解析
command:
启动容器时执行的指令,类似于docker run -it 镜像 tail -f /dev/nullhostAliases:
在容器中的/etc/hosts文件中配置本地解析
pod内访问网站
curl svc的名字.命名空间

pod共享进程

vim pod.yml            #修改如下。最好是提前将镜像pull下来。
---
apiVersion: v1
kind: Pod
metadata:name: websitelabels:app: website
spec:shareProcessNamespace: true  #共享进程名称空间containers:- name: test-webimage: daocloud.io/library/nginxports:- containerPort: 80- name: busyboximage: daocloud.io/library/busyboxstdin: truetty: truekubectl apply -f pod.yml           //创建pod
1. 定义了 shareProcessNamespace=true
表示这个 Pod 里的容器要共享进程(PID Namespace)如果是false则为不共享。
2. 定义了两个容器:
一个 nginx 容器
一个开启了 tty 和 stdin 的 busybos 容器在Pod的YAML文件里声明开启它们俩,等同于设置了docker run里的-it(-i即stdin,-t即tty)参数。此 Pod被创建后,就可以使用shell容器的tty跟这个容器进行交互了。

配置节点标签

添加标签
kubectl label pod pod名称 标签名=标签值
kubectl label pod mysql password=0
删除标签
kubectl label pod pod名称 需要移除的标签名-
kubectl label pod mysql password-查看标签
kubectl get pods --show-labels

钩子函数

kubernetes 在主容器启动之后和删除之前提供了两个钩子函数

post start:容器创建之后执行,如果失败会重启容器

pre stop:容器删除之前执行,执行完成之后容器将成功删除,在其完成之前会阻塞删除容器的操作


钩子函数有三种定义方式:

exec执行指令
lifecycle:postStart: exec:command:- cat- /etc/hosts
容器中请求端口
lifecycle:postStart:tcpSocket:port: 8080
向容器发送http请求
lifecycle:postStart:httpGet:path: /                  # URI地址port: 80                 # 端口号host: 192.168.96.10     # 主机地址  scheme: HTTP             
示例
$ cat nginx-lifecycle.yaml 
apiVersion: v1
kind: Pod
metadata:name: nginx-lifecyclenamespace: defaultlabels:app: nginx
spec:containers:- name: nginx-lifecycleimage: nginx:1.16.1ports:- containerPort: 80protocol: TCPlifecycle:   #探针健康检查postStart:exec:command: ["/bin/sh", "-c", "echo '<h1>this is a nginx-lifecycle test page</h1>' > /usr/share/nginx/html/index.html"]     #启动时的钩子preStop:exec:command: ["/usr/sbin/nginx", "-s", "quit"]   #关闭时的钩子$ kubectl apply -f nginx-lifecycle.yaml 
pod/pod-lifecycle created 

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

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

相关文章

基于Java的大学计算机课程管理平台(Vue.js+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 实验课程档案模块2.2 实验资源模块2.3 学生实验模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 实验课程档案表3.2.2 实验资源表3.2.3 学生实验表 四、系统展示五、核心代码5.1 一键生成实验5.2 提交实验5.3 批阅实…

面试笔记——Redis(缓存击穿、缓存雪崩)

缓存击穿 缓存击穿&#xff08;Cache Breakdown&#xff09;&#xff1a; 当某个缓存键的缓存失效时&#xff08;如&#xff0c;过期时间&#xff09;&#xff0c;同时有大量的请求到达&#xff0c;并且这些请求都需要获取相同的数据&#xff0c;这些请求会同时绕过缓存系统&a…

【GameFramework框架内置模块】8、文件系统(File System)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录&#xff1a; https://blog.csdn.net/q7…

登录-前端部分

登录表单和注册表单在同一个页面中&#xff0c;通过注册按钮以及返回按钮来控制要显示哪个表单 一、数据绑定和校验 &#xff08;1&#xff09;绑定数据&#xff0c;复用注册表单的数据模型&#xff1a; //控制注册与登录表单的显示&#xff0c; 默认false显示登录 true时显…

【MySQL】4. 表的操作

表的操作 1. 创建表 语法&#xff1a; CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;说明&#xff1a; field 表示列名 datatype 表示列的类型 character set 字符集&#xff0c…

java方法的引用传递和值传递

1、方法的值参数传递 下面代码&#xff0c;它会在控制台输出什么&#xff1f; public class ArrayTest {public static void main(String[] args) {int number 100;System.out.println(number);change(number);System.out.println(number);}public static void change(int n…

vue3使用qrcodejs2-fix生成背景透明的二维码

qrcodejs官方仓库&#xff1a;GitHub - davidshimjs/qrcodejs: Cross-browser QRCode generator for javascript qrcodejs2-fix 是一个用于生成QR码的JavaScript库&#xff0c;使用的时候先安装&#xff0c;然后通过设置前景色和背景色可以控制显示的二维码效果。想生成透明背…

手撕算法-二叉树的镜像

题目描述 操作给定的二叉树&#xff0c;将其变换为源二叉树的镜像。数据范围&#xff1a;二叉树的节点数 0≤_n_≤1000 &#xff0c; 二叉树每个节点的值 0≤_val_≤1000要求&#xff1a; 空间复杂度 O(n) 。本题也有原地操作&#xff0c;即空间复杂度 O(1) 的解法&#xff0c…

士兵排列问题

解法一&#xff1a; deque实现队头入队和队尾入队即可得到编号排列&#xff0c;每个士兵有二个属性&#xff1a;编号、能力值。 #include<iostream> #include<algorithm> #include<deque> #include<vector> using namespace std; #define endl \n st…

汇率与政治的关系?Anzo Capital实例举证

投资者在使用特定货币对交易时&#xff0c;交易者应关注交易所用货币国家的主要政治新闻。众所周知&#xff0c;政治和金融密切相关&#xff0c;因此重要政治消息的发布会对汇率产生强烈影响。 Anzo Capital实例举证&#xff1a;汇率与政治的关系。 其中一个例子&#xff0c…

限流的常见算法

计数器法 计数器算法&#xff0c;也成固定窗口法。可以控制在固定的时间窗口内&#xff0c;允许通过的最大的请求数。 例如&#xff0c;我们设定时间间隔窗口为1分钟&#xff0c;该窗口内的最大请求数max为100。当第1个请求到来时&#xff0c;我们记录下当前窗口内的第一个请…

文件系统 与 软硬链接

目录 一、文件系统 认识磁盘 磁盘存储的逻辑抽象结构 块组的内容 inode Table Data blocks inode Bitmap Block Bitmap Group Descriptor Table Super Block 理解目录 二、软硬链接 软链接​ 硬链接 硬链接数 一、文件系统 之前的博客主题叫做"进程打开文…

Winform编程详解十五:ProgressBar 进度条控件

一、属性介绍 1. (Name) 控件的对象标识符ID 2. BackColor 控件的背景颜色 3. Cursor 鼠标移过该控件显示的光标样式 4. ForeColor 控件的文本颜色 5. UseWaitCursor 使用鼠标的等待光标 6. Enabled 控件激活状态 7. Maximum 进度条的最大值 8. Minimum 进度条的最小…

【物联网应用】基于云计算的智能化温室种植一体化平台

目录 第一章 作品概述 1.1. 作品名称 1.2. 应用领域 1.3.主要功能 1.4.创新性说明 第二章 需求分析 2.1 现实背景 2.2 用户群体及系统功能 2.3 竞品分析 第三章 技术方案 3.1. 硬件组成与来源 3.2. 硬件设计合理性 3.3. 硬件系统设计图 3.4. 接口的通用性与可扩展性 3.5. 代码规…

vue中判断是否使用自定义插槽

在封装自定义组件时&#xff0c;需要判断使用者是否使用了插槽<slot"aaa">&#xff0c;如果没有则使用一个组件中默认的值&#xff0c;反之就用传入的内容<template name"aaa"></template>,实现如下&#xff1a; <div class"lin…

苍穹外卖-day06:HttpClient、微信小程序开发、微信登录(业务流程)、导入商品浏览功能代码(业务逻辑)

苍穹外卖-day06 课程内容 HttpClient微信小程序开发微信登录导入商品浏览功能代码 功能实现&#xff1a;微信登录、商品浏览 微信登录效果图&#xff1a; 商品浏览效果图&#xff1a; 1. HttpClient 1.1 介绍 HttpClient 是Apache Jakarta Common 下的子项目&#xff0c;…

深度解析大模型:概念、架构与应用价值

大模型&#xff0c;作为一种前沿的人工智能技术&#xff0c;已经成为深度学习领域的研究热点和发展趋势。这一概念主要指代那些规模庞大、参数数量众多、结构复杂的机器学习模型&#xff0c;尤其是深度神经网络模型。以下是对大模型的详细介绍&#xff1a; 基本概念 规模参数量…

文件系统I/O FATFS RW 源码分析

文件系统I/O FATFS RW 源码分析 0 参考 FatFs 是用于小型嵌入式系统的通用 FAT/exFAT 文件系统模块。FatFs 整个项目都按照 ANSI C (C89) 编写。与存储器 I/O 解耦良好&#xff0c;便于移植到 8051、PIC、AVR、ARM、Z80、RX 等小型微控制器中。 下面是关于 FAT 文件系统格式…

20.回文链表

给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为 回文链表 。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;head …

linux 安装常用软件

文件传输工具 sudo yum install –y lrzsz vim编辑器 sudo yum install -y vimDNS 查询 sudo yum install bind-utils用法可以参考文章 《掌握 DNS 查询技巧&#xff0c;dig 命令基本用法》 net-tools包 yum install net-tools -y简单用法&#xff1a; # 查看端口占用情况…