NAME

Podman-Kube-play-基于Kubernetes YAML创建容器、Pod和卷

SYNOPSIS

podman kube play [options] file.yml|-|https://website.io/file.yml

DESCRIPTION

podman kube play 读取Kubernetes YAML的结构化文件。它重新创建YAML中描述的容器、Pod或卷。然后启动Pod中的容器,并输出新Pod的ID或新卷的名称。如果将YAML文件指定为“-”,则 podman kube play 从标准输入中读取YAML文件。输入还可以是指向https://podman.io/demo.yml.等Yaml文件的URL podman kube play 从URL读取YAML并从中创建Pod和容器。

使用 --down 命令行选项,它还能够拆卸上一次运行 podman kube play

使用 --replace 命令行选项,它将拆除由上一次运行的 podman kube play 并使用Kubernetes YAML文件重新创建Pod。

理想情况下,输入文件是由Podman命令创建的(参见podman-kube-Generate(1))。这保证了进口的顺利和预期的结果。

目前支持的Kubernetes种类有:

  • 豆荚

  • 部署

  • PersistentVolumeClaim

  • ConfigMap

  • 秘密

  • DaemonSet

  • 工作

Kubernetes Pods or Deployments

kube play只支持五种卷类型, hostPath , emptyDir , configMap , persistentVolumeClaim ,而且 image 卷类型。

  • When using the hostPath volume type, only the default (empty), DirectoryOrCreate, Directory, FileOrCreate, File, Socket, CharDevice and BlockDevice subtypes are supported. Podman interprets the value of hostPath path as a file path when it contains at least one forward slash, otherwise Podman treats the value as the name of a named volume.

  • 在使用 persistentVolumeClaim ,其值为 claimName 是那个叫VOLUME的Podman的名字。

  • 在使用 emptyDir 卷,Podman创建一个匿名卷,该卷附加在Pod内运行的容器,一旦Pod被移除,该卷就会被删除。

  • 当使用 configMap 卷,Podman创建一个匿名卷,该卷附加到pod内运行的容器中,并在pod被删除后删除。

  • 当使用 image 卷,Podman创建具有空子路径的只读图像卷(整个图像已装入)。该图像必须已经在本地存在。仅在根模式下支持它。

注意:Containers的默认重启策略为 always 。您可以通过设置 restartPolicy 规范中的字段。

注意:当使用init容器播放Kube YAML时,init容器是使用init类型值创建的 once 。若要更改默认类型,请使用 io.podman.annotations.init.container.type 要将类型设置为的注释 always

注: hostPath Kube Play创建的卷类型被赋予SELinux共享标签(Z),绑定装载不会重新标记(使用 chcon -t container_file_t -R <directory> )。

注意:要设置pod的userns,请使用 io.podman.annotations.userns pod/deployment定义中的注释。例如, io.podman.annotations.userns=keep-id 注释告诉Podman创建一个用户命名空间,其中当前无根用户的UID:DID映射到容器中的相同值。这可以用 --userns

注意:请使用 io.podman.annotations.volumes-from 将一个容器的装入卷绑定到另一个容器的注释。您可以将卷从多个源容器装载到目标容器。在Kube YAML中,必须在源容器之前定义属于同一Pod的源容器。批注格式为 io.podman.annotations.volumes-from/targetContainer: "sourceContainer1:mountOpts1;sourceContainer2:mountOpts2"

注:如果 :latest 标记时,Podman尝试从注册表中提取图像。如果映像是使用Podman或Buildah在本地构建的,则它已经 localhost 作为域,在这种情况下,Podman使用来自本地存储的图像,即使它具有 :latest 标签。

注:该命令 podman play kube 是的别名 podman kube play ,并执行相同的功能。

注:该命令 podman kube down 可用于停止和移除基于以下内容的吊舱或容器: podman kube play 来创造它们。

注意:要自定义在以下过程中创建的INFRA容器的名称 podman kube play ,请使用 io.podman.annotations.infra.name Pod定义中的注释。此批注是在从使用 --infra-name 设置了标志。

