云计算、Docker、K8S问题

1 云计算

云计算作为一种新兴技术,已经在现代社会中得到了广泛应用。它以其高效、灵活和可扩展特性,成为了许多企业和组织在数据处理和存储方面的首选方案。

1.1 什么是云计算?它有哪些特点?

云计算是一种通过网络提供计算资源和服务的技术。它的特点包括可扩展性、虚拟化、自动服务、按需付费和灵活性等。云计算可以根据用户的需求提供弹性的计算资源,并且用户无需担心硬件和软件的管理问题。

1.2 请解释一下云计算中的公有云和私有云

公有云是指由第三方服务提供商管理和维护的云计算平台,该平台向不同的用户提供计算资源和服务。私有云是指由企业或组织自行搭建和管理的云计算平台,该平台主要为企业内部员工提供服务。

1.3 云计算的IaaS、PaaS、SaaS分别是什么?

  • IaaS(基础设施即服务)是云计算提供的最底层的服务模式,它为用户提供了虚拟的计算资源和网络基础设施;
  • PaaS(平台即服务)是建立在IaaS之上的服务模式,它提供了更高层次的服务,包括开发环境、数据库和中间件等;
  • SaaS(软件即服务)是最顶层的服务模式,它提供了完整的软件应用,用户可以通过云平台直接使用这些应用而无需进行复杂的安装和配置。

1.4 请简要介绍一下云计算的虚拟化技术

虚拟化技术是云计算中的关键技术之一,它将硬件资源进行抽象和隔离,使得多个虚拟的计算实例可以运行在同一台物理机上。通过虚拟化技术,用户可以更加灵活地调配和管理计算资源,提高硬件利用率和系统的可靠性。

1.5 请描述一下云计算中的高可用性和容灾的概念

云计算中的高可用性是指系统能够保持长时间的连续运行,即使遇到一次性的故障也能快速恢复。容灾则指系统在遭受灾难性故障后能够安全地备份和恢复数据以及业务,确保在灾难发生后能够迅速恢复正常运营。

1.6 请说明云计算对企业的益处

云计算可以帮助企业降低IT成本,增加IT资源的利用效率,并提高生产力。他们提供弹性的计算资源,并且按需付费,使得企业可以根据实际需求来购买和使用计算资源,避免了浪费和过度投资。此外,云计算还可以提供更高的可靠性和安全性,通过数据备份和容灾措施,确保企业的业务不会受到意外事件的影响。

1.7 请提及几个常见的云计算平台

常见的云计算平台包括Amazon Web Service(AWS)、Microsoft Azure、Google Cloud Platform(GCP)和阿里云等。这些平台提供了广泛的云计算服务和解决方案,可以满足不同类型企业的需求。

云计算已经从物理机到虚拟机,再从虚拟机到容器,提到当前最新的容器化技术就不得不提Docker和Kubernetes技术了。
在这里插入图片描述

2 Docker

Docker 是一个 C/S 模式的架构,后端是一个松耦合架构,模块各司其职。下图是它的总体架构图:
在这里插入图片描述

  1. 用户是使用 Docker Client 与 Docker Daemon 建立通信,并发送请求给后者。
  2. Docker Daemon 作为 Docker 架构中的主体部分,首先提供 Docker Server 的功能使其可以接受Docker Client 的请求。
  3. Docker Engine 执行 Docker 内部的一系列工作,每一项工作都是以一个 Job 的形式的存在。
  4. Job 的运行过程中,当需要容器镜像时,则从 Docker Registry 中下载镜像,并通过镜像管理驱动 Graphdriver将下载镜像以 Graph 的形式存储。
  5. 当需要为 Docker 创建网络环境时,通过网络管理驱动 Networkdriver 创建并配置 Docker容器网络环境。
  6. 当需要限制 Docker 容器运行资源或执行用户指令等操作时,则通过 Execdriver 来完成。
  7. Libcontainer 是一项独立的容器管理包,Networkdriver 以及 Execdriver 都是通过Libcontainer 来实现具体对容器进行的操作。

2.1 什么是Docker?

Docker是一个开源的容器化平台,它允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中,从而在任何Docker运行的环境中实现一致的运行。

2.2 Docker容器和虚拟机的区别是什么?

Docker容器在操作系统级别进行虚拟化,共享宿主机的内核,而虚拟机在硬件级别进行虚拟化,拥有独立的内核。容器通常更轻量级、启动更快,资源占用更少。

2.3 什么是Docker镜像?

Docker镜像是一个轻量级、只读的模板,用于创建Docker容器。它包含运行容器所需的代码、库、环境变量和配置文件。

2.4 如何创建Docker容器?

