k8s基础
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,支持负载均衡和会话保持。
更多推荐

所有评论(0)