ToB企服应用市场:ToB评测及商务社交产业平台

标题: 十一,docker&k8s问答合集 [打印本页]

作者: 滴水恩情    时间: 2024-8-6 06:43
标题: 十一,docker&k8s问答合集
目录

十一.docker&k8s

11.1 docker的核心原理

11.2docker的⽹络模式有哪些,默认是⽹络模式是什么

Docker网络模式设置说明host模式–net=host容器和宿主机共享Network namespace。容器的其他方面,如文件体系、历程列表等照旧和宿主机隔离的。网络性能比较好,但是docker host上已经使用的端口就不能再用了,网络的隔离性欠好container模式–net=container:NAME_or_ID容器和另外一个容器共享Network namespace。 kubernetes中的pod就是多个容器共享一个Network namespace。文件体系、历程列表等照旧隔离的。两个容器的历程可以通过lo网卡装备通信(127.0.0.1)none模式–net=none容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair 和网桥连接,设置IP等。没有办法联网,封闭的网络能保证容器的安全性。bridge模式–net=bridge(默认为该模式)11.3 dockerfile怎样部署⼀个项⽬

1.编写Dockerfile
  1. [root@docker-server nginx]# vim Dockerfile
  2. FROM centos:7
  3. MAINTAINER hugo 2763743788@qq.com
  4. RUN yum install -y vim wget tree lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop
  5. ADD nginx-1.20.1.tar.gz /usr/local/src/
  6. RUN cd /usr/local/src/nginx-1.20.1 \
  7. && ./configure --prefix=/usr/local/nginx --with-http_sub_module \
  8. && make \
  9. && make install \
  10. && cd /usr/local/nginx
  11. && rm -rf /usr/local/src/nginx-1.20.1* # 清理源代码和压缩包以节省空间  
  12. # ADD nginx.conf /usr/local/nginx/conf/nginx.conf
  13. RUN useradd -s /sbin/nologin nginx \
  14. && ln -sv /usr/local/nginx/sbin/nginx /usr/sbin/nginx \
  15. && echo 'test nginx !' > /usr/local/nginx/html/index.html
  16. EXPOSE 80 443
  17. CMD ["nginx", "-g", "daemon off;"]
复制代码
留意:ADD特性:自动解压tar文件支持从URL下载文件
2.构建Docker镜像
  1. [root@docker-server nginx]# docker build -t nginx:v1 .
  2. [root@docker-server nginx]# docker images | grep v1
  3. nginx          v1        fbd06c1753c0   8 seconds ago   581MB
复制代码
3.运行Docker容器
  1. [root@docker-server nginx]# docker run -d -it -p 80:80 nginx:v1
复制代码
4.(可选)使用Docker Compose
11.5 dockerfile与docker-compose区别

两者团结使用,可以实现从单个服务的构建到整个多服务应用部署的全链条自动化,是当代容器化应用开辟和部署中不可或缺的工具。
11.6 Dockerfile中的cmd和run的区别

RUN指令在构建镜像的过程中执行。每当Dockerfile被用来构建镜像时,RUN指令指定的命令都会在构建环境中执行,主要用于安装软件包、下载文件、编译应用等,以便为镜像创建所需的文件体系更改。每次RUN执行后,都会创建一个新的镜像层。因此,如果大概的话,最好将多个命令合并为一个RUN指令,以减少镜像的层数和大小。
CMD指令在容器启动时执行。当使用docker run命令运行一个容器时,如果docker run后面没有跟任何额外的命令,那么CMD中指定的命令就会在容器的主历程中执行,主要目的是为容器提供默认的执行命令。它告诉容器在启动时应该运行什么步调。
11.7 docker与虚拟机有何不同

Docker:

虚拟机:

11.8 docker容器的几种状态

created(已创建)
restarting(重启中)
running(运行中)
removing(迁移中)
paused(暂停)
exited(制止)
dead(殒命)

11.9 docker的三大组件之间的关系

堆栈是存储镜像的地方,镜像是创建容器的模板,而容器则是镜像运行时的实例
11.10 Docker file中的命令COPY和ADD命令有什么区别

在大多数情况下,如果只需要复制文件而不涉及解压缩或下载,推荐使用COPY指令,由于它更简朴且构建缓存效率更高。
如果需要在构建过程中解压缩文件或从长途URL添加文件,那么ADD指令是更合适的选择。然而,考虑到安全性和可维护性,建议尽大概制止使用ADD从长途URL下载文件,而是使用COPY和RUN(或其他命令)的组合来实现相同的功能。
11.11 Docker的优缺点

Docker的优点

Docker的缺点

11.12 Docker容器意外退出,怎样盘查和处理

查看容器退出状态
  1. docker ps -a --filter "exited = 0"
复制代码
查看容器日记
  1. docker logs [container_name(或容器ID)]
复制代码
查看容器康健检查
  1. docker inspect --format='{{json .State.Health}}' [container_name]
复制代码
查看宿主机体系日记

linux:/var/log/messages或/var/log/syslog
windows:Event Viewer
进入容器进行排查
  1. docker exec -it [container_name] /bin/bash
复制代码
使用Docker自带工具进行故障定位
  1. docker top [container_name]
  2. docker stats [container_name]
  3. docker inspect [container_name]
复制代码
11.13 有没有使用过docker搭建过什么服务,怎么搭建的

搭过

​        首先,我会为我的应用编写一个Dockerfile。Dockerfile是一个文本文件,包含了从基础镜像开始到运行应用所需的全部命令
​        使用Dockerfile,我可以通过运行docker build命令来构建我的Docker镜像。
​        构建完镜像后,我可以使用docker run命令来运行一个容器实例
​        随着应用的运行,我大概会需要管理我的容器,比如查看正在运行的容器、制止或删除容器等。此外,如果我的应用需要扩展,我可以使用Docker Compose或Kubernetes等工具来编排和管理多个容器
11.14 控制平面和工作平面区别,分别包含哪些组件

