kubernetes的pod基础

  • kubernetes的pod基础

    • pod概念

      • pod(豆荚),是k8s的最小管理单元。是一个或多个容器的组合,这些容器共享存储,网络和命名空间,以及运行规范,pod内的容器统一的进行安排和调度。pod是一组具有共享命名空间,IP地址和端口的容器的集合。

      • pod中必须包含的一个容器pause容器,该容器是容器内其他容器的父容器,主要负责回收僵尸进程,可以让同一个pod内的不同容器共享粗出,网络,pid等。

    • pod的特点

      • 网络

        • 每一个pod都会被指派唯一的一个IP地址,pod中每一个容器共享网络命名空间,包括网络端口。在同一个pod内的容器可以通过localhost互相通信。需要与外部通信时,需要通过端口映射来实现。

      • 存储

        • pod能被指定共享存储卷的集合,pod中的所有容器都能访问该存储卷,也支持持久化存储。

    • pod的命令

      • 创建pod

        • kubectl run pod名 --image=镜像名 --labels=“app=nginx”

            • kubectl run nginx --image=nginx:1.7.9 --labels="app=nginx“

        • 如果不指定pod到指定的命名空间,默认会创建到default的空间

      • 查看pod

        • kubectl get pod

          • 不加命名空间,查看的是default空间的pod

          • -A 显示所有命名空间

          • 获取到的pod的状态

              • 常见的pod的状态

        • 显示pod的详细信息

          • kubectl get pod pod名 -o wide

            • 除了显示基本信息外还显示了分配的IP,所在节点等信息
          • kubectl get pod名 -o yaml

            • 以yaml格式显示pod的详细信息

        • 查看pod日志

          • kubectl logs pod名称

        • kubectl describe pod pod名

        • kubectl get 常用于获取同一资源类型的一个或者多个资源对象,可以使用-o 指定输出格式

        • kubectl describe 侧重于描述指定资源的各方面的详细信息,不仅会返回节点信息,还会返回在其上运行的pod的摘要,事件信息等。

      • 对pod中容器的操作

        • 在特定的容器中执行指定的命令

            • kubectl exec nginx -c nginx-- date

              • -c 容器名称

              • -- 后跟需要执行的命令

        • 登录容器

          • kubectl exec it nginx -c nginx -- bash

            • 如过不加-c指定容器则会登录到第一个容器中

        • 在线编辑运行中的资源对象

          • kubectl edit pod nginx

            • 以yaml格式显示,修改完毕后退出即可生效

        • 端口映射

          • kubectl port-forward --address 0.0.0.0 pod/nginx 8080:80

            • --address 是主机的IP地址

            • 命令会在前台运行,适合临时测试使用,停止该进程后,映射就停止。

        • 在宿主机与容器之间拷贝文件

          • 拷贝容器内的文件到宿主机

            • kubectl cp 容器名:文件路径 宿主机存放位置(支持重命名)

          • 拷贝宿主机上的文件到容器内,命令不变位置改变即可。

      • 删除pod

        • kubectl delete pod pod名

    • pod探针

      • 为了确保运行起来的容器能够处理请求,k8s采用了探针机制来进行健康状态检查

      • pod探针实现健康状态检查的方式

        • Execaction

          • 在容器内执行命令,如果返回值为0,认为容器健康

        • TCPsocketAction

          • 通过tcp连接检查指定容器的端口,如果端口开放,认为容器正常

        • HTTPGetAction

          • 对指定的uri进行Get请求,如果状态码在200-400之间,认为容器正常。

      • pod探针检查容器后获得的状态

        • success

          • 成功通过检查

        • failure

          • 容器检查失败

        • Unknown

          • 未知,不采取任何措施

      • pod探针的种类

        • livenessProbe

          • 存活探针,判断容器是否正常运行,如果失败则杀掉容器(注意不是pod),然后根据重启策略决定是否重启容器。

        • readinessProbe

          • 就绪探针,判断容器是否进入ready状态,如果没有则从service的endpoints中删除该容器。

        • startupProbe

          • 启动探针,判断容器内应用是否启动成功,在success状态之前其他探针都处于无效状态。

            • 拿开机来说,该探针负责检测能否开机,开机后其他探针才能进行工作。本质上没有依赖关系,是为了避免资源浪费。

    • pod的镜像拉取

      • 策略

        • always

          • 总是网上拉取

        • Never

          • 从不网上拉取

        • IFNotPressent

          • 本地没有镜像则网上拉取,如果则用本地的,但如果镜像标签为latest,为了保证镜像的版本是最新的,则总会采用网上拉取的方式。

      • 命令

        • kubectl run nginx --image=nginx:1.7.9 --labels="app=nginx" --image-pul1-policy=Never

    • pod的重启策略

      • 策略

        • Always

          • 在容器失效时,总是重启该容器

        • OnFailure

          • 容器以不为0的状态码终止,则会重启该容器

        • Never

          • 从不重启

      • 命令

        • kubectl run nginx --image=nginx:1.7.9 --labels="app=nginx" --restart=OnFailure

    • pod的编排文件

      • 为了批量,附加属性更多,采用命令较为麻烦,因此编排文件就可以帮助我们进行实现以上功能

      • pod编排文件也叫资源清单,采用yaml格式编写,因此要注意同级缩进与键值对的书写格式。

        • 声明式要求

      • pod的资源清单列表

      • 文件语法

        • pod文件的一级属性

          • apiVersion

            • 必须能用kubectl api-versions能查询到

            • 不同的版本对应不同的资源类型需要对应

          • kind(种类)

            • 资源类型,必须能用kubectl api-resources查询到

          • metadata(元数据)

            • 主要是资源表示和说明

              • 常用的

                • name

                • namespace

                • labels

          • spec(规范,规格)

            • 配置中最重要的部分,是对各个资源的详细描述

              • containers 容器列表,定义商城的详细信息

              • nodeName,根据nodeName的值将pod调度到指定的node节点上。

              • nodeselector 根据该参数定义的信息选择将该pod调度到包含这些label的node上。

                • selector 选择器

              • hostNetwork 是否使用宿主机网络,默认为false,设置为true表示使用宿主机网络。

              • volumes存储卷,用于定义pod上面挂载的存储信息。

              • restartPolicy重启策略,表示pod在遇到故障时的处理策略。

          • status(状态信息)

            • 一般由k8s自动生成

        • 查看各个资源的可配置项

          • kubectl explain pod

          • kubectl explain deployment

          • kubectl explain service

          • kubectl explain pod.metadata

          • kubectl explain pod.spec.containers

          • 语法

            • kubectl explain 资源类型

            • kubectl explain 资源类型.子属性

      • 简单的pod编排文件的案例

        • 通过编排文件进行启动

          • kubectl apply -f 编排文件

            • 会在创建是依据文件更新资源

          • kubectl create -f 编排文件

            • 创建时资源已存在则失败

    • 暴露端口

      • kubectl expose pod nginx-php --port=8080 --target-port=80 --type=NodePort --name=nginx-php

        • service有关

      • 查看端口映射

        • kubectl get svc pod名 -o wide

    • 通过kubeadm安装的在/etc/kubenetes/maninfests/下

      • 在该目录下放置编排文件会自动生成对应的pod,被称为静态pod。

      • 不能通过apiserver进行管理,放在那个node上那个node该pod就会固定生成在那个node上。

      • 删除办法

        • 删除对应的文件对应的pod就会被删除

    • pod的启动阶段

      • pending

        • 已接受但没进行实际处理

      • running

        • 容器正常运行

      • succeeded

        • 不持续运行的pod的运行完毕的退出状态

      • failed

        • 所有容器都已经终止

      • unknown

        • 未知状态

    • pod类的故障排除步骤

      • 查看pod事件

        • kubectl describe TYPE NAME PREFIX

      • 查看pod日志

        • kubectl logs <POD NAME>[-c Container NAME]

      • 状态为running但是服务不正常

        • kubectl exec -it <POD NAME> bash

      • 查看集群信息

        • kubectl get nodes -o wide

        • kubectl cluster-info

      • 查看kubelet日志

        • journalctl -xefu kubelet

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

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

