运维开发面试【运维篇】
- 运维
- k8s基础组件有哪些?
- docker如何隔离(docker如何实现资源隔离)
运维
k8s基础组件有哪些?
一、控制面 Master 节点的主要组件:
- kube-apiserver:
负责对外提供集群各类资源的增删改查及 Watch 接口,它是 Kubernetes 集群中各组件数据交互和通信的枢纽。当收到一个创建 Pod 写请求时,它的基本流程是对请求进行认证、限速、授权、准入机制等检查后,写入到 etcd 即可。
备注:kube-apiserver 在设计上可水平扩展,高可用 Kubernetes 集群中一般多副本部署。
-
kube-scheduler:
是调度器组件,负责集群 Pod 的调度。基本原理是通过监听 kube-apiserver 获取待调度的 Pod,然后基于一系列筛选和评优算法,为 Pod 分配最佳的 Node 节点。 -
kube-controller-manager:
包含一系列的控制器组件,比如 Deployment、StatefulSet 等控制器。控制器的核心思想是监听、比较资源实际状态与期望状态是否一致,若不一致则进行协调工作使其最终一致。 -
etcd 组件:
Kubernetes 的元数据存储。
二、Node 节点的主要组件:
- kubelet:
负责 Pod 的创建运行,部署在每个节点上的 Agent 的组件。基本原理是通过监听 APIServer 获取分配到其节点上的 Pod,然后根据 Pod 的规格详情,调用运行时组件创建 pause 和业务容器等。
- kube-proxy:
部署在每个节点上的网络代理组件。基本原理是通过监听 APIServer 获取 Service、Endpoint 等资源,基于 Iptables、IPVS 等技术实现数据包转发等功能。
docker如何隔离(docker如何实现资源隔离)
Docker 是一个流行的容器化平台,它可以帮助开发者更快速、可靠地构建、打包和部署应用程序。其中一个最重要的功能就是可以隔离不同的应用程序,并确保它们之间不会相互影响。
Docker 使用了多种不同的机制来实现这种隔离性:
1. 命名空间:在 Linux 系统中,命名空间可以隔离不同的系统资源,如进程、网络和文件系统等。Docker 利用这些机制来创建独立的命名空间,确保每个容器之间的进程、网络连接、文件系统和用户等信息都是完全独立的。
2. 控制组(cgroups):cgroups 可以帮助管理员限制资源使用。通过限制内存、CPU、I/O 等资源的使用,Docker 可以确保容器之间不会相互影响。
3. 文件系统隔离:Docker 通过将容器文件系统挂载到主机文件系统上来实现文件系统隔离。这意味着每个容器都有自己的文件系统,可以独立于主机和其他容器进行操作。
此外,Docker 还可以通过设置网络隔离、用户隔离和安全配置等机制来增强容器安全性。
总之,Docker 的隔离性是通过在多个层面上使用各种不同的机制来实现的。这些机制可以帮助用户保护应用程序免受因相互干扰导致的性能下降、安全问题等风险。