【Kubernetes】知识点1
摘要:本文系统介绍了容器技术和Kubernetes(K8s)相关核心概念。容器部分涵盖Docker组件(docker-ce、containerd.io等)和基本操作;Kubernetes部分详细解析了集群架构(kube-apiserver、etcd等核心组件)、网络插件(Calico)、资源管理(Pod、Namespace)及部署流程。重点阐述了容器编排原理、集群网络实现(br_netfilter
1.ca-certificates, gnupg, lsb-release三个包的解释。
答:ca-certificates:用于管理可信证书颁发机构(CA)证书的软件包
gnupg:是一套开源的加密软件,基于 PGP标准,主要用于数据加密、数字签名和密钥管理。其中包含gpg,gpg-agent,gpgconf等工具。
lsb-release:用于查询Linux系统LSB兼容信息的工具包,提供发行版信息,支持跨系统兼容。
2. docker-ce, docker-ce-cli, containerd.io, docker-compose-plugin作用。
答:docker-ce:开源的,是 Docker 的核心引擎,是实现容器创建、运行、管理的核心组件。处理 Docker 镜像的拉取、存储、构建等操作。并通过 Linux 内核的 Namespace 和 Cgroups 等技术,实现容器的隔离
docker-ce-cli:Docker 的命令行接口工具,提供用户与 Docker 引擎交互的命令集。解析与传递指令,实现格式化输出。
containerd.io:从Docker中分离出的底层容器运行时,负责容器的实际运行、镜像管理等基础操作,遵循OCI标准。
docker-compose-plugin:是 Docker 官方的Compose插件,用于通过配置文件定义和管理多容器应用。用来实现多容器编排,服务依赖管理,配置复用与版本控制等功能。
3. K8s在1.2之后就不再支持docker,请解释对错。
答:错。K8s只是不再直接支持 Docker Engine 作为运行时,但完全兼容Docker镜像和工具链,通过containerd等运行时仍可间接使用Docker相关功能。
4. 举例说明创建容器以及以交互方式访问容器的命令?
答:例如创建一个基于Ubuntu镜像的容器,并进入交互模式
docker run -it --name my-ubuntu ubuntu:22.04 /bin/bash 执行后会直接进入容器内部的 bash 终端
或对已创建的容器进行交互式访问:用docker exec -it命令如:
docker exec -it my-ubuntu /bin/bash
5. 部署安装K8s为什么要关闭swap分区?
答:保证容器资源限制的有效性;避免性能损耗,关闭 swap 可确保容器始终使用物理内存,避免因磁盘交换导致的性能损耗。
6. 解释br_netfilter。
答:br_netfilter是连接Linux桥接网络与netfilter防火墙框架的关键模块,它确保Kubernetes集群中容器间的网络流量能够被网络策略(NetworkPolicy)管控,是实现Pod网络隔离和安全访问的基础组件。
7. 解释kubeadm, kubectl, kubelet。
答:kubeadm:用于快速部署和管理 Kubernetes 集群的命令行工具,旨在简化集群的初始化、升级、重置等操作,遵循 K8s 最佳实践。
kubectl:是用户与 Kubernetes 集群交互的命令行工具,通过调用 K8s API Server 实现对集群资源的查询、创建、更新和删除等操作。
kubelet:是运行在每个节点上的代理程序,负责确保容器按照Pod规范运行,是 K8s 在节点上的 “执行者”。
8. 详细说明K8s集群的创建过程。
答:核心流程是:环境标准化→安装依赖组件(容器运行时、kube 工具)→初始化控制平面→配置网络→加入工作节点。
1).环境准备:规划控制平面节点和工作节点,确保所有节点操作系统符合要求,关闭 Swap,配置主机名与时间同步,开放必要网络端口。
2).安装依赖:在所有节点部署容器运行时(如 Containerd),以及 kubeadm(集群部署工具)、kubelet(节点代理)、kubectl(命令行工具)。
3).初始化控制平面:通过 kubeadm 在控制平面节点初始化集群,自动部署 API Server、etcd、调度器等核心组件,生成节点加入凭证。
4).部署网络插件:安装 Calico、Flannel 等网络插件,实现 Pod 跨节点通信,确保节点状态变为 Ready。
5).加入工作节点:使用控制平面生成的凭证,在工作节点执行加入命令,完成与集群的连接和注册。
6).验证集群:检查节点状态、核心组件运行情况,通过部署测试应用确认集群功能正常。
9. Calico网络插件在K8s集群的作用。
答:为集群提供网络连接、网络隔离和网络安全能力,是实现Pod间通信与访问控制的核心组件。Calico 不仅解决了 K8s 集群中 Pod 的基础网络连接问题,更通过强大的网络策略能力,为容器化应用提供了安全、可控的网络环境
10. kube-apiserver, etcd, kube-controller-manager, kube-scheduler的作用。
答:kube-apiserver:提供 RESTful API 接口,处理所有集群操作请求(如创建 Pod、部署服务等)。
etcd:存储整个集群的所有状态数据,是 Kubernetes 的 “数据大脑”。
kube-controller-manager:运行一系列控制器进程,确保集群实际状态与用户期望状态一致
kube-scheduler:根据集群资源状况和调度策略,为新创建的 Pod 选择最合适的工作节点运行。
11. kubelet, kube-proxy作用。
答:kubelet:运行在每个节点上的代理程序,是控制平面在节点上的 “执行者”,确保容器按照 Pod 规范(Pod Spec)正确运行。
kube-proxy:运行在每个节点上的网络代理组件,核心作用是实现Kubernetes Service的网络功能,确保Pod与Service之间、Pod跨节点之间的网络通信正常。
12. 什么是K8s的namespace?
答:Namespace(命名空间)是一种用于在集群内部对资源进行逻辑隔离的机制。它通过为资源分配独立的 “命名空间”,实现同一集群内不同团队、项目或环境的资源分隔,避免命名冲突并简化管理。
13. 系统默认创建了哪几个namespace?
答:1)default:未明确指定命名空间的资会默认存放在此空间。主要用于用户创建的应用资源。
2)kube-system:专门用于存放Kubernetes系统组件及相关资源(如 kube-apiserver、kube-controller-manager、网络插件 Calico/Flannel 等)。这些资源是集群运行的核心。
3)kube-public:一个公开可见的命名空间,所有用户(包括未认证用户)均可访问。默认包含一些集群公共信息,通常用于存储无需权限控制的公共资源。
4)kube-node-lease:用于存储节点的 Lease 资源,帮助 kube-controller-manager 快速检测节点健康状态;替代了早期的节点心跳频繁更新 etcd 的机制,提升性能。
14. 请解释Pod是什么?
答 Pod是“一组紧密关联的容器集合”,这些容器共享网络命名空间(IP 地址、端口等)、存储卷(文件系统)和运行环境,在逻辑上视为一个 “应用单元” 协同工作。
更多推荐
所有评论(0)