dockerk8s常用知识点

news2024/7/6 18:31:25

1、什么是docker

容器化和虚拟化对比

▪开源的应用容器引擎,基于 Go 语言开发

▪容器是完全使用沙箱机制,容器开销极低

▪Docker就是容器化技术的代名词 

▪Docker也具备一定虚拟化职能

docker三大核心:

  1. Docker Engine: 提供了一个可以用来运行和管理容器的平台,它由客户端和服务端组成。

  2. Docker Compose: 用于定义和运行多容器Docker应用的工具(单机)。

  3. Docker Swarm: 用于管理Docker集群的工具,可以将多个Docker主机组成的系统转换为单一的虚拟Docker主机(集群)。

2、容器与镜像

▪镜像: 镜像是文件,是只读的,提供了运行程序完整的软硬件资源,是应用程序的"集装箱"

▪容器: 是镜像的实例,由Docker负责创建,容器之间彼此隔离

3、docker执行流程

4、docker常用指令

docker pull 镜像名<:tags> - 从远程仓库抽取镜像 
docker images - 查看本地镜像
docker run 镜像名<:tags> - 创建容器,启动应用
docker ps - 查看正在运行中的镜像
docker rm <-f> 容器id - 删除容器
docker rmi <-f> 镜像名:<tags> - 删除镜像

--容器中执行的命令
格式:docker exec [-it] 容器id 命令
exec 在对应容器中执行命令
-it 采用交互方式执行命令
实例:docker exec -it 0738ed2fe68b /bin/bash

5、Dockerfile构建镜像

▪Dockerfile是一个包含用于组合镜像的命令的文本文档

▪Docker通过读取Dockerfile中的指令按步自动生成镜像

▪docker build -t 机构/镜像名<:tags> Dockerfile目录

tomcat部署应用的dockerfile

FROM tomcat:latest
MAINTAINER ccp
WORKDIR /usr/local/tomcat/webapps   --设置工作目录
ADD docker-web ./docker-web         --复制文件(从宿主机复制到容器)

xxl-job对应的dockerfile

FROM openjdk:8-jre-slim
MAINTAINER xuxueli

ENV PARAMS=""

ENV TZ=PRC        --设置环境常量
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
--RUN 相当于在Build构建时执行命令

ADD target/xxl-job-admin-*.jar /app.jar --复制文件

ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /app.jar $PARAMS"]
--ENTRYPOINT 容器启动时执行的命令

--CMD 容器启动后执行默认的命令或参数

6、镜像分层(layer)

7、dockerFile执行命令

ENV 设置环境常量
RUN 相当于在Build构建时执行命令
ADD 复制文件
ENTRYPOINT 容器启动时执行的命令
CMD 容器启动后执行默认的命令或参数

8、容器间通信

Link单向通信

Bridge网桥双向通信

网桥实现原理--虚拟网卡

9、容器间数据共享(volumn)

格式:
docker run --name 容器名  -v 宿主机路径:容器内挂载路径 镜像名
实例:
docker run --name t1 -v /usr/webapps:/usr/local/tomcat/webapps tomcat

▪创建共享容器
▪docker create --name webpage -v /webapps:/tomcat/webapps tomcat /bin/true
▪共享容器挂载点
▪docker run --volumes-from webpage --name t1 -d tomcat

10、Kubernetes的职责

▪自动化容器的部署和复制

▪随时扩展或收缩容器规模

▪容器分组Group,并且提供容器间的负载均衡

▪实时监控, 即时故障发现, 自动替换

10.1、基本概念

10.2、pod的概念

▪POD是”容器”的容器,可以包含多个”Container”

▪POD是K8S最小可部署单元,一个POD就是一个进程

▪POD内部容器网络互通,每个POD都有独立虚拟IP

▪POD都是部署完整的应用或模块

 ▪Pause容器是基于Docker的pause镜像实现的,它本身不包含任何业务逻辑,但为其他容器提供了网络、存储卷和其他资源的共享访问。Pause容器充当Pod中其他容器的父进程,帮助管理它们的生命周期。它还负责创建和配置Pod的网络命名空间,确保Pod内容器之间的网络通信

10.3、service

  • Service 主要用于提供网络服务,通过 Service 的定义,能够为客户端应用提供稳定的访问地址(域名或 IP 地址)和负载均衡功能,以及屏蔽后端 Endpoint 的变化,是 K8s 实现微服务的核心资源。

利用Rinetd(端口转发工具)实现service的负载均衡

▪Rinetd是Linux操作系统中为重定向传输控制协议工具

▪可将源IP端口数据转发至目标IP端口

▪在Kubernetes中用于将service服务对外暴露

10.4、文件集群共享(NFS)

▪NFS,是由SUN公司研制的文件传输协议

▪NFS主要是采用远程过程调用RPC机制实现文件传输

▪yum install -y nfs-utils rpcbind

10.5、kubeadm/kubelet/kubectl区别

▪kubeadm是kubernetes集群快速构建工具

▪kubelet运行在所有节点上,负责启动POD和容器,以系统服务形式出现

