5. 部署安装 K8s 为什么要关闭 swap 分区?
(1)资源管理失效,k8s无法感知swap的使用情况,因为他只监控物理内存,若启用了swap,pod可能会使用swap空间,导致k8s误判节点的使用情况。
(2)性能下降:swap的读写速度远远低于物理内存,使用swap会导致应用性能明显下降。
(3)Pod驱逐机制失效:k8s通过内存压力来触发Pod的驱逐机制,如果节点启用了swap,内存不足时系统会优先使用swap,而不是触发压力事件。
6. 解释 br_netfilter。
br_netfilter
是 Linux 内核中的一个模块,主要用于桥接网络流量和防火墙(如 iptables
或 nftables
)之间的交互。它允许对桥接流量进行过滤、NAT 等操作。
主要功能
-
桥接流量过滤:
-
默认情况下,Linux 桥接设备(
br0
等)不经过iptables
或nftables
的过滤规则。 -
br_netfilter
模块使桥接流量也能被这些防火墙规则处理。
-
-
NAT 支持:
-
支持在桥接流量上执行 NAT(网络地址转换),适用于虚拟机或容器通过桥接网络与外部通信的场景。
-
-
连接跟踪:
-
支持对桥接流量进行连接跟踪(conntrack),便于实现状态防火墙功能。
-
7. 解释 kubeadm, kubectl, kubelet
kubeadm:k8s的官方集群管理工具,用于快速部署和管理K8s集群。
kubectl:是k8s的命令行工具,用于与k8s集群交互
kubelet:是k8s节点上的核心组件,负责节点上的pod容器。
使用场景
• 快速搭建 Kubernetes 集群(适用于开发、测试和生产环境)。
• 管理集群的生命周期(如初始化、升级、节点管理)。
示例
初始化一个 Kubernetes 集群:
kubeadm init --pod-network-cidr=10.244.0.0/16
将工作节点加入集群:
kubeadm join <控制平面节点的 IP>:6443 --token <token> --
discovery-token-ca-cert-hash sha256:<hash>
2. kubectl
kubectl 是 Kubernetes 的命令行工具,用于与 Kubernetes 集群
交互。
功能
• 资源管理:创建、更新、删除 Kubernetes 资源(如 Pod、Service、
Deployment 等)。
• 集群管理:查看集群状态、节点信息、日志等。
• 调试和诊断:执行命令、查看日志、进入容器等。
使用场景
• 日常的 Kubernetes 资源管理。
• 集群的监控和故障排查。
示例
创建一个 Deployment:
kubectl create deployment nginx --image=nginx
查看 Pod 状态:
kubectl get pods
进入容器:
kubectl exec -it <pod-name> -- sh
3. kubelet
kubelet 是 Kubernetes 节点上的核心组件,负责管理节点上的 Pod
和容器。
功能
• Pod 生命周期管理:根据 Kubernetes API Server 的指令,创
建、启动、停止和删除 Pod。
• 资源监控:监控节点上的资源使用情况(如 CPU、内存)。
• 健康检查:执行容器的存活探针(Liveness Probe)和就绪探
针(Readiness Probe)。
使用场景
• 在 Kubernetes 节点上运行和管理容器。
• 确保 Pod 按照期望状态运行。
工作原理
• kubelet 定期从 Kubernetes API Server 获取分配给当前节
点的 Pod 清单。
• 根据清单启动或停止容器。
• 将节点的状态和 Pod 的状态报告给 API Server。