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

Kubernetes in action-初相识

初相识Kubernetes

  • 1、构建、运行以及共享镜像
    • 1.1 运行镜像
    • 1.2 构建镜像
    • 1.3 推送镜像
  • 2、Kubernetes初相识
    • 2.1 介绍Pod
    • 2.2 从构建到运行整体流程
    • 2.3 kubectl命令行工具

如有侵权,请联系~
如有错误,也欢迎批评指正~
本篇文章大部分是来自学习《Kubernetes in action》的笔记

虽然业务的发展,单体应用已经无法满足业务的诉求,大家已经从单体应用转向微服务。但是微服务有个难题就是随着服务的增加维护成本变得越来越高,系统的资源不能很好的利用。例如如果某个服务发布部署到哪个机器上,以及服务上的某个机器挂了怎么自动的进行故障转移。所以,Kubernetes就诞生了,可以做到开发维护是一个人,即devops.

1、构建、运行以及共享镜像

在运行之前肯定是先安装docker,安装可以参考官方文档: dockerdocs。

1.1 运行镜像

通过如下命令可以运行执行的镜像:

docker run <image>

docker run 是一个复合命令,它完成了以下两个主要任务:

  1. 检查本地是否存在镜像
    Docker 会首先检查本地是否已经存在指定的镜像。如果镜像已经存在,则直接使用本地镜像。
  2. 如果镜像不存在,则自动拉取镜像
    如果本地没有找到指定的镜像,Docker 会尝试从远程镜像仓库(如 Docker Hub 或私有仓库)拉取镜像。

因为镜像存在不同的版本,每个版本都有唯一的tag名,可以在运行的时候显示的指定tag名,如果没有指定则是最新的latest。

docker run <image>:<tag>

在这里插入图片描述

完整的命令格式:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • IMAGE:要运行的镜像名称。
  • [COMMAND] [ARG…]:可选参数,指定容器启动时运行的命令及其参数。
  • [OPTIONS]:用于配置容器的各种选项。

如:

// -d 后台运行容器
docker run -d nginx
// -p 将主机端口映射到容器端口
docker run -p 8080:80 nginx
// -v 挂载主机的文件到容器中
docker run -v /host/data:/container/data my-image

1.2 构建镜像

业务代码和DockerFile文件准备

首先肯定是先写自己的业务代码然后进行打包,并且将创建一个DockerFile文件【将应用打包成镜像】,DockerFile文件中包含了一系列构建镜像时的命令。DockerFile内容如下:

FROM centos:latest // 这个镜像是基于centos:latest镜像继续创建的COPY ${APP_NAME}.tgz /home/admin/${APP_NAME}/target/${APP_NAME}.tgz
ENTRYPOINT ["source /home/admin/start.sh"] // 容器启动的时候执行如下命令,该命令可以启动应用代码服务

业务代码和DockerFile文件创建完成之后,就可以构建镜像。

执行构建命令
docker守护进程【服务端】就会根据DockerFile文件【需要docker客户端传递给服务端】进行构建镜像,如果docker服务端没有基础镜像【本文是centos:latest】则会从docker仓库拉取。

docker build [OPTIONS] PATH | URL | -
  • PATH:指定包含 Dockerfile 的目录路径。
  • URL:可以从远程仓库(如 Git 仓库)拉取 Dockerfile。
  • -:从标准输入(stdin)读取 Dockerfile 内容。

常用选项:

  • -t 或 --tag:为生成的镜像指定名称和标签(如 my-image:1.0)。
  • –file 或 -f:指定自定义的 Dockerfile 文件名。
  • –no-cache:禁用构建缓存,确保每次重新构建所有层。
  • –pull:强制拉取最新的基础镜像。

例如:

docker build -t [构建之后的镜像名] .
docker build -t my-image -f MyDockerfile .

1.3 推送镜像

镜像构建完只存在本地,只有推送到镜像仓库才可以被其他机器拉取使用。镜像仓库有很多,公开的有Docker Hub、Quay.io等。例如想要将镜像推送到Docker Hub:

  • 需要去docker hub中注册自己的账号
  • 使用docker login进行登陆
  • 然后进行推送到docker hub仓库
