1. ca-certificates, gnupg, lsb-release 三个包的解释

ca-certificates:包含系统信任的根证书集合,用于验证 SSL/TLS 连接的安全性,确保 HTTPS 等加密通信的合法性。

gnupg:GNU 隐私保护工具,用于加密、解密数据和数字签名,常用于验证软件包的完整性和来源。

lsb-release:提供 Linux 标准基础(LSB)相关的系统信息,可通过命令查询发行版名称、版本等信息,便于软件适配不同 Linux 发行版。

2. docker-ce, docker-ce-cli, containerd.io, docker-compose-plugin 作用

docker-ce:Docker 社区版引擎,是 Docker 的核心组件,负责创建和管理容器。

docker-ce-cli:Docker 命令行工具,提供用户与 Docker 引擎交互的命令接口(如docker run、docker ps)。

containerd.io:容器运行时,负责容器的生命周期管理(如创建、启动、停止),是 Docker 引擎与底层系统的接口。

docker-compose-plugin:Docker Compose 的插件形式,用于通过 YAML 文件定义和管理多容器应用,简化复杂应用的部署。

3. K8s 在 1.2 之后就不再支持 docker,请解释对错

错误。
Kubernetes 1.24 及之后版本移除了对 Docker Engine 的直接支持(因 Docker 使用的dockershim被移除),但并非完全不支持 Docker。Docker Engine 可通过containerd作为中间层与 K8s 兼容(Docker 1.11 + 已集成 containerd),用户仍可使用 Docker 构建镜像和管理容器,只是 K8s 不再直接依赖 Docker 的运行时。

4. 举例说明创建容器以及以交互方式访问容器的命令

创建并启动容器(以 Nginx 为例):
docker run -d --name mynginx -p 8080:80 nginx
(-d后台运行,--name指定名称,-p端口映射)

以交互方式访问容器(以 Ubuntu 为例):
docker run -it --name myubuntu ubuntu /bin/bash
(-it开启交互模式并分配伪终端,/bin/bash指定启动后执行的命令)

5. 部署安装 K8s 为什么要关闭 swap 分区

Kubernetes 要求关闭 swap 分区的主要原因:

确保 Pod 调度的资源限制(CPU / 内存)准确生效,避免容器因 swap 过度使用导致性能不可预测。

保证节点资源监控的准确性,防止 swap 影响 K8s 对节点实际可用资源的判断。

符合 K8s 的设计原则,即容器应使用指定的资源配额,而非依赖 swap 动态扩展。

6. 解释 br_netfilter

br_netfilter是 Linux 内核模块,用于在桥接网络(bridge)中启用网络地址转换(NAT)和数据包过滤(如 iptables 规则)。在 Kubernetes 中,它是实现 Service 网络(如 ClusterIP、NodePort)的关键组件,确保容器间、容器与外部的网络流量能被正确路由和过滤。

7. 解释 kubeadm, kubectl, kubelet

kubeadm:Kubernetes 集群部署工具,用于快速初始化控制平面、加入节点、升级集群等操作,简化集群搭建流程。

kubectl:Kubernetes 命令行工具,用于与集群 API 服务器交互,管理资源(如创建 Pod、查看节点状态)。

kubelet:运行在每个节点上的代理程序,负责维护容器的生命周期(如启动、停止 Pod 中的容器),并确保容器按 Pod 规格运行。

8. 详细说明 K8s 集群的创建过程

环境准备(所有节点):

关闭防火墙(ufw disable)、SELinux(setenforce 0)、swap(swapoff -a)。

配置主机名和 hosts 解析,确保节点间网络互通。

安装容器运行时(如 containerd),并配置系统参数(如br_netfilter)。

安装组件(所有节点):

安装 kubeadm、kubelet、kubectl,并设置开机自启。

初始化控制平面(主节点):
kubeadm init --pod-network-cidr=10.244.0.0/16
(--pod-network-cidr指定 Pod 网络网段,需与网络插件匹配)

配置 kubectl(主节点):

mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config

部署网络插件(主节点):
如 Calico:kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml

加入工作节点(工作节点):
执行主节点kubeadm init输出的kubeadm join命令(包含 token 和证书哈希)。

9. Calico 网络插件在 K8s 集群的作用

Calico 是 Kubernetes 常用的网络插件,主要作用:

实现 Pod 间的网络互通,为每个 Pod 分配唯一 IP 地址,并通过 BGP 协议路由数据包。

提供网络策略(Network Policy)支持,控制 Pod 间的流量访问(如允许 / 拒绝特定端口通信)。

支持加密 Pod 间通信,增强集群网络安全性。

兼容多种网络环境(如私有云、公有云),提供灵活的网络拓扑配置。

10. kube-apiserver, etcd, kube-controller-manager, kube-scheduler 的作用。

kube-apiserver:K8s 的核心接口服务,所有操作(如创建 Pod、查询节点)均通过其完成,负责认证、授权、数据验证和 API 请求处理。

etcd:分布式键值存储,保存 K8s 集群的所有状态数据(如 Pod 配置、节点信息),是集群的 “数据库”。

kube-controller-manager:运行多种控制器进程(如节点控制器、副本控制器),确保集群状态与期望状态一致(如维持 Pod 副本数)。

kube-scheduler:负责 Pod 调度,根据节点资源、亲和性规则等因素,选择最合适的节点运行新创建的 Pod。

11. kubelet, kube-proxy 作用

kubelet:运行在每个节点上,监听 API 服务器的 Pod 规格,确保容器按规格运行(如启动失败时重启),并向 API 服务器汇报节点和容器状态。

kube-proxy:运行在每个节点上的网络代理,负责实现 K8s Service 的网络功能,如通过 iptables 或 IPVS 规则将 Service 请求转发到后端 Pod,支持负载均衡和会话保持。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