在Kubernetes中暴露容器

时间:2020-07-03 12:52:37

标签: kubernetes kubernetes-pod

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

  • Pod必须在Web名称空间中运行
  • Pod名称应为缓存
  • 图像名称为带有4.0-alpine标签的lfccncf / redis
  • 暴露端口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
  • pod看起来像这样 enter image description here
  • k create -f pod1.yaml 当未定义公开服务名称时,是否使用此正确命令完全完成任务? k expose pod cache --port=6379 --target-port=6379。 这是使用["/bin/sh", "-ec", "sleep 1000"]这样的命令使pod保持运行的最佳方法吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

最好的解决方法是从https://hub.helm.sh/charts/stable/redis-ha获取稳定的头盔图表。进行舵拉并根据需要修改值。 出于各种原因,应该将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部署定义不是那么简单。

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