Docker/K8S


文章目录

  • 项目地址
  • 一、Docker
    • 1.1 创建一个Node服务image
    • 1.2 volume
    • 1.3 网络
    • 1.4 docker compose
  • 二、K8S
    • 2.1 集群组成
    • 2.2 Pod
      • 1. 如何使用Pod
        • (1) 运行一个pod
        • (2) 运行多个pod


项目地址

  • 教程作者:
  • 教程地址:
https://www.bilibili.com/video/BV1Zn4y1X7AZ?spm_id_from=333.788.player.switch&vd_source=791e6deaa9c8a56b1f845a0bc1431b71&p=19
  • 代码仓库地址:
  • 所用到的框架和插件:
dbt 
airflow

一、Docker

在这里插入图片描述

1.1 创建一个Node服务image

  1. 创建node的image
FROM node // 从官方镜像下载,默认为最新WORKDIR /app  //创建image里的工作目录 COPY . /app   //将当前程序目录的所有文件复制到docker里的/app目录RUN npm install  //安装项目所需要的包EXPOSE 80 //让dokcer将项目的端口暴露为80CMD ["node", "server.js"] //容器启动时候,启动服务
  1. 创建容器
docker build .
  1. 运行容器
docker run -p 3000:80 
  • 存在问题,当serverr.js 或者其他地方的代码发生,并不会发生任何变化,因为当前代码一旦打包成了image,就是只读属性了

  • 所以,每当代码更改,我们需要重新build image,速度会很快,因为进行了缓存

  • 这种缓存的原因是docker的**Layer base **

  • 使用docker run每次都会创建一个新的image,如果代码没有发生任何变化,请docker start 镜像名称,如果不指定端口,他会按照上一次的端口

  • 优化

FROM node // 从官方镜像下载,默认为最新WORKDIR /app  //创建image里的工作目录 COPY package.jsonRUN npm install  //安装项目所需要的包COPY . /app   //将当前程序目录的所有文件复制到docker里的/app目录EXPOSE 80 //让dokcer将项目的端口暴露为80CMD ["node", "server.js"] //容器启动时候,启动服务

1.2 volume

  • 实现容器数据不丢失
  • 主要是将docker内的文件和服务器指定的文件进行关联映射

1.3 网络

  • List item

在这里插入图片描述

在这里插入图片描述

  • 使用docker run -d --name myngix -p 88:80 ngxin 表示,访问本机的88端口,实际上访问的是myngix容器的80端口
  • 每个容器是隔离的,所以容器80端口可以重复,但是88是本机,所以必须唯一

1.4 docker compose

  • 常用指令
    在这里插入图片描述
  • 根据上面的mysql的启动 编写dockercompose
  1. mysql
    在这里插入图片描述

  2. wordpress

在这里插入图片描述

二、K8S

2.1 集群组成

在这里插入图片描述

  • 设计并部署高可用 Kubernetes 集群,优化节点资源配置和网络架构。

  • 使用 Helm Chart 实现应用的标准化部署,支持多环境(Dev/Test/Prod)配置管理。

  • 实现 CI/CD 流水线,通过 Jenkins 和 GitOps(ArgoCD)实现自动化部署和回滚。

  • 配置 HPA 和 Cluster Autoscaler,动态调整资源以应对流量波动,降低 30% 的云资源成本。

  • 部署 Prometheus 和 Grafana 监控系统,设置告警规则,确保 99.99% 的系统可用性。

  • 使用 Istio 实现服务网格,优化流量管理和安全策略,支持蓝绿部署和灰度发布。

**Control Plane C:**控制器

  • Pod:可以看成一个docker 容器
  • Control Plane:资源调度,master节点,只跑CP组件;
    1. api:接收外部的指令,restful风格的api;
    2. etcd:集群所有的后台数据以key-value的形式存储的数据库;(可理解为内部redis)
    3. kube- scheduler:用来监视和控制未指定运行节点的pods的,资源调度的
    4. kube-controller-manager:负责运行控制器节点的 ①节点控制器:负责node出现故障时进行响应;②任务控制器:检测一次性job对象,然后创建pods来运行任务直到完成;③端点分片控制器:提供serivice和Pod的连接;④服务账号控制器:未新的命名空间创建服务账号;调度pods的控制进程

Node组件:

  1. Kubelet:启动pods的工作,由kubelet进行调度,确保pods健康运行,
  2. kube-proxy:维护网络规则,负责集群内外部网络交互