▪kubectl:kubectl是kubenetes命令行工具,提供指令

10.6、部署(Deployment)

▪部署是指Kubernetes向Node节点发送指令,创建容器的过程

▪Kubernetes支持yml格式的部署脚本

▪kubectl create -f 部署yml文件 #创建部署

部署yml样例

与部署相关命令

▪kubectl create -f 部署yml文件 #创建部署
▪kubectl apply -f 部署yml文件 #更新部署配置
▪kubectl get pod [-o wide] #查看已部署pod
▪kubectl describe pod pod名称 #查看Pod详细信息
▪kubectl logs [-f] pod名称 #查看pod输出日志
▪kubectl delete deployment|service #删除部署(Deployment)|服务(Service)

资源限定
containers:
      - name: tomcat-cluster
        image: tomcat:latest
        resources:
          requests:
            cpu: 1 
            memory: 500Mi
          limits: 
            cpu: 2
            memory: 1024Mi

10.7、pod自动扩缩容

手动模式:通过 kubectl scale 命令,这样需要每次去手工操作一次,而且不确定什么时候业务请求量就很大了,所以如果不能做到自动化的去扩缩容的话,这也是一个很麻烦的事情。

自动模式:
1、kubernetes HPA(Horizontal Pod Autoscaling):根据监控指标(cpu 使用率、磁盘、自定义的等)自动扩容或缩容服务中的pod数量,当业务需求增加时,系统将无缝地自动增加适量 pod 容器,提高系统稳定性。

2、kubernetes KPA(Knative Pod Autoscaler):基于请求数对 Pod 自动扩缩容,KPA 的主要限制在于它不支持基于 CPU 的自动扩缩容。

3、kubernetes VPA(Vertical Pod Autoscaler):基于 Pod 的资源使用情况自动设置 pod 的 CPU 和内存的 requests,从而让集群将 Pod 调度到有足够资源的最佳节点上。

各节点CPU、内存等资源的 metrics 信息可以通过 Metrics API 来获取,用户可以直接获取这些 metrics 信息(例如通过执行 kubect top 命令),HPA 使用这些 metics 信息来实现动态伸缩。

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

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

相关文章

C++证道之路第十八章探讨C++新标准

一、复习前面介绍过的C11新功能 1、新类型 C11新增了类型long long 和unsigned long long 新增了类型char16_t 和char32_t 2、统一的初始化 C11扩大了用大括号括起的列表&#xff08;初始化列表&#xff09;的使用范围&#xff0c;使其可以用于所有内置类型和用户定义的类…

大数据Spark教程从入门到精通第三篇:Spark核心模块

一&#xff1a;Spark核心模块 1&#xff1a;概述 Spark最底层的模块是Apache Spark Core&#xff0c;其他的功能都是基于此实现的。 Spark SQL操作结构化数据的模块 Spark Streaming 对流式数据处理的模块。 Spark MLlib对机器学习支持的一个功能模块。学习难度很高 Spark Gra…

dumpsys meminfo 流程中细节

源码基于&#xff1a;Android U 参考&#xff1a; dumpsys meminfo 详解(R) dumpsys meminfo 详解(U) 1. 命令入口 MemBinder frameworks/base/services/core/java/com/android/server/am/AMS.javastatic class MemBinder extends Binder {ActivityManagerService mActivity…

Python-VBA函数之旅-print函数

目录 一、print函数的常见应用场景 二、print函数使用注意事项 三、如何用好print函数&#xff1f; 1、print函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a;神奇夜光杯-CSDN博客 一、print函数的常见应…

Prometheus 2: 一个专门评估其他语言模型的开源语言模型(续集)

普罗米修斯的续集来了。 专有的语言模型如 GPT-4 经常被用来评估来自各种语言模型的回应品质。然而,透明度、可控制性和可负担性等考虑强烈促使开发专门用于评估的开源语言模型。另一方面,现有的开源评估语言模型表现出关键的缺点:1) 它们给出的分数与人类给出的分数存在显著差…

Unity射击游戏开发教程:(11)制造敌人爆炸

增加爆炸效果 爆炸一切都变得更好!尤其是当你消灭敌人时。在这篇文章中,我将讨论如何在敌人被击中时为其添加爆炸动画。 在敌人的预制件中,您将需要创建一个新的动画。查看控制动画的动画器,默认情况下将从进入动画到敌人爆炸动画。这意味着,一旦敌人被实例化,敌人爆炸…

02、Kafaka 简介

02、Kafka 简介 1、 Kafka 简介 Apache Kafka 是一个分布式的发布-订阅消息系统&#xff0c;最初由 LinkedIn 公司开发&#xff0c;并在 2010 年贡献给了 Apache 软件基金会&#xff0c;成为一个顶级开源项目。Kafka 设计之初是为了满足高吞吐量、可扩展性、持久性、容错性以…

深度学习中的不确定性量化:技术、应用和挑战综述(一)