控制平面(Control Plane)工作平面(Data Plane)定义与功能Kubernetes的大脑,负责集群的团体管理和协调,提供API服务,运行控制器和调度器。包含全部容器和应用步调的节点,通过与控制平面交互实现部署、扩展和管理。关键组件API Server, etcd, kube-controller-manager, kube-schedulerNode, kubelet, kube-proxy, 容器运行时职责决策和全局控制,维护集群状态和数据一致性。运行容器化应用步调,响应控制平面的指令,管理节点上的资源和网络。11.15 各个组件的原理详解


(标注:根据集群大小,主组件在呆板上托管或分布)
kube-apiserver

​        kube-apiserver 是 Kubernetes 的核心组件之一,作为全部 REST 操作的前端。它处理全部的 API 请求并更新 etcd 存储的数据。通过 kube-apiserver,用户可以与 Kubernetes 集群进行交互,包括部署应用步调、查询集群状态和管理资源等。API 服务器的计划支持水平扩展,即可以通过部署多个实例来提高性能和容错能力。
etcd

​       etcd 是一个高可用的键值存储,用于保存 Kubernetes 的全部集群数据。它是 Kubernetes 的后台数据库,存储了集群的状态信息、设置数据和元数据。etcd 提供了一致性和高可用性,确保集群数据的持久性和可靠性。由于 etcd 存储了关键的数据,因此备份等数据掩护步调非常告急。
kube-scheduler

​       kube-scheduler 负责为新创建的 Pods 选择合适的节点进行运行。它根据资源需求、调度计谋和集群状态等因素,决定 Pods 的分配。调度器会考虑节点的资源使用情况、Pod 的亲和性和反亲和性、数据位置等条件,以优化资源的使用和满足应用的要求。
kube-controller-manager

​       kube-controller-manager 运行控制器历程,负责管理集群的状态。每个控制器都负责特定的任务,如节点状态监控、Pod 的创建和管理、服务的维护等。虽然每个控制器在逻辑上是独立的,但它们被编译到一个单独的可执行文件中,以简化管理和维护。主要控制器包括:
节点控制器(Node Controller):负责处理节点故障的通知和响应。
任务控制器(Job Controller):管理一次性任务的执行,确保 Job 对象下的 Pods 被正确创建和运行。
端点分片控制器(EndpointSlice Controller):管理 Service 和 Pod 之间的链接。
服务账号控制器(ServiceAccount Controller):为新的定名空间创建默认服务账号。
cloud-controller-manager

​        负责与云提供商的 API 进行交互。它将集群的管理与云平台的特定操作分离开来,允许 Kubernetes 集群与云环境集成。主要控制器包括:
节点控制器(Node Controller):用于检测和处理云环境中节点的终止和删除。
路由控制器(Route Controller):设置云基础设施中的路由。
服务控制器(Service Controller):管理云提供商的负载均衡器的创建、更新和删除。
节点组件(Node Components)
节点组件运行在每个集群节点上,负责容器的实际执行和管理。
kubelet

​       kubelet 是每个节点上的核心组件,负责确保容器在 Pod 中运行并保持康健。它从 API 服务器获取 PodSpec,并确保容器按照这些规格运行。kubelet 监控容器的状态,并向 API 服务器报告节点的状态。kubelet 不管理非 Kubernetes 创建的容器。
kube-proxy

​       kube-proxy 是集群中的网络代理,负责实现 Kubernetes 服务的网络功能。它维护节点上的网络规则,支持服务的负载均衡和网络转发。kube-proxy 可以使用操作体系的数据包过滤层,也可以通过流量转发实现网络规则,确保 Pod 之间的网络通信顺畅。
容器运行时(Container Runtime)

​       容器运行时 是 Kubernetes 运行容器的基础组件,管理容器的执行和生命周期。支持的容器运行时包括 containerd、CRI-O 和 Kubernetes CRI 的其他实现。容器运行时负责启动和制止容器,并处理容器的资源管理和监控。
插件(Addons)

​       插件是扩展 Kubernetes 集群功能的组件,通常运行在 kube-system 定名空间中。它们提供额外的功能和服务,使集群更加全面和机动。
DNS

​       集群 DNS 是几乎全部 Kubernetes 集群都需要的插件。它为 Kubernetes 服务提供 DNS 记录,使得服务可以通过 DNS 名称进行访问。容器启动时会自动将集群 DNS 服务器包含在其 DNS 搜刮列表中,简化了服务的发现和访问。
Web 界面(仪表盘)

​       Kubernetes Dashboard 是一个基于 Web 的用户界面,允许用户管理集群和应用步调,并进行故障排除。Dashboard 提供了集群状态的可视化展示,简化了集群的管理操作。
容器资源监控

​       容器资源监控 插件将容器的时间序列度量值保存到集中数据库中,并提供数据欣赏界面。它帮助用户监控容器的性能和资源使用情况,便于进行优化和故障排查。
集群层面日记

​       集群层面日记 插件负责将容器的日记数据集中存储,提供搜刮和欣赏接口。通过集中日记存储,用户可以轻松查看和分析日记,支持故障排除和体系监控。
网络插件

​       网络插件 实现容器网络接口(CNI)规范,负责为 Pod 分配 IP 地址并实现 Pod 之间的网络通信。网络插件确保集群内的网络功能正常运行,为应用提供稳定的网络支持。
11.16 创建一个pod的流程

11.17 删除一个pod的流程

11.18 什么是k8s控制器

Kubernetes(k8s)的控制器包括:

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4