【Kubernetes知识点问答题】Kubernetes 部署
目录
3.解释 kubeadm, kubectl, kubelet。
6. kube-apiserver, kube-controller-manager, kube-scheduler, etcd的作用。
Kubernetes(简称 K8s)是当前主流的容器编排平台,它为容器化应用提供自动化部署、扩展和管理。K8s 的强大功能和灵活性使其成为云原生架构中不可或缺的部分。
1.部署安装 K8s 为什么要关闭 swap 分区?
-
出于对系统性能的考虑
-
Swap 的作用:Swap 是虚拟内存管理的一部分,允许操作系统在磁盘上使用额外的内存空间,弥补物理内存不足的情况。虽然它可以增加系统的可用内存,但其本质上是依赖磁盘进行数据交换。
-
性能影响:在容器化环境中,容器对磁盘 I/O 性能有很高的要求。如果启用了 Swap,虚拟内存交换过程会带来额外的磁盘 I/O 负载,加之容器运行环境自身对磁盘的吞吐量有很高的需求,尤其是在高负载情况下。这会导致 Kubernetes 集群的整体性能下降,严重时可能会导致应用程序崩溃。
2.解释 br_netfilter。
-
桥接流量转发:br_netfilter 模块用于将桥接流量(如 Docker 容器之间的流量)转发到 iptables 防火墙规则链中。
-
通信影响:如果没有加载该模块,会影响同一节点node上通过 service 访问其他 pod 的流量,虽然不同节点node之间的 pod 通信不受影响。因此,确保启用 br_netfilter 是保持网络流畅的关键。
3.解释 kubeadm, kubectl, kubelet。
-
kubeadm:Kubeadm 是 Kubernetes 集群构建工具,提供初始化集群和加入新节点的命令。通过
kubeadm init可以初始化集群,通过kubeadm join向集群添加新节点。 -
kubectl:Kubectl 是 Kubernetes 集群的命令行工具,能够对集群进行管理,并执行应用程序的部署、查看日志等操作。
-
kubelet:Kubelet 是每个节点上运行的代理,负责和 API Server 通信,确保容器和 pod 的生命周期得到正确管理。它还负责容器存储接口(CSI)和容器网络接口(CNI)的管理。
4.详细说明 K8s 集群的创建过程。
-
准备工作:
-
配置服务器节点,确保每个节点的系统环境满足要求。
-
-
安装依赖组件:
-
在各个节点上安装docker-ce, docker-ce-cli, containerd.io, docker-compose-plugin;部署 CRI-Docker。
-
-
关闭 Swap 和配置网络:
-
关闭 Swap 分区并加载
br_netfilter模块,以确保 Kubernetes 节点能够正确处理桥接流量。
-
-
安装 kubeadm, kubectl 和 kubelet:
-
安装并配置 Kubernetes 核心组件:
kubeadm、kubectl和kubelet,并确保它们正常运行。
-
-
集群初始化与节点加入:
-
在 Master 节点上使用
kubeadm init初始化集群(kubeadm.yaml),然后使用kubeadm join将其他节点加入集群。
-
-
部署网络插件:
-
部署如 Calico 网络插件,以实现节点间容器的网络连接。
-
-
验证集群状态:
-
检查集群状态,确保各个节点正常运行,并且网络插件配置正确。
-
5. Calico 网络插件在 K8s 集群的作用。
-
三层网络架构:Calico 是基于三层网络架构的虚拟网络方案,它将每个 Kubernetes 节点视为一个路由器,并为每个容器分配唯一的 IP 地址。
-
路由与扩展性:Calico 通过 BGP(边界网关协议)来学习和维护路由规则,使得不同节点的容器能够高效通信。Calico 提供了高度的网络可扩展性,适用于大规模分布式系统。
-
网络安全:Calico 提供了基于策略的网络安全功能,确保不同服务之间的通信可以按照预定的安全策略进行控制。
Calico 不仅提升了 Kubernetes 集群的性能,还增强了其云原生架构的可扩展性和安全性。
6. kube-apiserver, kube-controller-manager, kube-scheduler, etcd的作用。
-
kube-apiserver:
-
作为集群的控制层,
kube-apiserver处理所有的 API 请求,并暴露集群的 API 接口。它是集群管理的中心,负责所有模块之间的通信。
-
-
kube-scheduler:
-
kube-scheduler负责监视所有新创建但尚未分配节点的 Pod,并选择合适的节点来运行它们。
-
-
kube-controller-manager:
-
kube-controller-manager负责处理集群中的常规任务,例如确保集群资源始终维持在“期望状态”,比如 Pod 副本数等。
-
-
etcd:
-
etcd是一个分布式的键值存储,用于存储 Kubernetes 集群的所有元数据。它包括所有对象的状态、配置信息等数据,保证集群的数据一致性。
-
7. kubelet, kube-proxy 作用。
-
kubelet:
-
kubelet运行在每个节点上,负责与kube-apiserver通信,确保节点上的容器和 Pod 正常运行。它也是容器存储接口(CSI)和容器网络接口(CNI)的管理者。
-
-
kube-proxy:
-
kube-proxy也运行在每个节点上,负责监听service和endpoint的变化情况,并通过iptables等方式实现服务的负载均衡。
-
总结
Kubernetes 是一个复杂而强大的容器编排平台,掌握它的部署和核心组件的作用对于运维和开发者来说至关重要。本文介绍了从安装到部署、从网络配置到集群管理的详细过程,帮助我们更好地理解和使用 Kubernetes。
更多推荐
所有评论(0)