可以使用docker run命令来从镜像创建容器。例如,docker run -d -p 80:80 nginx会基于nginx镜像启动一个新的容器,并将容器的80端口映射到宿主机的80端口。

2.5 Docker Hub是什么?

Docker Hub是一个公共的容器镜像仓库,可以用来存放、分享和管理Docker镜像。用户可以从Docker Hub下载公共镜像或上传自己的私有镜像。

2.6 Docker的默认网络模式有哪些?

Docker的默认网络模式包括bridge、none、host和container。每种模式提供不同级别的网络隔离和互连。

  1. bridge(桥接)模式:这是Docker的默认网络设置,当Docker服务启动时,会在主机上创建一个名为docker0的虚拟网桥,并选择一个和宿主机不同的IP地址和子网分配给docker0网桥。容器通过这个虚拟网桥进行通信,可以互相访问。这种模式的好处是网络性能比host模式的好。
  2. host(主机)模式:在这种模式下,Docker容器将共享主机的网络命名空间,这意味着容器将直接使用主机的网络栈,而不需要进行任何网络配置。容器可以访问主机的网络服务,如DNS和HTTP/HTTPS等。但是,由于容器和主机共享网络命名空间,因此可能会对主机的网络稳定性造成影响。
  3. none(无网络)模式:在这种模式下,Docker容器没有自己的网络命名空间,也没有自己的IP地址。这种模式通常用于需要自定义网络配置的场景,例如使用自定义bridge或overlay网络等。
  4. container(容器)模式:在这种模式下,Docker容器将使用另一个已存在的容器的网络命名空间,这意味着容器将共享同一个网络命名空间。这种模式通常用于需要将多个相关的容器组织在一起的场景,例如使用DockerCompose进行容器编排等。

2.7 如何创建Docker网络?

使用docker network create命令可以创建Docker网络。例如,docker network create --driver bridge my_bridge_network创建了一个bridge类型的网络。

2.8 Docker容器间通信是如何工作的?

容器可以通过Docker网络进行通信。在同一网络中的容器可以使用容器名称互相解析,实现容器间通信。

2.9 什么是Docker Compose?

Docker Compose是一个工具,用于定义和运行多容器Docker应用程序。

2.10 如何启动使用Docker Compose定义的服务?

使用docker-compose up命令。

2.11 怎样在Docker Compose中设置环境变量?

可以在docker-compose.yml文件中使用environment键设置环境变量。

2.12 Docker Swarm是什么?

Docker Swarm是Docker的原生集群管理工具,用于在多个主机上部署和管理Docker容器。

2.13 Docker Swarm和Kubernetes的主要区别是什么?

Kubernetes提供了更多的功能和灵活性,适用于更复杂的应用场景。Docker Swarm更简单,易于设置和管理。

2.14 如何保证Docker容器的安全性?

保持Docker和宿主机系统的更新,使用非root用户运行容器,限制容器的资源使用,使用Docker安全扫描等。

2.15 Docker中的健康检查是如何工作的?

可以在Dockerfile中定义HEALTHCHECK指令或在docker-compose.yml中定义healthcheck来检查容器的健康状态。

2.16 Docker是如何实现容器隔离的?

Docker使用Linux的命名空间和控制组(cgroups)来实现容器的隔离。

2.17 解释Docker容器的重启策略。

Docker容器的重启策略决定了在退出时容器是否和如何重启。常用策略包括no、always、on-failure和unless-stopped。

3 K8S

K8s将集群中的机器划分为一个主节点和一群工作节点,在主节点上运行着集群管理相关的一组进程kube-apiserver、kube-controller-manager 和 kube-scheduler,这些进程实现了整个集群的资源管理、pod 调度、弹性伸缩、安全控制、系统监控和纠错等管理功能,并且都是全自动完成的。集群中的工作节点运行真正的应用程序,各自又通过若干组件的组合来实现。在节点上,K8s管理的最小运行单元是pod。负载均衡模式需要通过kubelet、kube-proxy等这些服务进程实现,下图是K8s的整体架构:
在这里插入图片描述
主节点即中央控制节点是K8s 集群的管理节点,管理集群当中数据的接口、状态监测和回滚、状态更新、调度等功能,kubectl是K8s的命令行工具集,用于通过命令行与API server进行交互,而对K8s进行操作,实现在集群中进行各种资源的管理控制等操作,通过节点控制器来与工作节点交互。

3.1 为什么需要 Kubernetes,它能做什么?