2.2 Pod

  • Pod:Pod类似于豌豆荚,豌豆则是pod里的多个豌豆(容器),pod里的容器共享网络和volume,并且总是一同调度的。简而言之,pod帮我们实现了docker里自己使用docker compose 组织容器;
    pod就是用来管理一组容器的集合

1. 如何使用Pod

  1. 不会直接使用单个pod,而是通过Deployment和Job这些kube-controller-manager来创建Pod;
  2. 一个Pod里可以有单个容器,单容器时,K8s直接管理容器而不是pod;
  3. 多个协同工作的容器,Pod封装多个紧密耦合且共享资源的多容器组成;
  • 查看所有运行的pod状态
kubectl get pods
kubectl get pod -o wide -n kube-system
(1) 运行一个pod
  • 创建一个Pod

在这里插入图片描述

  • 应用pod
kubectl apply -f nginx-pod.yml
  • 删除
kubectl delete -f nginx-pod.yml
(2) 运行多个pod

在这里插入图片描述

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

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

相关文章

算法每日双题精讲 —— 二分查找(寻找旋转排序数组中的最小值,点名)

🌟快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 🌟 别再犹豫了!快来订阅我们的算法每日双题精讲专栏,一起踏上算法学习的精彩之旅吧💪 在算法的…

【踩坑日常,已解决】彻底修改IDEA项目的JDK版本,8改为17

三处修改彻底解决IDEA中JDK版本不对问题(8改为17) 文章目录 三处修改彻底解决IDEA中JDK版本不对问题(8改为17)第一处第二处第三处 第一处 setting -> Build, Execution, Deployment -> Java Compiler -> Target bytecod…

redis的分片集群模式

redis的分片集群模式 1 主从哨兵集群的问题和分片集群特点 主从哨兵集群可应对高并发写和高可用性,但是还有2个问题没有解决: (1)海量数据存储 (2)高并发写的问题 使用分片集群可解决,分片集群…

Nuxt:利用public-ip这个npm包来获取公网IP

目录 一、安装public-ip包1.在Vue组件中使用2.在Nuxt.js插件中使用public-ip 一、安装public-ip包 npm install public-ip1.在Vue组件中使用 你可以在Nuxt.js的任意组件或者插件中使用public-ip来获取公网IP。下面是在一个Vue组件中如何使用它的例子&#xff1a; <template…

搭建Spring Boot开发环境

JDK&#xff08;1.8及以上版本&#xff09; Apache Maven 3.6.0 修改settings.xml 设置本地仓库位置 <localRepository>D:/repository</localRepository> 设置远程仓库镜像 <mirror><id>alimaven</id><name>aliyun maven</name&…

智慧校园在职业学校的实施与展望

随着信息技术的发展&#xff0c;智慧校园的概念逐渐走进人们的视野。智慧校园不仅是一个技术层面的概念&#xff0c;更是教育理念的一次革新。对于职业教育而言&#xff0c;智慧校园的应用更是具有重要意义。通过引入物联网、大数据等先进技术&#xff0c;可以实现教学资源的高…

Excel中LOOKUP函数的使用

文章目录 VLOOKUP&#xff08;垂直查找&#xff09;&#xff1a;HLOOKUP&#xff08;水平查找&#xff09;&#xff1a;LOOKUP&#xff08;基础查找&#xff09;&#xff1a;XLOOKUP&#xff08;高级查找&#xff0c;较新版本Excel提供&#xff09;&#xff1a; 在Excel中&…

React第二十六章(createPortal)

createPortal 注意这是一个API&#xff0c;不是组件&#xff0c;他的作用是&#xff1a;将一个组件渲染到DOM的任意位置&#xff0c;跟Vue的Teleport组件类似。 用法 import { createPortal } from react-dom;const App () > {return createPortal(<div>小满zs<…

k8s 蓝绿发布、滚动发布、灰度发布

在Kubernetes&#xff08;k8s&#xff09;中&#xff0c;蓝绿发布、滚动发布、灰度发布&#xff08;金丝雀发布&#xff09;是三种常见的应用部署和更新策略。下面将分别对这几种发布方式进行说明&#xff0c;并给出相应的例子。 蓝绿发布 蓝绿发布是一种无缝切换版本的部署策…

【R语言】数学运算

