当前位置: 首页 > article >正文

k8s学习记录(二):Pod基础篇

一、前言

上一篇文章中,我们对于k8s有了初步的认识,学习了k8s的架构(Master-Worker),同时也简单的了解了k8s中比较重要的的几个组件,Pod、ReplicaSet、Deployment、Service等等(当然了还有更多的组件,后续会一一讲解)今天我们继续站在一个后端开发的角度去详细学习一下其中的Pod组件。本文先假定k8s已经安装完成(具体如何安装后续会有完整的篇幅讲解)

二、Pod

1、什么是Pod

Pod是k8s中资源分配的最小单位,k8s通过pod来运行容器,例如Pod里可以运行docker容器。一个Pod里可以运行一个或多个容器,容器之间相互共享资源包括但不限于内存、网络、CPU等等。

2、创建一个Pod

1、编写Yaml资源清单

我本地有一个Nginx的Docker 镜像,接下来的示例将用这个镜像来做实验。

我们先编写一份资源清单,完整的资源清单从github上可以查看https://github.com/kubernetes/examples/blob/master/guestbook/all-in-one/guestbook-all-in-one.yaml

apiVersion: v1  #api版本v1
kind: Pod #类型为Pod
metadata:  #元数据
  name: nginx #Pod的name为nginx
spec: #规约
  containers: #容器集合(一个Pod里可以有多个Pod)
  - name: nginx #名称 nginx
    image: nginx:1.23.3 ##重要:镜像
    imagePullPolicy: IfNotPresent #镜像拉取策略:如果不存在再拉取
    ports:
    - containerPort: 80 #端口 80,这里的端口并不会映射到物理机

如果不知道资源清单怎么填写,我们还可以使用k8s提供的命令行的工具来,例如我想知道 spec字段如何填写,我们就可以使用命令 kubectl explain pod.sepc,如下,那个字段不知道就直接查询。

2、基于资源清单创建Pod

编写好资源清单之后,我们使用kubectl apply -f <资源路径>,本案例就是:kubectl apply -f test_pod.yaml

然后我们查看k8s中的pod,kubectl get pods -o wide, 可以看到我们的Pod已经创建了。

k8s为我们创建了一个名为 Nginx的Pod,且分配了IP 10.244.0.52,当然了这个IP在外部是访问不通的,这个是k8s内部的IP,至于如何可以访问放到后面的文章中说明。现在想使用可以先进入当前容器使用命令:

kubect exec -it nginx --/bin/bash

curl 10.244.0.52

3、查看Pod描述

我们可以使用kubectl describe pods nginx来查看我们创建的pod的详细信息,这里看个大概就行,具体的信息用到的时候再查也是可以的。

4、编辑Pod

有时候我们需要编辑Pod,此时使用命令 kubectl edit pods nginx,例如我们想把版本换成1.23.4

5、查看Pod详情

使用Kubectl describe pod <pod_name>可以查看Pod事件,例如 Kubectl describe pod nginx

从图中我们可以看出镜像已经从1.23.3变更为1.23.4,同时还展示了pod的状态为Running,端口为80等信息,最下面的是Pod事件包含Pod是调度、Pod拉取镜像、创建容器、杀死Pod(因为我们编辑了镜像),接着拉取镜像,最后基于最新的镜像创建容器。

6、查看Pod日志

有时候我们需要查看Pod里的日志方便我们排查问题,此时可以用命令 Kubect logs <pod_name>,例如,kubect logs nginx,如下图

7、进入Pod

和我们使用Docker时一样,有时候我们需要进入Pod做一些操作,此时可以用命令 kubectl exec -it <pod_name> --/bin/bash ,例如kubectl exec -it nginx – /bin/bash 这样我们就进入容器内部了。

8、删除一个Pod

删除Pod使用到的命令为kubectl delete pod <pod_name> ,例如我要删除 nginx这个pod命令为,kubectl delete pod nginx

此时名为 nginx的pod已经不存在了(另外两个pod是之前做实验留下的,这里忽略)

三、小结

文章至此,我们对Pod有了更深入一些的了解,当然了这些都只是最基础的Pod操作,包括Pod的增删改查、pod日志查看、进入pod。接下来的文章会继续深入pod其他的一些知识,例如讲解标签、亲和性、容忍度等等。同时如何安装一个k8s集群也会有单独的篇章来讲述,希望对你有所帮助。

四、未完待续


http://www.kler.cn/a/558312.html

相关文章:

  • Java 使用websocket
  • 【多模态处理篇五】【DeepSeek文档解析:PDF/Word智能处理引擎】
  • Git命令详解与工作流介绍:全面掌握版本控制系统的操作指南
  • DeepSeek R1本地+私有云版医疗AI部署开发成功案例技术剖析
  • 机器视觉视觉halcon3d中位姿的定义
  • 运维Ansible面试题及参考答案
  • 09.容器单机编排工具 Docker Compose
  • leetcode hot100-34 合并K个升序链表
  • Swiper插件的运用和学习
  • 自动驾驶与智慧交通:未来城市的交通革命即将来临
  • 基于YOLO11深度学习的运动鞋品牌检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】
  • EquinoxProject:一个适合学习DDD、CQRS、Event Sourcing等技术.Net Web框架搭建开源项目
  • 【落羽的落羽 数据结构篇】树、二叉树
  • 请解释 Vue 中的生命周期钩子,不同阶段触发的钩子函数及其用途是什么?
  • .NET周刊【2月第2期 2025-02-09】
  • Docker Mysql 数据迁移
  • 1.24作业
  • 技术总结汇总
  • 在工业生产中,物料搬运环节至关重要,搬运机器人开启新篇章
  • 【Quest开发】全身跟踪(一)