注:使用 io.podman.annotations.pids-limit/$ctrname 注释来配置pod的pid限制。

Kubernetes PersistentVolumeClaims

Kubernetes PersistentVolumeClaim代表一个名为VOLUME的Podman。Podman创建卷时只需要PersistentVolumeClaim名称。Kubernetes注释可用于利用Podman卷的可用选项。

  • volume.podman.io/driver

  • volume.podman.io/device

  • volume.podman.io/type

  • volume.podman.io/uid

  • volume.podman.io/gid

  • Volume.podman.io/mount-Options

  • Volume.podman.io/导入源

  • volume.podman.io/image

使用 volume.podman.io/import-source 将注释值中指定的tarball(.tar、.tar.gz、.tgz、.bzip、.tar.xz、.txz)的内容导入到创建的Podman卷中

Kube Play能够在给定正确的目录布局和容器文件的情况下即时构建映像。此选项目前还不适用于远程客户端,包括Mac和Windows(不包括WSL2)计算机。请考虑以下摘自YAML文件的内容:

apiVersion: v1
kind: Pod
metadata:
...
spec:
  containers:
  - name: container
    image: foobar
...

如果有一个名为 foobar 在当前工作目录中包含名为的文件 ContainerfileDockerfile ,Podman Kube Play构建并命名了这个形象 foobar 。此示例的目录结构示例如下所示:

|- mykubefiles
    |- myplayfile.yaml
    |- foobar
         |- Containerfile

构建考虑到 foobar 作为生成的上下文目录。如果本地存储中有一个名为 foobar ,否则不会生成映像 --build 使用了标志。使用 --build=false 以完全禁用生成。

Kube play支持CDI(容器设备接口)设备选择器与容器共享主机设备(例如图形处理器)。配置格式遵循Kubernetes扩展资源管理:

apiVersion: v1
kind: Pod
spec:
  containers:
  - name: container
    resources:
      limits:
        nvidia.com/gpu=all: 1

要启用共享主机设备,类似于使用 --device 标志Podman kube支持自定义CDI选择器: podman.io/device=<host device path> .

Kubernetes ConfigMap

Kubernetes ConfigMap可以被称为Pod或部署中的环境变量或卷的来源。在Podman中,ConfigMap不是独立的对象;相反,当容器使用ConfigMap时,Podman会根据需要创建环境变量或卷。

例如,下面的YAML文档定义了ConfigMap,然后在Pod中使用它:

apiVersion: v1
kind: ConfigMap
metadata:
  name: foo
data:
    FOO: bar
---
apiVersion: v1
kind: Pod
metadata:
  name: foobar
spec:
  containers:
  - name: container-1
    image: foobar
    envFrom:
    - configMapRef:
        name: foo
        optional: false

因此,环境变量 FOO 设置为 bar 对于容器 container-1

Kubernetes Secret

库伯内斯秘密代表一个名叫秘密的波德曼。Kubernetes Secret作为一个整体保存,可以作为Pod或部署中的环境变量或卷的来源。

例如,下面的YAML文档定义了一个Secret,然后在Pod中使用它:

kind: Secret
apiVersion: v1
metadata:
  name: foo
data:
  foo: YmFy # base64 for bar
---
apiVersion: v1
kind: Pod
metadata:
  name: foobar
spec:
  containers:
  - name: container-1
    image: foobar
    env:
    - name: FOO
      valueFrom:
        secretKeyRef:
          name: foo
          key: foo

因此,环境变量 FOO 设置为 bar 对于容器 container-1

Automounting Volumes (deprecated)

