使用阿里云容器服务Kubernetes通过init Container形式变更Pod的iptables

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: iptables可以看做客户端代理,通过一系列规则对数据包进行处理。本文主要讲述如何使用阿里云容器服务Kubernetes,通过已有镜像形式部署包含iptables规则变更的应用,及如何查看规则是否生效。在笔者操作过程中,碰到了权限问题,也会在本文中说明。涉及到镜像打包上传的内容,会在另外一篇文章中讲解。

  本文主要涉及两个镜像:第一个是包含iptables规则变更脚本的镜像,名称为ali-test.test.com/app/proxy_iptables版本为 release_v0.0.1_develop,另一个是简单应用hello-world的镜像,名称为ali-test.test.com/app/tutum/hello-world,版本为release_v0.0.1。其中ali-test.test.com为私有镜像仓库地址,app为项目名称,第一个镜像作为init container形式启动。
  第一个镜像proxy_iptables:release_v0.0.1_develop,包含了对iptables的变更脚本,抽取脚本中部分命令,如下所示:

#请求转发到proxy_port定义的端口
echo "begin pull iptables rules"
proxy_port=$1
echo "proxy port = $proxy_port"
iptables -t nat -N PROXY_REDIRECT
iptables -t nat -A PROXY_REDIRECT -p tcp -j REDIRECT --to-port "${proxy_port}"
......

  下面开始通过阿里云控制台使用容器服务-kubernetes。控制台入口为:应用--选择“无状态”--选择一个集群开始操作(阿里云账户需要有操作权限)。步骤如下:

(1)首先创建命名空间或者使用已有命名空间
(2)点击“使用镜像创建”,填写应用名称、副本数量,勾选时区同步,如图一所示:

step1.png

图一

(3)点击“下一步”,进行容器配置,配置镜像名称ali-test.test.com/app/proxy_iptables,镜像tag为release_v0.0.1_develop,所属资源根据使用填写。对于此应用,需要勾选Init Container。因为此镜像仅包含了脚本,其它配置可以不用填写,如图二所示:
image.png

图二

(4) 点击“添加容器”,以相同的形式,部署hello-world应用,不勾选“Init Container”,如图三所示。接着下一步,直至创建完成。

image.png

图三

(5) 查看proxy_iptables容器日志,会发现容器在执行iptables命令时异常:Permission denied,如图四所示:

image.png

图四

解决方式如下:
打开应用的yaml文件,在initContainer容器配置中添加:

securityContext:
     privileged: true

如图五所示:

image.png

图五

更新后,查看容器日志,iptables命令可正常执行,hello-world应用启动正常。
(6)登录hello-world应用容器,查看iptables变更,命令如下:
查看运行的容器信息,并获取container ID:

docker ps |grep lyl

查看容器PID:

docker top $container_id

查看iptables变更:

nsenter -t $PID   -n iptables  -t nat -S

通过查看容器日志,可以看到iptables脚本变更正常执行。
至此,部署完成,Pod及container正常启动运行。

其它说明:
k8s pod内部容器是共享网络空间的,通过命令查看iptables的规则,同一个pod内的多个container规则是相同的。

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
2月前
|
存储 Kubernetes Docker
【赵渝强老师】Kubernetes中Pod的基础容器
Pod 是 Kubernetes 中的基本单位,代表集群上运行的一个进程。它由一个或多个容器组成,包括业务容器、基础容器、初始化容器和临时容器。基础容器负责维护 Pod 的网络空间,对用户透明。文中附有图片和视频讲解,详细介绍了 Pod 的组成结构及其在网络配置中的作用。
【赵渝强老师】Kubernetes中Pod的基础容器
|
2月前
|
Prometheus Kubernetes 监控
深入探索Kubernetes中的Pod自动扩展(Horizontal Pod Autoscaler, HPA)
深入探索Kubernetes中的Pod自动扩展(Horizontal Pod Autoscaler, HPA)
|
2月前
|
运维 Kubernetes Shell
【赵渝强老师】K8s中Pod的临时容器
Pod 是 Kubernetes 中的基本调度单位,由一个或多个容器组成,包括业务容器、基础容器、初始化容器和临时容器。临时容器用于故障排查和性能诊断,不适用于构建应用程序。当 Pod 中的容器异常退出或容器镜像不包含调试工具时,临时容器非常有用。文中通过示例展示了如何使用 `kubectl debug` 命令创建临时容器进行调试。
|
2月前
|
Kubernetes 调度 容器
【赵渝强老师】K8s中Pod中的业务容器
Pod 是 Kubernetes 中的基本调度单元,由一个或多个容器组成。除了业务容器,Pod 还包括基础容器、初始化容器和临时容器。本文通过示例介绍如何创建包含业务容器的 Pod,并提供了一个视频讲解。示例中创建了一个名为 "busybox-container" 的业务容器,并使用 `kubectl create -f firstpod.yaml` 命令部署 Pod。
|
2月前
|
Kubernetes 容器 Perl
【赵渝强老师】K8s中Pod中的初始化容器
Kubernetes的Pod包含业务容器、基础容器、初始化容器和临时容器。初始化容器在业务容器前运行,用于执行必要的初始化任务。本文介绍了初始化容器的作用、配置方法及优势,并提供了一个示例。
|
8天前
|
人工智能 运维 Kubernetes
阿里云容器服务AI助手2.0 - 新一代容器智能运维能力
2024年11月,阿里云容器服务团队进一步深度融合现有运维可观测体系,在场景上覆盖了K8s用户的全生命周期,正式推出升级版AI助手2.0,旨在更好地为用户使用和运维K8S保驾护航。
|
27天前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
本文整理自2024云栖大会冯诗淳(花名:行疾)的演讲,介绍了阿里云容器服务团队在生产级可观测体系建设方面的实践。冯诗淳详细阐述了容器化架构带来的挑战及解决方案,强调了可观测性对于构建稳健运维体系的重要性。文中提到,阿里云作为亚洲唯一蝉联全球领导者的容器管理平台,其可观测能力在多项关键评测中表现优异,支持AI、容器网络、存储等多个场景的高级容器可观测能力。此外,还介绍了阿里云容器服务在多云管理、成本优化等方面的最新进展,以及即将推出的ACK AI助手2.0,旨在通过智能引擎和专家诊断经验,简化异常数据查找,缩短故障响应时间。
阿里云ACK容器服务生产级可观测体系建设实践
|
13天前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
5天前
|
监控 安全 Cloud Native
阿里云容器服务&云安全中心团队荣获信通院“云原生安全标杆案例”奖
2024年12月24日,阿里云容器服务团队与云安全中心团队获得中国信息通信研究院「云原生安全标杆案例」奖。
|
27天前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
本文基于2024云栖大会演讲,探讨了软件供应链攻击的快速增长趋势及对企业安全的挑战。文中介绍了如何利用阿里云容器服务ACK、ACR和ASM构建云原生软件供应链安全,涵盖容器镜像的可信生产、管理和分发,以及服务网格ASM实现应用无感的零信任安全,确保企业在软件开发和部署过程中的安全性。

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版