相关文章

【TCP/IP】自定义应用层协议,常见端口号

互联网中&#xff0c;主流的是 TCP/IP 五层协议 5G/4G 上网&#xff0c;是有自己的协议栈&#xff0c;要比 TCP/IP 更复杂&#xff08;能够把 TCP/IP 的一部分内容给包含进去了&#xff09; 应用层 可以代表我们所编写的应用程序&#xff0c;只要应用程序里面用到了网络通信…

进程间的通信3——IPC对象通信->共享内存、网络通信

一、共享内存 1、原理 直接对实际物理内存进行操作&#xff0c;不用先拷贝到用户空间再到内核空间&#xff08;物理内存&#xff09;。 2、特点 &#xff08;1&#xff09;共享内存是一块内核预留的空间&#xff1b; &#xff08;2&#xff09;最高效的通信方式。 3、操作 产…

springboot+Quartz通过数据库控制定时任务执行与时间

前言 在我们的springboot项目中&#xff0c;有很多种实现定时任务的方式 有用最简单的 Scheduled 实现定时任务,即&#xff1a; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component;Component EnableScheduling p…

【RTT-Studio】详细使用教程十三:UART的DMA 接收及轮询发送

文章目录 一、简介二、RTT配置三、使用信号量接收四、使用消息队列接收五、测试验证 一、简介 串口是指数据一位一位地顺序传送&#xff0c;其特点是通讯线路简单&#xff0c;只要一对传输线就可以实现双向通信&#xff08;可以直接利用电话线作为传输线&#xff09;&#xff0…