注意:不建议使用自动加载注释。Kubernetes已经 [native support for image volumes] (https://kubernetes.io/docs/tasks/fonture-pod-container/image-volumes/)并且应该使用它而不是这个特定于播客的注释。

如果注释 io.podman.annotations.kube.image.automount/$ctrname 给出了以下规则适用:

  • 该图像必须已经在本地存在。

  • 图像必须至少有1个音量指令。

  • Volume指令给出的路径将从图像装载到容器中。例如,体积为 /test/test_dir 将有 /test/test_dir 在安装到 /test/test_dir 在容器里。

  • 可以指定多个图像。如果多个图像在特定路径上具有体积,则指定的最后一个图像将获胜。

  • 映像始终以只读方式装载。

  • 要装载的图像在注释“io.podman.annotations.kube.image.automount/$ctrName”中定义为以星号分隔的列表。它们安装在吊舱中的单个容器中,而不是整个吊舱中。如果需要额外的底座,可以为额外的容器指定注释。

OPTIONS

--annotation = key=value

向容器或Pod添加批注。此选项可以多次设置。

--authfile = path

身份验证文件的路径。缺省值为 ${XDG_RUNTIME_DIR}/containers/auth.json 在Linux上,以及 $HOME/.config/containers/auth.json 在Windows/MacOS上。该文件由创建 podman login 。如果在那里找不到授权状态, $HOME/.docker/config.json 被选中,它是使用 docker login

注意:还可以通过设置 REGISTRY_AUTH_FILE 环境变量这可以通过以下方式完成 export REGISTRY_AUTH_FILE=path

--build

即使在本地存储中找到映像,也要构建映像。使用 --build=false 以完全禁用生成。(此选项不适用于远程Podman客户端)

注意:您还可以通过设置BUILDAH_ISOLATION环境变量来覆盖默认隔离类型。导出BUILDAH_ISOLATION=OCI。有关更多信息,请参见podman-Build.1.md。

--cert-dir = path

在以下位置使用证书 path (\ *.crt, * .cert,\ *.key) to connect to the registry. (Default: /etc/containers/certs.d) For details, see * containers-certs.d(5) *。(此选项不适用于远程Podman客户端,包括Mac和Windows(不包括WSL2)计算机)

--configmap = path

在PATH中使用Kubernetes configmap YAML为Pod容器内的环境变量值提供源。(此选项不适用于远程Podman客户端)

注: --configmap 选项可以多次使用,或者可以使用逗号分隔的路径列表来传递多个Kubernetes figmap YAM。YAML文件可以是多文档YAML格式。但是,它必须仅包含配置映射

--context-dir = path

使用 path 作为每个映像的构建上下文目录。要求--Build选项为真。(此选项不适用于远程Podman客户端)

--creds = [[用户名[:密码]]]

这个 [username[:password] ]如有需要,可用于向登记处进行认证。如果未提供其中一个或两个值,则会出现命令行提示符并可以输入值。输入密码时没有回显。

请注意,指定的凭据仅用于针对目标注册表进行身份验证。它们不用于镜像或在重写注册表时(请参见 containers-registries.conf(5) );要针对那些考虑使用 containers-auth.json(5) 文件。

--force

拆除链接到PersistentVolumeClaims的卷,作为--down的一部分

--help-h

打印用法报表

--ip = IP地址

为Pod分配静态IP地址。当Kube Play创建多个Pod时,可以多次指定此选项。注意:加入多个网络时,请使用 --network name:ip=<ip> 语法。

--log-driver = driver

为所有创建的容器设置日志记录驱动程序。

--log-opt = name=value

记录驱动程序特定选项。

设置自定义日志记录配置。以下是 name 支持:

path :指定日志文件的路径(例如 --log-opt path=/var/log/container/mycontainer.json );

max-size :指定日志文件的最大大小(例如 --log-opt max-size=10mb );

tag :指定容器的自定义日志标记(例如 --log-opt tag="{{.ImageName}}" 。它支持的密钥与 podman inspect --format 。此选项当前仅受 journald 日志驱动程序。

--mac-address = MAC地址

为Pod分配静态MAC地址。当Kube Play创建多个Pod时,可以多次指定此选项。注意:加入多个网络时,请使用 --network name:mac=<mac> 语法。

--network = mode--net

设置Pod的网络模式。

有效 mode 值包括:

  • [bridge[:OPTIONS,...]] :在默认网桥上创建网络堆栈。这是Rootful Containers的默认设置。可以指定以下附加选项:

    • alias= 名称:添加容器的网络范围别名。

    • ip= IPv4:为此容器指定静态IPv4地址。

    • ip6= IPv6:为此容器指定静态IPv6地址。

    • mac= MAC:为此容器指定静态MAC地址。

    • interface_name= 名称:为容器内创建的网络接口指定名称。

    • host_interface_name= 名称:为容器外部创建的网络接口指定名称。

    任何其他选项都将未经验证而传递给netavark。这对于将参数传递给netavark插件可能很有用。

    例如,要设置静态IPv4地址和静态mac地址,请使用 --network bridge:ip=10.88.0.10,mac=44:33:22:11:00:99

  • <网络名称或ID> [:OPTIONS,...] :连接到用户定义的网络;这是由创建的网络的网络名称或ID podman network create .可以指定与上述桥模式下描述的相同选项。使用 --network 多次选项以指定其他网络。\为了向后兼容性,还可以在第一个上指定逗号分隔的网络 --network 参数,但这会阻止您使用上面桥梁部分下描述的选项。

  • none :为容器创建网络命名空间,但不为其配置网络接口,因此容器没有网络连接。

  • 容器: id:重用另一个容器的网络堆栈。

  • host :不要创建网络命名空间,容器使用主机的网络。注意:主机模式允许容器完全访问本地系统服务,如D-BUS,因此被认为是不安全的。

  • ns: Path:要加入的网络命名空间的路径。

  • private :为容器创建新的命名空间。这使用了 bridge Rootful Containers和 slirp4netns 对于没有根基的人。

  • slirp4netns[:OPTIONS,...] :使用 slirp4netns (1)创建用户网络堆栈。可以指定这些附加选项,也可以设置为 network_cmd_options in containers. inf:

    • allow_host_loopback=true|false :允许illrp4netns到达主机环回IP(默认为10.0.2.2或更改后的illrp4netns CIDR子网中的第二个IP,请参阅下面的CIDR选项)。默认值为FALSE。

    • mtu= TU:指定要用于此网络的RTI。(默认为 65520 ).

    • cidr= CIDR:指定此网络使用的ip范围。(默认为 10.0.2.0/24 ).

    • enable_ipv6=true|false :启用IPv6。默认值为True。(需要 outbound_addr6 )。

    • outbound_addr= INTERFACE:指定sirp绑定到的传出接口(仅限ipv4流量)。

    • outbound_addr= IPv4:指定slirp绑定的传出ipv4地址。

    • outbound_addr6= INTERFACE:指定sirp绑定到的传出接口(仅限ipv6流量)。

    • outbound_addr6= IPv6:指定slirp绑定的传出ipv6地址。

    • port_handler=rootlesskit :使用rootlessKit进行端口转发。Default. \注意:RootlessKit通常会将进入数据包的源IP地址更改为容器网络命名空间中的IP地址 10.0.2.100 .如果应用程序需要真正的源IP地址,例如Web服务器日志,请使用sirp4netns端口处理程序。rootlessKit端口处理程序也用于连接到用户定义网络时的无根容器。

    • port_handler=slirp4netns :使用glirp4netns端口转发,它比rootless kit慢,但保留了正确的源IP地址。此端口处理程序不能用于用户定义的网络。

  • pasta[:OPTIONS,...]: use pasta(1) to create a user-mode networking stack.
    This is the default for rootless containers and only supported in rootless mode.
    By default, IPv4 and IPv6 addresses and routes, as well as the pod interface name, are copied from the host. Port forwarding preserves the original source IP address. Options described in pasta(1) can be specified as comma-separated arguments.
    In terms of pasta(1) options, --config-net is given by default, in order to configure networking when the container is started, and --no-map-gw is also assumed by default, to avoid direct access from container to host using the gateway address. The latter can be overridden by passing --map-gw in the pasta-specific options (despite not being an actual pasta(1) option).
    For better integration with DNS handling, --dns-forward 169.254.1.1 is passed, and this address is added to resolv.conf(5) as first resolver. It is possible to pass --dns-forward explicitly in case a different IP address should be used. To make the host.containers.internal /etc/hosts entry work and allow connections to the host, --map-guest-addr 169.254.1.2 is passed. Again, it can be set explicitly to choose a different IP address.
    Also, -t none and -u none are passed if, respectively, no TCP or UDP port forwarding from host to container is configured (via Podman's --publish or by passing the pasta -t/-u options directly), to disable automatic port forwarding based on bound ports. Similarly, -T none and -U none are given to disable the same functionality from container to host.
    All options can also be set in containers.conf(5); see the pasta_options key under the network section in that file.
    Some examples:

    • pasta:--map-gw :允许容器使用网关地址直接到达主机。

    • pasta:--mtu,1500 :指定1500字节的MTU作为 tap 容器中的接口。

    • pasta:--ipv4-only,-a,10.0.2.0,-n,24,-g,10.0.2.2,--dns-forward,10.0.2.3,-m,1500,--no-ndp,--no-dhcpv6,--no-dhcp ,相当于默认的glirp4netns(1)选项:禁用IPv6、分配 10.0.2.0/24 发送到 tap0 容器内接口,带网关 10.0.2.3 ,启用可在以下位置访问的DNS转发器 10.0.2.3 ,将MTU设置为1500字节,禁用NDP、DHCPv6和DHCP支持。

    • pasta:-I,tap0,--ipv4-only,-a,10.0.2.0,-n,24,-g,10.0.2.2,--dns-forward,10.0.2.3,--no-ndp,--no-dhcpv6,--no-dhcp ,相当于默认的glirp4netns(1)带有Podman覆盖的选项:与上面相同,但将mtu保留为65520字节

    • pasta:-t,auto,-u,auto,-T,auto,-U,auto :启用基于从主机和容器端观察到的绑定端口的自动端口转发

    • pasta:-T,5201 :启用从容器到主机的TCP端口5201转发,使用环回接口而不是TAP接口以提高性能

如果未指定网络选项,并且 host 在YAML文件中没有配置网络模式,创建了一个新的网络堆栈,并将Pod连接到它,从而使Pod到Pod通信成为可能。

--no-hostname

不创建 /etc/hostname 文件放入容器中。

默认情况下,Podman管理 /etc/hostname 文件,添加容器自己的主机名。 当 --no-hostname 选项已设置,图像的 /etc/hostname 如果存在,将不加修改地保留。

--no-hosts

不要修改 /etc/hosts pod中的文件。

Podman控制了吊舱的 /etc/hosts 默认情况下,文件并添加容器名称的条目(请参阅 --name 选项)和主机名(请参阅 --hostname 选项)、内部 host.containers.internalhost.docker.internal 主机,以及使用添加的任何主机名 --add-host 选项.参阅 --add-host 详细信息选项。通过 --no-hosts 禁用此功能,以便图像 /etc/hosts 文件保持未修改。通过设置,全球范围内也可以实现同样的目标 no_hosts=truecontainers.conf .

此选项与Kubernetes YAML中添加的主机冲突。

--publish = [[ip:][hostPort]:]containerPort[/protocol]

定义或覆盖YAML文件中的端口定义。

YAML文件和命令行中的端口列表被合并。匹配是通过使用 containerPort 菲尔德。如果 containerPort 在YAML文件和选项中都存在,后者优先。

--publish-all

将此选项设置为 true 将向主机公开所有端口,即使仅通过 containerPort 在K8 YAML中。就将暴露哪个端口而言, --publish 的优先级高于 hostPort 的优先级高于 containerPort

如果设置为 false (这是默认设置),仅通过定义的端口 hostPort--publish 在主机上发布。

--quiet-q

在拉取图像时抑制输出信息

--replace

撕毁了由前一轮 kube play 并重新创造了豆荚。此选项用于根据Kubernetes YAML使现有Pod保持最新。

--seccomp-profile-root = path

Seccomp配置文件的目录路径(默认为“/var/lib/kubelet/seccomp”)。(此选项不适用于远程Podman客户端,包括Mac和Windows(不包括WSL2)计算机)

--start

创建Pod后启动Pod,设置为False将仅创建它。

--tls-verify

联系注册处时要求HTTPS并验证证书(默认: true )。如果显式设置为 true ,使用TLS验证。如果设置为 false ,不使用TLS验证。如果未指定,则使用TLS验证,除非目标注册表在 containers-registries.conf(5)

--userns = mode

设置容器的用户命名空间模式。

如果 --userns 如果未设置,则按如下方式确定默认值。

  • 如果 --pod 已经设置好了, --userns 被忽略,并使用Pod的用户命名空间。

  • 如果环境变量 PODMAN_USERNS 则使用其值。

  • 如果 userns 中指定的 containers.conf 使用此值。

  • 否则, --userns=host 都是假定的。

--userns="" (即空字符串)是的别名 --userns=host

此选项与 --gidmap--uidmap--subuidname--subgidname

无根用户--userns=键映射:

钥匙

主机用户

容器用户

自动

$UID

NIL(主机用户UID未映射到容器。)

主机

$UID

0(默认用户帐户映射到容器中的根用户。)

保持ID

$UID

$UID(将用户帐户映射到容器内的相同UID。)

Keep-id:uid=200,gid=210

$UID

200:210(将用户帐户映射到容器内指定的UID、GID值。)

Nommap

$UID

NIL(主机用户UID未映射到容器。)

有效 mode 值包括:

auto [:OPTIONS,...] :自动创建唯一的用户命名空间。

  • rootful mode :The --userns=auto 标志要求用户名 containers 在/等等/subuid和/等等/subgid文件中指定,并允许Podman容器分配的未使用的下级用户ID范围。 示例: containers:2147483647:2147483648 .

  • rootless mode :将使用/etc/subuid和/etc/subgid文件中的用户。注运行单个容器而不使用--userns=AUTO将使用整个范围的UID,并且不允许进一步细分。参见子ID(5)。

Podman从分配唯一范围的UID和GID containers 从属用户ID。范围的大小基于映像中所需的UID数量。UID和GID的数量可以用 size 选择。

的选项 --userns=keep-id 使用用户的所有子设备和子设备。的选项 --userns=nomap 使用用户的所有子ID和子ID(用户自己的ID除外)。使用 --userns=auto 只要存在任何启动的容器,启动新容器就不起作用 --userns=nomap--userns=keep-id 而不限制用户命名空间大小。

有效 auto 选项:

  • gidmapping =CONTAINER_GID:HOST_GID:SIZE:强制在用户命名空间中存在GID映射。

  • size =SIZE:指定自动用户命名空间的显式大小。例如: --userns=auto:size=8192 。如果 size 未指定, auto 估计用户命名空间的大小。

  • uidmapping =CONTAINER_UID:HOST_UID:SIZE:强制在用户命名空间中存在UID映射。

中的主机UID和GID gidmappinguidmapping 可以选择性地使用前缀 @ 象征。在这种情况下,Podman将查找与主机ID对应的中间ID,并将找到的中间ID映射到容器ID。有关详情,请参阅 --uidmap

容器: id:加入指定容器的用户命名空间。

host"" (空字符串):在调用方的用户命名空间中运行。容器中运行的进程与调用用户启动的任何其他进程在主机上具有相同的权限。

keep-id :创建一个用户命名空间,其中当前用户的UID:GID映射到容器中的相同值。对于由根创建的容器,当前映射被创建到新的用户名称空间。

有效 keep-id 选项:

  • uid =UID:覆盖用于将当前用户映射到的容器内的UID。

  • gid =GID:覆盖用于将当前用户映射到的容器内的GID。

  • size =SIZE:重写配置的用户命名空间的大小。 不要使所有可用ID饱和是有用的。 以根用户身份运行时不支持。

nomap :创建一个用户命名空间,其中当前无根用户的UID:GID未映射到容器中。根用户创建的容器不允许使用此选项。

ns: NAMESPACE:在给定的现有用户名称空间中运行Pod。

--wait-w

在前台运行Pod和Containers。默认值为FALSE。

任何时候你都可以跑 podman pod ps 在另一个Shell中查看运行的Pod和容器的列表。

当连接到tty模式时,您可以通过按Ctrl-C组合键或接收任何其他中断信号来终止吊舱和容器。

使用创建的所有Pod、容器和卷 podman kube play 在退出时被移除。

EXAMPLES

重新创建指定的主机YAML文件中描述的Pod和容器。

$ podman kube play demo.yml
52182811df2b1e73f36476003a66ec872101ea59034ac0d4d3a7b40903b955a6

重新创建在发送到标准输入的YAML文件中指定的Pod和容器。

$ cat demo.yml | podman kube play -
52182811df2b1e73f36476003a66ec872101ea59034ac0d4d3a7b40903b955a6

按照指定的YAML文件中的描述拆除Pod和容器。

$  podman kube play --down demo.yml
Pods stopped:
52182811df2b1e73f36476003a66ec872101ea59034ac0d4d3a7b40903b955a6
Pods removed:
52182811df2b1e73f36476003a66ec872101ea59034ac0d4d3a7b40903b955a6

提供多个配置映射文件作为指定Pod和容器内的环境变量的源。

$ podman kube play demo.yml --configmap configmap-foo.yml,configmap-bar.yml
52182811df2b1e73f36476003a66ec872101ea59034ac0d4d3a7b40903b955a6

$ podman kube play demo.yml --configmap configmap-foo.yml --configmap configmap-bar.yml
52182811df2b1e73f36476003a66ec872101ea59034ac0d4d3a7b40903b955a6

创建一个连接到两个网络的Pod,每个网络上都有一个静态IP。

$ podman kube play demo.yml --network net1:ip=10.89.1.5 --network net2:ip=10.89.10.10
52182811df2b1e73f36476003a66ec872101ea59034ac0d4d3a7b40903b955a6

请考虑到,必须首先使用podman-network-create(1)创建网络。

从指向YAML文件的URL创建并拆卸。

$ podman kube play https://podman.io/demo.yml
52182811df2b1e73f36476003a66ec872101ea59034ac0d4d3a7b40903b955a6

$ podman kube play --down https://podman.io/demo.yml
Pods stopped:
52182811df2b1e73f36476003a66ec872101ea59034ac0d4d3a7b40903b955a6
Pods removed:
52182811df2b1e73f36476003a66ec872101ea59034ac0d4d3a7b40903b955a6

podman kube play --down 如果URL指向的YAML文件已更改或更改,则不能使用该URL。

Podman Kube Play支持

本文档概述了当前受支持的Kube YAML字段 podman kube play 指挥部。

注: N/A 意味着该选项在单节点Podman环境中不受支持。

Pod字段

字段

支持

集装箱

初始化容器

ImagePull秘密

不是

启用服务链接

不是

os.name

不是

卷数

节点选择器

不适用

节点名称

不适用

affinity.nodeAffinity

不适用

affinity.podAffinity

不适用

affinity.podAntiAffinity

不适用

tolerations.key

不适用

tolerations.operator

不适用

tolerations.effect

不适用

tolerations.tolerationSeconds

不适用

计划程序名称

不适用

运行时类名称

不是

优先级类名称

不是

优先性

不是

topologySpreadConstraints.maxSkew

不适用

topologySpreadConstraints.topologyKey

不适用

topologySpreadConstraints.whenUnsatisfiable

不适用

topologySpreadConstraints.labelSelector

不适用

topologySpreadConstraints.minDomains

不适用

重新启动策略

终止宽限期秒

活动死线秒数

不是

readinessGates.conditionType

不是

主机名

设置主机名为完全限定的域名

不是

子域

不是

hostAliases.hostnames

hostAliases.ip

dnsConfig.nameservers

dnsConfig.options.name

dnsConfig.options.value

dnsConfig.searches

Dns策略

不是

主机网络

主机PID

主机IPC

共享进程命名空间

服务帐户名称

不是

自动装载服务帐户令牌

不是

securityContext.runAsUser

securityContext.runAsNonRoot

不是

securityContext.runAsGroup

securityContext.supplementalGroups

securityContext.fsGroup

不是

securityContext.fsGroupChangePolicy

不是

securityContext.seccompProfile.type

不是

securityContext.seccompProfile.localhostProfile

不是

securityContext.seLinuxOptions.level

securityContext.seLinuxOptions.role

securityContext.seLinuxOptions.type

securityContext.seLinuxOptions.user

securityContext.sysctls.name

securityContext.sysctls.value

securityContext.windowsOptions.gmsaCredentialSpec

不是

securityContext.windowsOptions.hostProcess

不是

securityContext.windowsOptions.runAsUserName

不是

容器字段

字段

支持

名字

图像

图像拉动策略

命令

ARGS

工作方向

ports.containerPort

ports.hostIP

ports.hostPort

ports.name

ports.protocol

env.name

env.value

env.valueFrom.configMapKeyRef.key

env.valueFrom.configMapKeyRef.name

env.valueFrom.configMapKeyRef.optional

env.valueFrom.fieldRef

env.valueFrom.resourceFieldRef

env.valueFrom.secretKeyRef.key

env.valueFrom.secretKeyRef.name

env.valueFrom.secretKeyRef.optional

envFrom.configMapRef.name

envFrom.configMapRef.optional

envFrom.prefix

不是

envFrom.secretRef.name

envFrom.secretRef.optional

volumeMounts.mountPath

volumeMounts.name

volumeMounts.mountPropagation

不是

volumeMounts.readOnly

volumeMounts.subPath

volumeMounts.subPathExpr

不是

volumeDevices.devicePath

不是

volumeDevices.name

不是

resources.limits

resources.requests

lifecycle.postStart

不是

lifecycle.preStop

不是

终止消息路径

不是

终止消息策略

不是

活泼的可能性

就绪性可能性

不是

初创公司可能

不是

securityContext.runAsUser

securityContext.runAsNonRoot

不是

securityContext.runAsGroup

securityContext.readOnlyRootFilesystem

securityContext.procMount

securityContext.privileged

securityContext.allowPrivilegeEscalation

securityContext.capabilities.add

securityContext.capabilities.drop

securityContext.seccompProfile.type

不是

securityContext.seccompProfile.localhostProfile

不是

securityContext.seLinuxOptions.level

securityContext.seLinuxOptions.role

securityContext.seLinuxOptions.type

securityContext.seLinuxOptions.user

securityContext.windowsOptions.gmsaCredentialSpec

不是

securityContext.windowsOptions.hostProcess

不是

securityContext.windowsOptions.runAsUserName

不是

标准

不是

StdinOnce

不是

TTY

不是

永久卷声明字段

字段

支持

卷名

不是

存储类名称

卷模式

不是

访问模式

选择器

不是

resources.limits

不是

resources.requests

配置映射字段

字段

支持

二进制数据

数据

不可变的

不是

部署字段

字段

支持

复制品

✅(忽略实际副本计数并设置为1)

选择器

模板

最小就绪秒数

不是

strategy.type

不是

strategy.rollingUpdate.maxSurge

不是

strategy.rollingUpdate.maxUnavailable

不是

修订历史限制

不是

进度死线秒数

不是

已暂停

不是

守护程序集字段

字段

支持

选择器

模板

最小就绪秒数

不是

strategy.type

不是

strategy.rollingUpdate.maxSurge

不是

strategy.rollingUpdate.maxUnavailable

不是

修订历史限制

不是

工作领域

字段

支持

活动死线秒数

不是

选择器

否(由k8自动设置)

模板

回退限制

不是

完成模式

不是

完井

否(设置为1,kube generate)

手册

不是

并行性

否(设置为1,kube generate)

播客失败政策

不是

暂停

不是

ttl秒后完成

不是

另请参阅

podman(1)podman-kube(1)podman-kube-down(1)podman-network-create(1)podman-kube-generate(1)podman-build(1)containers-certs.d(5)