使用阿里云容器服务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搭建和管理企业级网站应用
目录
相关文章
|
3月前
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
85 10
|
2月前
|
安全 持续交付 云计算
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
课时5:阿里云容器服务:最原生的集成Docker和云服务
|
3月前
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
|
3月前
|
弹性计算 监控 持续交付
面对热点事件,阿里云如何通过云上弹性与容器服务帮助客户应对流量洪峰
面对热点事件,阿里云如何通过云上弹性与容器服务帮助客户应对流量洪峰
|
3月前
|
边缘计算 调度 对象存储
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
|
3月前
|
监控 Cloud Native Java
基于阿里云容器服务(ACK)的微服务架构设计与实践
本文介绍如何利用阿里云容器服务Kubernetes版(ACK)构建高可用、可扩展的微服务架构。通过电商平台案例,展示基于Java(Spring Boot)、Docker、Nacos等技术的开发、容器化、部署流程,涵盖服务注册、API网关、监控日志及性能优化实践,帮助企业实现云原生转型。
|
17天前
|
关系型数据库 MySQL Docker
|
2月前
|
Ubuntu 关系型数据库 MySQL
容器技术实践:在Ubuntu上使用Docker安装MySQL的步骤。
通过以上的操作,你已经步入了Docker和MySQL的世界,享受了容器技术给你带来的便利。这个旅程中你可能会遇到各种挑战,但是只要你沿着我们划定的路线行进,你就一定可以达到目的地。这就是Ubuntu、Docker和MySQL的灵魂所在,它们为你开辟了一条通往新探索的道路,带你亲身感受到了技术的力量。欢迎在Ubuntu的广阔大海中探索,用Docker技术引领你的航行,随时准备感受新技术带来的震撼和乐趣。
124 16
|
2月前
|
监控 关系型数据库 MySQL
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
153 30
|
2月前
|
存储 虚拟化 Docker

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版
  • 推荐镜像

    更多