Kubernetes是一个开源容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它的主要目标是简化容器化应用的部署和管理,并提供弹性、可靠的应用程序编排。

  • 服务发现和负载均衡:Kubernetes 可以使用 DNS 名称或自己的 IP 地址来暴露容器。 如果进入容器的流量很大, Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。
  • 存储编排:Kubernetes 允许你自动挂载你选择的存储系统,例如本地存储、公共云提供商等。
  • 自动部署和回滚:可以使用 Kubernetes 描述已部署容器的所需状态, 它可以以受控的速率将实际状态更改为期望状态。 例如,你可以自动化 Kubernetes 来为你的部署创建新容器, 删除现有容器并将它们的所有资源用于新容器。
  • 自动完成装箱计算:为 Kubernetes 提供许多节点组成的集群,在这个集群上运行容器化的任务。 你告诉 Kubernetes 每个容器需要多少 CPU 和内存 (RAM)。 Kubernetes 可以将这些容器按实际情况调度到你的节点上,以最佳方式利用你的资源。
  • 自我修复:Kubernetes 将重新启动失败的容器、替换容器、杀死不响应用户定义的运行状况检查的容器, 并且在准备好服务之前不将其通告给客户端。
  • 密钥与配置管理:Kubernetes 允许你存储和管理敏感信息,例如密码、OAuth 令牌和 SSH 密钥。 你可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。
  • 批处理执行:除了服务外,Kubernetes 还可以管理你的批处理和 CI(持续集成)工作负载,如有需要,可以替换失败的容器。
  • 水平扩缩:使用简单的命令、用户界面或根据 CPU 使用率自动对你的应用进行扩缩。
  • IPv4/IPv6 双栈 :为 Pod(容器组)和 Service(服务)分配 IPv4 和 IPv6 地址。
  • 为可扩展性设计 :在不改变上游源代码的情况下为你的 Kubernetes 集群添加功能。

3.2 什么是Pod?

Pod是Kubernetes的最小调度和部署单元。它是一个包含一个或多个容器的逻辑主机,这些容器共享网络和存储资源,并且在同一主机上共享生命周期。

3.3 什么是命名空间(Namespace)?

命名空间是一种在Kubernetes集群中创建多个虚拟集群的机制。它可以用于隔离和管理不同的应用程序、团队或环境。

3.4 如何进行应用程序的水平扩展?

可以使用Deployment的副本数字段来进行水平扩展。通过增加副本数,Kubernetes会创建更多的Pod副本以应对负载增加。

3.5 什么是Ingress?

Ingress是Kubernetes的资源之一,用于将外部流量路由到集群内的服务。它可以提供负载均衡、SSL终止、路径基于的路由等功能。

3.6 如何监控Kubernetes集群?

可以使用Kubernetes内置的指标和日志系统,如kube-state-metrics、Heapster和EFK堆栈,来监控集群的运行状态和性能。

3.7 什么是Kubernetes的生命周期钩子(Lifecycle Hook)?

生命周期钩子是Pod中的回调函数,可以在容器的生命周期事件发生时触发。它们可以用于在容器启动、停止或失败时执行定制化操作。

3.8 什么是Pod的探针(Probe)?

Pod的探针用于定期检查容器的健康状态。Kubernetes支持三种类型的探针:存活探针(Liveness Probe)、就绪探针(Readiness Probe)和启动探针(Startup Probe)。

3.9 请解释一下 Kubernetes 的主要组件。

Kubernetes的主要组件包括:Master组件(API Server、Controller Manager、Scheduler)和Node组件(kubelet、kube-proxy、容器运行时)。

3.10 怎样在 Kubernetes 中进行服务发现?

可以使用Kubernetes的Service对象来进行服务发现。Pod可以通过Service的DNS名称进行通信。

返回面试宝典

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

项目02《游戏-06-开发》Unity3D

基于 项目02《游戏-05-开发》Unity3D , 接下来做 背包系统的 存储框架 , 首先了解静态数据 与 动态数据,静态代表不变的数据,比如下图武器Icon, 其中,武器的名称,描述&#xff…

全网第一篇把Nacos配置中心客户端讲明白的

