【问题标题】:Expose container in Kubernetes在 Kubernetes 中公开容器
【发布时间】:2020-07-03 21:09:01
【问题描述】:

我想创建特定版本的 redis 用作缓存。任务:

  • Pod 必须在 Web 命名空间中运行
  • Pod 名称应该是缓存
  • 镜像名称是 lfcccnf/redis,带有 4.0-alpine 标签
  • 暴露端口 6379
  • pod 需要在完成后运行

这是我的步骤:

  • k create ns web
  • k -n web run cache --image=lfccncf/redis:4.0-alpine --port=6379 --dry-run=client-o yaml > pod1.yaml
  • vi pod1.yaml
  • 吊舱看起来像这样
  • k create -f pod1.yaml 当未定义公开服务名称时,此命令是否可以完全完成任务? k expose pod cache --port=6379 --target-port=6379。 使用如下命令保持 pod 运行的最佳方法是:["/bin/sh", "-ec", "sleep 1000"] 吗?

【问题讨论】:

  • 首先,请查看this 文章,并尝试将您的代码示例发布为代码示例而不是屏幕截图。您只需粘贴代码,选择它并按 Ctrl+K。它更具可读性。其次,您的实际问题是什么?好的做法是在标题中明确表述。您为什么想在 Pod 已经正常运行时做一些额外的事情来保持它的运行?你试过了吗?我做到了。并且可以确认从这个镜像创建的 pod 运行良好,不需要任何额外的命令来运行。

标签: kubernetes kubernetes-pod


【解决方案1】:

您不应该使用sleep 来保持redis pod 运行。只要 redis 进程在容器中运行,pod 就会运行。

【讨论】:

    【解决方案2】:

    最好的方法是从https://hub.helm.sh/charts/stable/redis-ha 获取稳定的舵图。执行 helm pull 并根据需要修改值。 出于各种原因,应将 Redis 定义为 Statefulset。你也可以做一个

    mkdir my-redis
    helm fetch --untar --untardir . 'stable/redis' #makes a directory called redis 
    helm template --output-dir './my-redis' './redis' #redis dir (local helm chart), export to my-redis dir
    

    如果你愿意,请使用Kustomise

    当您看到稳定图表中有多少代码时,您会注意到 redis 部署定义并不是那么简单。

    然后您可以通过各种方式公开它,但通常您只需要在集群内进行访问。 如果您需要一种从集群外部快速测试的方法或将其用作开发环境,请查看官方方法。

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 2017-07-05
      • 2017-12-20
      • 2020-01-31
      • 1970-01-01
      • 2019-01-10
      • 1970-01-01
      相关资源
      最近更新 更多