9月前
评论
Kubernetes 网络之 Calico 插件安装、切换网络模式、卸载
本文介绍了通过Tigera Operator安装Calico插件的流程,包括安装Tigera Operator和Calico的具体步骤。Tigera Operator通过CRD对象为Calico提供生命周期管理。文章还详细说明了如何在不同网络模式(如IPIP、VXLAN、BGP和CrossSubnet)之间切换,每种模式下的配置修改及验证方法。最后,提供了卸载Calico的完整流程,包括删除资源对象、虚拟网卡、CNI配置文件以及重启kubelet服务。
9月前
评论
Kubernetes 网络之 Pod 网络调试
本文介绍了在Kubernetes集群中对Pod进行网络调试的一种方法,以解决由于容器镜像中通常不包含ping、curl等工具导致的调试难题。主要使用了Linux命令行工具nsenter来进入Pod内容器的网络命名空间,从而能够利用宿主机上的网络调试工具完成任务。文章详细描述了整个调试过程,包括确认Pod所在节点、获取容器ID与PID、使用nsenter进入容器网络空间以及最终执行调试操作的具体步骤。此外,还列举了nsenter的一些常用参数及其功能,帮助读者更好地理解和应用该工具于实际场景中。
9月前
评论
Kubernetes 网络之 CoreDNS
CoreDNS 是一种采用 Golang 编写的、插件式的 DNS 服务器,自 Kubernetes 1.13 版本起成为其默认的 DNS 服务解决方案,主要用于集群内部的服务发现。它基于 Apache License Version 2 开源协议发布,并且是 CNCF 孵化并已毕业的项目。CoreDNS 的主要特点包括插件化架构、简化配置(通过 Corefile 文件)、与 Kubernetes 和 ETCD 集成的能力以及高度灵活性和性能优化等。配置示例展示了如何设置监听端口、错误处理、健康检查、Kubernetes 服务解析等功能。此外,还介绍了几种在 Kubernetes 中使用的 DNS 策略选项,如 Default、ClusterFirst、ClusterFirstWithHostNet 和 None,允许用户根据需要调整 Pod 的 DNS 解析行为。
9月前
评论
Kubernetes 包管理工具之 Helm 使用
本文介绍了Helm作为Kubernetes包管理工具的基本使用方法,包括Chart仓库和Chart安装包的操作。对于Chart仓库,可以执行查看、添加、更新、移除以及搜索操作。在处理Chart安装包时,用户能够创建、打包、下载、检查及渲染Chart以生成YAML资源清单。此外,还详细讲解了如何通过Helm命令来管理Kubernetes上的应用程序实例(Release),如安装、列表查看、状态查询、升级、历史版本回查、回滚及卸载等步骤,每一步都提供了相应的命令示例与参数说明,帮助开发者高效地管理和部署Kubernetes应用。
9月前
评论
GitLab 禁用 RACK ATTACK 机制
文章描述了公司内部自建GitLab服务中遇到的频繁403错误问题,该问题是由于RACK ATTACK模块对来自负载均衡设备IP的请求进行了限制。为解决此问题,首先尝试了临时方法——通过删除Redis中的特定key来解除IP封禁,但这不是长久之计。接着探索了官方文档提供的配置修改方案,但由于环境差异未能直接应用。进一步分析发现,可以通过调整Kubernetes部署下的环境变量`RACK_ATTACK_ENABLED`来控制RACK ATTACK模块的状态。最终,通过将`RACK_ATTACK_ENABLED`设置为`false`成功解决了问题,使研发团队能够正常访问GitLab服务。此外,也提到了另一种解决方案是保持RACK ATTACK启用但添加白名单的方式。
9月前
评论
Kubernetes 包管理工具之 Helm 简介
Helm 是 Kubernetes 的一种包管理工具,用于定义、安装、升级和配置应用程序。它通过 Chart 形式打包复杂的应用程序(如 Deployment、Service 等资源对象),简化了安装过程,并支持版本管理和依赖管理。Helm 通过 Values 配置和资源清单模版机制,使得用户可以在一处修改配置,提高部署效率和标准化程度。主要特点包括声明式配置、可重用性、社区支持、安全性以及插件机制等。主要概念有 Chart、Repository、Value、Template 和 Release。Helm 安装简单,可通过 GitHub 下载二进制文件完成。
9月前
评论
Kubernetes 包管理工具之 Helm 语法
本文介绍了Helm Chart的结构和语法,帮助读者更好地理解和自定义Helm Chart。Helm Chart的基本结构包括`charts`目录(存放依赖的子Chart)、`Chart.yaml`(元数据文件)、`templates`目录(Kubernetes资源模板)以及`values.yaml`(默认配置文件)。`Chart.yaml`定义了Chart的基本信息如名称、版本等;`values.yaml`则定义了模板中使用的变量值。在`templates`目录下,包含了各种Kubernetes资源对象的模板文件。文章还详细讲解了Helm模板语法,包括模板指令、注释方法、内置对象(如Release、Chart、Values等)、模版函数(如quote, squote, title等)、控制结构(if/else, with, range),以及命名模板的使用方法。此外,还介绍了锚点和锚点别名的概念及其用法,这些工具使得Helm Chart更加灵活和强大。
9月前
评论
搭建OpenVPN
本文介绍了如何搭建OpenVPN以实现内网服务的外网访问。首先,安装必要的依赖包如openssl、lzo等,并添加epel-release源来获取更多软件包。接着安装openvpn和easy-rsa工具,后者用于生成证书和密钥。通过执行一系列命令初始化PKI环境并创建CA证书、服务器及客户端证书。之后,编写身份验证脚本并设置认证用户文件。配置server.conf文件,包括端口、虚拟网络设备、证书路径等信息,并创建软链接简化启动过程。还需配置防火墙规则以允许OpenVPN流量通过。最后,在客户端下载所需的证书文件,配置client.ovpn连接文件,使用管理员权限运行客户端程序完成连接。整个过程详细描述了从安装到配置直至成功连接的所有步骤。
10月前
评论
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。
10月前
评论
Kubernetes 证书管理工具 Cert-Manager
Cert-Manager是Kubernetes证书管理工具,支持自动证书管理和多供应商。
10月前
评论
如何有效降低 AWS EKS 成本
本文介绍了如何通过弹性伸缩、成本优化工具等方法降低Amazon EKS的成本。
10月前
评论
Kubernetes 安全机制之 Security Context
本文介绍了Kubernetes中的Security Context,这是一种重要的安全机制,通过定义Pod或容器的权限来增强安全性。Security Context包括多种配置字段,如AllowPrivilegeEscalation、appArmorProfile、capabilities等,用于控制容器运行时的各种安全设置。文章提供了为Pod和容器设置Security Context的具体示例,并详细解释了这些配置的作用。例如,通过`runAsUser`可以指定容器内进程的用户ID,而`privileged`则允许容器以特权模式运行。此外,还强调了容器级别的Security Context优先级高于Pod级别,在存在冲突时会覆盖Pod的设置。