我的创作纪念日【2048】

机缘 2048&#xff0c;是计算机二进制世界里很奇妙的数字&#xff0c;在CSDN上创作的第六年&#xff0c;记录从事本行业的知识学习与总结&#xff0c;好记性不如烂笔头&#xff0c;或许写的东西不如大佬的文章&#xff0c;那么有深度&#xff0c;但自己也是在坚持&#xff0c;…

自动微分autograd实践要点

目录 定义Value手动定义每个 operator 的 _backward() 函数构建反向传播计算链 本文主要参考 反向传播和神经网络训练 大神Andrej Karpathy 的“神经网络从Zero到Hero 系列”之一&#xff0c;提炼一些精要&#xff0c;将反向传播的细节和要点展现出来 定义Value 第一步首先要…

传知代码-自动化细胞核分割与特征分析(论文复现)

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 引言 细胞核分割和分类在医学研究和临床诊断中具有重要意义。精准的细胞核分割能够帮助医生更好地识别和分析细胞核的形态学特征&#xff0c;从而辅助疾病诊断、癌症检测以及药物研发。HoverNet是一种基于深度学…

【GitLab】使用 Docker engine安装 GitLab 2: gitlab-ce:17.3.0-ce.0 拉取

ce版本必须配置代理。 极狐版本可以直接pull 社区版GitLab不支持Alibaba Cloud Linux 3,本操作以Ubuntu/Debian系统为例进行说明,其他操作系统安装说明,请参见安装社区版GitLab。 docker 环境重启 sudo systemctl daemon-reload sudo systemctl restart docker脚本安装 安裝…

苹果手机微信聊天记录删除了怎么恢复?

在日常使用手机的过程中&#xff0c;我们经常会遇到误删微信聊天记录的情况&#xff0c;尤其是对于那些重要的对话记录&#xff0c;一旦丢失可能会带来不小的困扰。今天&#xff0c;我们就来探讨一下如何在苹果手机上恢复被删除的微信聊天记录。 一、利用第三方数据恢复工具 对…

