Kubernetes 安全机制之 Security Context
本文介绍了Kubernetes中的Security Context,这是一种重要的安全机制,通过定义Pod或容器的权限来增强安全性。Security Context包括多种配置字段,如AllowPrivilegeEscalation、appArmorProfile、capabilities等,用于控制容器运行时的各种安全设置。文章提供了为Pod和容器设置Security Context的具体示例,并详细解释了这些配置的作用。例如,通过`runAsUser`可以指定容器内进程的用户ID,而`privileged`则允许容器以特权模式运行。此外,还强调了容器级别的Security Context优先级高于Pod级别,在存在冲突时会覆盖Pod的设置。
Kubernetes 网络之 CNI
本文介绍了Kubernetes中的CNI(Container Network Interface)及其在网络配置中的作用。CNI是一个标准化接口,通过插件化机制支持多种网络方案,如Calico、Flannel和Cilium等,以实现容器间的通信。CNI的基本流程包括创建配置文件、调用插件、创建接口设备、分配IP地址及配置规则。此外,CNI与CRI(Container Runtime Interface)紧密协作,确保容器的网络配置与其生命周期同步。文章还探讨了CNI插件的不同网络模式,如覆盖网络(Overlay Network)和底层网络(Underlay Network),以及Bridge与veth-pair的作用。最后,讨论了kube-proxy在服务发现和负载均衡中的角色,并指出Cilium等现代插件可通过eBPF技术绕过Linux内核,提高效率并替代kube-proxy。
Kubernetes 容器运行时之 Docker 与 Containerd
本文介绍了Kubernetes中的容器运行时(Container Runtime)的基本概念及其主要功能,包括镜像管理、容器生命周期管理、资源隔离等。重点讨论了Docker和Containerd这两种主流容器运行时的特点与区别。Docker最初是一个单一的二进制文件,后来发展成包含多个组件的架构,其中Containerd作为核心子组件负责实际的容器管理工作。而Containerd作为一个独立项目,强调简单性、健壮性和可移植性,已成为CNCF的标准之一。从Kubernetes 1.20版本开始,推荐使用Containerd作为默认容器运行时,因为它提供了更高效稳定的集成方式。但在某些特定场景下,如使用Docker in Docker或Docker Compose等工具时,仍需选择Docker。文章还提供了Containerd的安装方法及常用命令示例。
Kubernetes 集群证书过期处理方法
本文介绍了如何处理使用 kubeadm 安装的 Kubernetes 集群中证书过期的问题。当集群证书(默认有效期为365天)到期后,执行 kubectl 命令会出现连接错误。解决方法包括:首先备份现有证书;然后检测证书的有效期;接着更新所有证书以重置其有效期;之后更新 Kubeconfig 文件;最后重启相关服务(如 kube-apiserver、kube-controller-manager、kube-scheduler 和 etcd)。通过这些步骤,可以确保集群的安全通信功能恢复正常。验证更新效果可以通过再次运行 kubectl 命令或检查证书来完成。
Kubernetes 存储之 StorageClass
本文介绍了Kubernetes中的StorageClass(存储类,SC)及其工作原理。StorageClass是一种资源对象,用于定义存储卷驱动器,并能根据PVC申请动态创建PV。它支持定义多种特性,如存储类型、访问模式、绑定模式、扩展策略和回收策略等。管理员可以定义一个或多个StorageClass对象,当用户创建PVC并指定StorageClass名称时,Kubernetes会自动使用对应的StorageClass来创建PV。此外,文章还提供了StorageClass的示例配置及说明了存储卷绑定模式(Immediate与WaitForFirstConsumer)、回收策略(Retain与Delete)以及如何启用存储卷自动扩容等功能。
Kubernetes 常用命令、对象名称缩写汇总
本文介绍了Kubernetes的常用命令,涵盖了集群、节点、命名空间、控制器、Pod和服务等各个方面,适用于日常运维工作。**集群相关**部分包括查看集群信息、服务、组件状态、版本和API版本。**节点相关**部分涉及查看节点状态、资源使用情况、详细信息以及标签和污点管理。**命名空间相关**部分介绍了创建、查看、删除和切换命名空间的方法。**控制器相关**以Deployment为例,展示了创建、查看、更新、删除控制器及副本伸缩和滚动重启的操作。**Pod相关**部分提供了创建临时Pod、查看Pod列表与详情、删除Pod以及进入Pod容器执行命令的方法。**Service相关**则说明了如何基于已有Deployment创建Service,查看Service信息及其删除方式。最后,文章还列举了一些资源对象的缩写形式,以及如何为`kubectl`命令设置别名以提高工作效率。