入口 我们依旧拿ConfigExample作为入口 public class ConfigExample {public static void main(String[] args) throws NacosException, InterruptedException {String serverAddr "localhost";String dataId "test";String group "DEFAULT_GROU…

搭建frp

1.frp 是什么? frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网…

解决nvrtc: error: invalid value for --gpu-architecture (-arch)

问题描述 在使用pytorch3d的时候,可以正常的import,但是在执行错误的使用就会报,nvrtc: error: invalid value for --gpu-architecture (-arch),的错误,图片如下: 我的环境是: 显卡&#xff1…

精细管理药厂设备,制药机械设备管理平台系统助力生产提效

制药行业的复杂性要求对药品的品质和安全性进行严格控制,而这离不开高效管理各类机械设备。然而,随着制药企业规模的不断扩大和技术的迅猛进步,如何有效管理这些设备成为一个亟待解决的问题。在这一挑战面前,PreMaint制药机械设备…

Antd+React+react-resizable实现表格拖拽功能

1、先看效果 2、环境准备 "dependencies": {"antd": "^5.4.0","react-resizable": "^3.0.4",},"devDependencies": {"types/react": "^18.0.33","types/react-resizable": "^…

前端面试题——Vue的双向绑定

前言 双向绑定机制是Vue中最重要的机制之一,甚至可以说是Vue框架的根基,它将数据与视图模板相分离,使得数据处理和页面渲染更为高效,同时它也是前端面试题中的常客,接下来让我们来了解什么是双向绑定以及其实现原理。…

Python的包安装工具——pip命令大全

对于大多数使用Python的人来说,一定知道pip这个包安装工具,但是对pip可能还不是很了解,今天作者给大家介绍一下pip的命令,以方便灵活使用pip。 一、pip工具使用方法 pip的语法如下: pip [options] 式中&#xff1a…

InverseMatrix3D

InverseMatrixVT3D: An Efficient Projection Matrix-Based Approach for 3D Occupancy Prediction https://github.com/DanielMing123/InverseMatrixVT3D InverseMatrix3D过程总结如下: 1. 用2D backbone提取N个视角的多尺度图像特征,表示如下&#xf…

机器学习聚类算法

聚类算法是一种无监督学习方法,用于将数据集中的样本划分为多个簇,使得同一簇内的样本相似度较高,而不同簇之间的样本相似度较低。在数据分析中,聚类算法可以帮助我们发现数据的内在结构和规律,从而为进一步的数据分析…

Centos 内存和硬盘占用情况以及top作用

目录 只查看内存使用情况: 内存使用排序取前5个: 硬盘占用情况 定位占用空间最大目录 top查看cpu及内存使用信息 前言-与正文无关 生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中&…

Python 潮流周刊#38:Django + Next.js 构建全栈项目

△△请给“Python猫”加星标 ,以免错过文章推送 你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。本周刊开源,欢迎投稿[1]。另有电报频道[2]作为副刊,补充发布更加丰富的资讯,…

protoc结合go完成protocol buffers协议的序列化与反序列化

下载protoc编译器 下载 https://github.com/protocolbuffers/protobuf/releases ps: 根据平台选择需要的编译器,这里选择windows 解压 加入环境变量 安装go专用protoc生成器 https://blog.csdn.net/qq_36940806/article/details/135017748?spm1001.2014.3001.…

canvas图片上设置镂空文字效果

查看专栏目录 canvas实例应用100专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重…

VR全景技术可以应用在哪些行业,VR全景技术有哪些优势

引言: VR全景技术(Virtual Reality Panorama Technology)是一种以虚拟现实技术为基础,通过360度全景影像、立体声音、交互元素等手段,创造出沉浸式的虚拟现实环境。该技术不仅在娱乐领域有着广泛应用,还可…

方案分享:F5怎么样应对混合云网络安全?

伴随着云计算走入落地阶段,企业的云上业务规模增长迅猛。具有部署灵活、成本低、最大化整合现有资产、促进业务创新等优点的混合云逐渐成为企业选择的部署方式。与此同时,安全运营的复杂度进一步提高。比如安全堆栈越来越复杂、多云基础设施和应用添加网…

小白Linux学习笔记-Linux开机启动流程

Linux 开机启动流程 文章目录 Linux 开机启动流程启动流程概览详细讲解开机软件 —— BIOS、Grub名词解释流程解释BIOS 开机文档 —— menu.lst、grub.confGrub 配置文档流程解释 init 程序流程解释init 执行的相关文件 run-level(启动等级) 相关的命令实验rhel6 单用户模式修改…

机器学习数据预处理方法(数据重编码)

文章目录 [TOC]基于Kaggle电信用户流失案例数据(可在官网进行下载)一、离散字段的数据重编码1.OrdinalEncoder自然数排序2.OneHotEncoder独热编码3.ColumnTransformer转化流水线 二、连续字段的特征变换1.标准化(Standardization)…

数字人客服技术预研

技术洞察 引言 在当今数字化时代,不断进步和创新的人工智能(AI)技术已经渗透到各行各业中。随着AI技术、大模型技术逐步发展,使得数字人的广泛应用成为可能,本文将跟大家一起探讨AI数字人客服的概念、优势、应用场景…

苹果电脑录制视频在哪里?教你快速找到它!

录制电脑屏幕已成为了许多用户日常所需的操作,无论是录制在线课程、游戏过程,还是网络会议,一款好的录屏软件能帮助用户高效、便捷地完成任务。苹果电脑是当今主流的计算机设备之一,可是很多用户不知道苹果电脑录制视频在哪里。在…