一、基础运算 R语言中能实现加、减、乘、除、求模、取整、取绝对值、指数、对数等运算。 x <- 2 y <- 10 # 求模 y %% x # 整除 y %/% x # 取绝对值 abs(-x) # 指数运算 y ^x y^1/x #对数运算 log(x) #log()函数默认情况下以 e 为底 双等号“”的作用等同于identical(…

DeepSeek学术写作测评第一弹:论文润色,中译英效果如何?

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 最近风很大的DeepSeek&#xff0c;持续火出圈&#xff0c;引起了硅谷AI圈的热议。很多学员让娜姐测评一下对于平时需要学术写作润色的论文党&#xff0c;效果究竟怎么样&…

MySQL常用数据类型和表的操作

文章目录 (一)常用数据类型1.数值类2.字符串类型3.二进制类型4.日期类型 (二)表的操作1查看指定库中所有表2.创建表3.查看表结构和查看表的创建语句4.修改表5.删除表 (三)总代码 (一)常用数据类型 1.数值类 BIT([M]) 大小:bit M表示每个数的位数&#xff0c;取值范围为1~64,若…

【数据结构】_C语言实现不带头非循环单向链表

目录 1. 链表的概念及结构 2. 链表的分类 3. 单链表的实现 3.1 SList.h头文件 3.2 SList.c源文件 3.3 Test_SList.c测试文件 关于线性表&#xff0c;已介绍顺序表&#xff0c;详见下文&#xff1a; 【数据结构】_顺序表-CSDN博客 本文介绍链表&#xff1b; 基于顺序表…

WPF进阶 | WPF 数据绑定进阶:绑定模式、转换器与验证

WPF进阶 | WPF 数据绑定进阶&#xff1a;绑定模式、转换器与验证 一、前言二、WPF 数据绑定基础回顾2.1 数据绑定的基本概念2.2 数据绑定的基本语法 三、绑定模式3.1 单向绑定&#xff08;One - Way Binding&#xff09;3.2 双向绑定&#xff08;Two - Way Binding&#xff09;…

【Android】布局文件layout.xml文件使用控件属性android:layout_weight使布局较为美观,以RadioButton为例

目录 说明举例 说明 简单来说&#xff0c;android:layout_weight为当前控件按比例分配剩余空间。且单个控件该属性的具体数值不重要&#xff0c;而是多个控件的属性值之比发挥作用&#xff0c;例如有2个控件&#xff0c;各自的android:layout_weight的值设为0.5和0.5&#xff0…

Qt中Widget及其子类的相对位置移动

Qt中Widget及其子类的相对位置移动 最后更新日期&#xff1a;2025.01.25 下面让我们开始今天的主题… 一、开启篇 提出问题&#xff1a;请看上图&#xff0c;我们想要实现的效果是控件黄色的Widge&#xff08;m_infobarWidget&#xff09;t随着可视化窗口&#xff08;m_glWidge…

[笔记] 极狐GitLab实例 : 手动备份步骤总结

官方备份文档 : 备份和恢复极狐GitLab 一. 要求 为了能够进行备份和恢复&#xff0c;请确保您系统已安装 Rsync。 如果您安装了极狐GitLab&#xff1a; 如果您使用 Omnibus 软件包&#xff0c;则无需额外操作。如果您使用源代码安装&#xff0c;您需要确定是否安装了 rsync。…

【统计的思想】假设检验(二)

假设检验是根据人为设定的显著水平&#xff0c;对被测对象的总体质量特性进行统计推断的方法。 如果我们通过假设检验否定了零假设&#xff0c;只是说明在设定的显著水平下&#xff0c;零假设成立的概率比较小&#xff0c;并不是说零假设就肯定不成立。如果零假设事实上是成立…

2025多目标优化创新路径汇总

多目标优化是当下非常热门且有前景的方向&#xff01;作为AI领域的核心技术之一&#xff0c;其专注于解决多个相互冲突的目标的协同优化问题&#xff0c;核心理念是寻找一组“不完美但均衡”的“帕累托最优解”。在实际中&#xff0c;几乎处处都有它的身影。 但随着需求场景的…

DeepSeek-R1试用

最近DeepSeek太火了&#xff0c;对配置要求不高。刚好放假&#xff0c;下载试试。发现开源大模型的生态做的挺好的&#xff0c;几分钟就能在本地部署一个大模型。 配置 NVIDIA RTX 2060 6GB&#xff08;最低要求 NVIDIA GTX 1060 6GB &#xff09; 下载Ollama Ollama是一个…