拓客工具,助你多维度筛选客源!

随着大数据与人工智能技术的飞速发展&#xff0c;企业拓客的方式也迎来了前所未有的变革。在这里将分享如何利用拓客工具&#xff0c;在任意行业中精实现高效拓客。 一、高级搜索&#xff1a;最新企业&#xff01; 传统的客户开发方式往往依赖于广撒网式的营销手段&#xff0c;…

Qt实现tcp协议

void Widget::readyRead_slot() {//读取服务器发来的数据QByteArray msg socket->readAll();QString str QString::fromLocal8Bit(msg);QStringList list str.split(:);if(list.at(0) userName){QString str2;for (int i 1; i < list.count(); i) {str2 list.at(i);…

作业8/21

client cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), socket(new QTcpSocket(this)) {ui->setupUi(this); // 设置 UI 界面// 控件初始状态设置为禁用&#xff0c;防止未连接…

Linux timedatectl 命令

timedatectl 是 Linux 系统中用于查询和更改系统日期、时间和时区的工具&#xff0c;它特别适用于那些使用 systemd 作为系统和服务管理器的系统。语法格式为“timedatectl [参数]”。 发现电脑时间跟实际时间不符&#xff1f;如果只差几分钟的话&#xff0c;我们可以直接调整。…

tekton通过ceph挂载node_modules的时候报错failed to execute command: copying dir: symlink

分析&#xff1a; 如果ceph的mountPath和workingDir路径一致的话&#xff0c;就会报错。 解决&#xff1a;node_modules挂载到/workspace下&#xff0c;workingDir的代码mv到/workspace下进行构建。

MyBatis-Plus与PageHelper依赖的jsqlparser库冲突

问题 最近遇到的一个项目升级了SpringBoot到3.x版本了&#xff0c;同时也准备升级MyBatis-Plus&#xff0c;即使用如下依赖&#xff1a; <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><…

初级python代码编程学习----简单的图形化闹钟小程序

我们来创建一个简单的图形化闹钟程序通常需要使用图形用户界面&#xff08;GUI&#xff09;库。以下是使用Python的Tkinter库创建一个基本闹钟程序的步骤&#xff1a; 环境准备 确保已安装Python。安装Tkinter库&#xff08;Python 3.8及以上版本自带Tkinter&#xff0c;无需…

【代码】Swan-Transformer 代码详解(待完成)

1. 局部注意力 Window Attention (W-MSA Module) class WindowAttention(nn.Module):r""" Window based multi-head self attention (W-MSA) module with relative position bias.It supports both of shifted and non-shifted window.Args:dim (int): Number…

用户画像实时标签数据处理流程图

背景 在用户画像中&#xff0c;有一类实时标签&#xff0c;我们既要它能够实时的对外提供数据统计&#xff0c;也要保存到大数据组件中用于后续的对数&#xff0c;圈选的逻辑&#xff0c;本文就看一下用户画像的实时标签的数据流转图 实时标签数据流转图 首先我们肯定是要使…

独立站PrestaShop安装

独立站PrestaShop安装 独立站PrestaShop安装系统需求下载PrestaShop浏览器下载命令行下载 解压PrestaShop创建数据库移动PrestaShop源码到web目录composer安装依赖包nginx配置访问域名进入安装页面选择语言许可协议系统兼容性店铺信息Content of your store系统配置数据库店铺安…

书生大模型学习笔记9 - LMDeploy 量化部署

LMDeploy 量化部署 InternLM 2.5 20b量化前部署W4A16 模型量化量化模型部署streamlit web InternLM 2.5 20b量化前部署 lmdeploy serve api_server \/root/learning/InternLM/XTuner/merged_20b \--model-format hf \--quant-policy 0 \--cache-max-entry-count 0.01\--server…