docker push [OPTIONS] NAME[:TAG]
  • NAME[:TAG]:要推送的镜像名称和标签。例如:
    my-repo/my-image:latest
    nginx:1.23
  • [OPTIONS]:可选参数(较少使用)。

2、Kubernetes初相识

如果想要配置k8s:

  • 针对于配置单节点的k8s可以使用MiniKube安装仓库;
  • 配置多节点的k8s可以使用Google Kubernetes Engine

2.1 介绍Pod

针对于K8s并不会直接处理容器,他的最小处理单元是pod。

  • 一个物理机器可以有多个pod;
  • 一个pod中可以有多个容器,而多个容器之间运行在同一个网络命名空间,CPU资源共享,但是文件和进程是不同的命名空间,隔离的;一般同一个pod中的多个容器是相关的,例如主容器【业务容器】和sidecar运维容器
  • 当然一个容器中也可以运行不止一个进程。
    在这里插入图片描述

2.2 从构建到运行整体流程

  • 研发首先将自己的业务代码打包,然后和Docker文件一起存储在本地机器或者构建机上。然后执行镜像的构建和推送。
  • 将该镜像运行在k8s上。kubectr就会向k8s的主节点master上发送http请求,主节点就会创建一个新的ReplicationController对象,并且ReplicationController对象会创建一个新的pod,调度器负责将pod调度到某个工作节点上。
  • kublet接收到通知之后就会调用docker去docker仓库拉取相应的镜像,下载成功之后就会创建并启动容器。
    在这里插入图片描述

2.3 kubectl命令行工具

kubectl 是 Kubernetes 的命令行工具,用于与 Kubernetes 集群交互。它允许用户管理集群资源(如 Pod、Deployment、Service 等)以及查看集群状态和日志。
基本语法:

kubectl [command] [TYPE] [NAME] [flags]
  • command:操作类型,例如 get、create、delete。
  • TYPE:资源类型,例如 pod、deployment、service。
  • NAME:资源名称。
  • flags:可选参数,用于指定额外选项。
 // 查看pod
kubectl get pods
// 查看deployments
kubectl get deployments
// 查看service
kubectl get services
// 查看具体的某个pod或者deployment信息
kubectl describe pod <pod-name>
kubectl describe deployment <deployment-name>

相关文章:

  • C++ 类及函数原型详解
  • 通过模仿学习实现机器人灵巧操作:综述(上)
  • 船舶参数(第一版)
  • 交叉熵损失函数:从信息量、熵、KL散度出发的推导与理解
  • 动态规划算法详解(C++)
  • 使用Tortoise-ORM和FastAPI构建评论系统
  • RDK X3新玩法:超沉浸下棋机器人开发日记
  • 通过VSCode远程连接到CentOS7/Ubuntu18等老系统
  • 单精度浮点运算/定点运算下 MATLAB (VS) VIVADO
  • 【大语言模型】大语言模型(LLMs)在工业缺陷检测领域的应用
  • AD相同网络的铜皮和导线连接不上
  • 泽众TestOne精准测试:助力软件开发质量新升级
  • VS Code搭建C/C++开发环境
  • 设置Rocky Linux盒盖不休眠的3个简单步骤
  • 第TR5周:Transformer实战:文本分类
  • MySQL 表结构及日志文件详解
  • 树莓派4B+Ubuntu24.04 电应普超声波传感器串口输出 保姆级教程
  • 国产AI大模型超深度横评:技术参数全解、商业落地全场景拆解
  • Theadlocal内存泄露?没那么夸张
  • 5.1 LangChain:功能强大的框架,适用于构建复杂的LLM驱动应用
  • 玉渊谭天丨“稀土管制让美国慌了”,美军工稀土储备仅够数月
  • 上海发布一组人事任免信息:钱晓、翁轶丛任市数据局副局长
  • 珠海市香洲区原区长刘齐英落马,此前已被终止省人大代表资格
  • 为国出征指纹却无法识别?他刷新了我军在这一项目的最好成绩
  • 中共中央政治局召开会议,分析研究当前经济形势和经济工作,中共中央总书记习近平主持会议
  • 成都一季度GDP为5930.3亿元,同比增长6%