不确定性量化(UQ)在减少优化和决策过程中的不确定性方面起着关键作用&#xff0c;应用于解决各种现实世界的科学和工程应用。贝叶斯近似和集成学习技术是文献中使用最广泛的两种UQ方法。在这方面&#xff0c;研究人员提出了不同的UQ方法&#xff0c;并测试了它们在各种应用中的…

10.Java对象内置结构

文章目录 Java对象内置结构1.Java对象的三个部分1.1.对象头1.2.对象体1.3.对齐字节 2.对象结构中核心字段的作用2.1.MarkWord(标记字)2.2.Class Pointer(类对象指针)2.3.Array Length(数组长度)2.4.对象体2.5.对齐字节 3.Mark Word的结构信息3.1.不同锁状态下的Mark Word字段结…

GraphGPT——图结构数据的新语言模型

在人工智能的浪潮中&#xff0c;图神经网络&#xff08;GNNs&#xff09;已经成为理解和分析图结构数据的强大工具。然而&#xff0c;GNNs在面对未标记数据时&#xff0c;其泛化能力往往受限。为了突破这一局限&#xff0c;研究者们提出了GraphGPT&#xff0c;这是一种为大语言…

部署YUM仓库以及NFS共享服务

YUM仓库部署 一.YUM概述 YUM仓库源是一种软件包管理工具&#xff0c;用于在Linux系统上安装、更新和删除软件包。YUM仓库源包含了软件包的元数据信息和实际的软件包文件。用户可以通过配置YUM仓库源&#xff0c;从中下载和安装软件包。 常见的YUM仓库源包括&#xff1a; 本…

pip install dotenv出现error: subprocess-exited-with-error的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

springboot+vue+elementui实现校园互助平台大作业、毕业设计

目录 一、项目介绍 二、项目截图 管理后台 1.登录&#xff08;默认管理员账号密码均为&#xff1a;admin&#xff09; 2. 用户管理 ​编辑 3.任务管理 互助单&#xff08;学生发布&#xff09; 行政单&#xff08;教师发布&#xff09; ​编辑 审核&#xff08;退回需…

36.Docker-Dockerfile自定义镜像

镜像结构 镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。 镜像是分层机构&#xff0c;每一层都是一个layer BaseImage层&#xff1a;包含基本的系统函数库、环境变量、文件系统 EntryPoint:入口&#xff0c;是镜像中应用启动的命令 其他&#xff1a;在…

电脑c盘太满了,如何清理 电脑杀毒软件哪个好用又干净免费 电脑预防病毒的软件 cleanmymacX有必要买吗 杀毒软件排行榜第一名

杀毒软件通常集成监控识别、病毒扫描和清除、自动升级、主动防御等功能&#xff0c;有的杀毒软件还带有数据恢复、防范黑客入侵、网络流量控制等功能&#xff0c;是计算机防御系统的重要组成部分。 那么&#xff0c;对于Mac电脑用户来说&#xff0c;哪款电脑杀毒软件更好呢&a…

PCB光控打孔机第二版程序(一)

/*PCB机程序 XY同时启动 L9751 CODE61068 2018 6 19 08:00 固定位置释放吸盘*/ /*修正寻点第十二条结束调用计算坐标L5091&#xff0c;自动运行Y计算L6280 6281***/ /*** 开外部中断2关闭定时器2XY轴输出信号&#xff0c;自动运行循环检测外部中断高电平重启XY轴输出信号 增加寻…

LeetCode 难题解析 —— 正则表达式匹配 (动态规划)

10. 正则表达式匹配 思路解析 这道题虽然看起来不难理解&#xff0c;但却存在多种可能&#xff0c;当然这种可能的数量是有限的&#xff0c;且其规律对于每一次判别都使用&#xff0c;所以自然而然就想到用 动态规划 的方法啦 接下来逐步分析可能的情况&#xff1a; &#x…

探索中位数快速排序算法:高效寻找数据集的中间值

在计算机科学领域&#xff0c;寻找数据集的中位数是一个常见而重要的问题。而快速排序算法作为一种高效的排序算法&#xff0c;可以被巧妙地利用来解决中位数查找的问题。本文将深入探讨中位数快速排序算法的原理、实现方法以及应用场景&#xff0c;带你领略这一寻找中间值的高…

[UDS][OTA] 自定义 IntelHEX (IHEX) format read/write library in C

参考修改 参考github的MIT协议开源项目 ihex 改写的代码 https://gitee.com/liudegui/intelhex-c 修改点&#xff1a; 修改Makefile脚本&#xff0c;支持x86_X64平台和aarch64平台将默认读取行长度设置为16位删除与ihex和bin之间的转换无关的示例代码 十六进制描述 HEX格式…

C++容器——deque

deque容器 定义&#xff1a;动态数组&#xff0c;是一种双向开口的线性容器&#xff0c;意味着你不仅可以像在普通队列的末尾添加和移除元素&#xff0c;还可以在前端执行这些操作。 与其他容器相比不同的点&#xff1a; 与vector的主要区别&#xff1a; 连续性&#xff1a;…