小编Dav*_*aze的帖子

运行多个实例时,Docker 组合不会在容器名称之前添加项目名称

到目前为止,我有一组使用docker-compose up -d非常基本的 docker 运行

我想运行我的项目的多个实例,并且我已经阅读了这个 Run multiple docker compose

现在,当运行docker-compose up -p PRNAME -dcompose 时,不会将项目名称预先添加到容器中,prname_container1并且我收到以下错误:

ERROR: for container1  Cannot create container for service service1: Conflict. The container name "/container1" is already in use by container "f7aeb2ef782556ae5b0". You have to remove (or rename) that container to be able to reuse that name.
Run Code Online (Sandbox Code Playgroud)

我可能在这里遗漏了一些东西。

我的 docker-compose.yml 的一部分看起来像

services:
  service1:
    image: "${PROJECT_REPO}:image"
    container_name: "container1"
    ports:
      - 443:443
      - 8000:80
    networks:
      - db
      - proxy
      - oauth …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

3
推荐指数
1
解决办法
2011
查看次数

Helm - Configmap - 仅替换文件内容而不替换文件名

我已经在配置目录中定义了 application.properties 文件。配置目录位于以下结构中。

config
  application.properties
  application-test.properties
  application-dev.properties
  application-prod.properties
Run Code Online (Sandbox Code Playgroud)

我创建了一个舵图来创建配置图。Helm图表定义如下

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-configmap
data:
  {{- (.Files.Glob "config/*").AsConfig | nindent 2 }}
Run Code Online (Sandbox Code Playgroud)

我看到配置映射已创建。

我们使用该envFrom属性通过正在运行的容器中的环境变量来使用 ConfigMap。(这在我的部署 yaml 文件中)

spec:
   containers:
   - envFrom:
     - configMapRef:
         name: nginx-configmap
Run Code Online (Sandbox Code Playgroud)

我看到这些值存储为环境变量。然而,变量都是小写的。

server.port=8080
server.name=localhost
Run Code Online (Sandbox Code Playgroud)

由于这些是环境变量,因此它们必须是大写的并且 . 应替换为 _。所以,我修改了我的图表如下

data:
  {{- (.Files.Glob "config/*").AsConfig | nindent 2 | upper | replace "." "_" }}

Run Code Online (Sandbox Code Playgroud)

生成的configmap如下

  APPLICATION_PROPERTIES: |
    SERVER_PORT = 8080
    SERVER_NAME = LOCALHOST
Run Code Online (Sandbox Code Playgroud)

以下是容器内的环境变量

APPLICATION_PROPERTIES=SERVER_PORT = 8080
SERVER_NAME = LOCALHOST
Run Code Online (Sandbox Code Playgroud)

我的要求是只有文件的内容应该是大写和. 应替换为 _。不应转换文件名。文件名应保持原样。

这能实现吗?

kubernetes kubernetes-helm

3
推荐指数
1
解决办法
7485
查看次数

kubernetes NodePort 与 ClusterIP 与 Nginx-Ingress

我已经有了自己的微服务,到目前为止,我已经通过 https 将服务以及 helm 图表公开type: NodePortnginx-ingress我自己的公共 IP;我注意到在我的微服务 helm 图表上运行 linter 时,它不安全(使用 NodePort),我应该使用 ClusterIP - 有人可以解释为什么吗?

kubernetes

3
推荐指数
1
解决办法
1420
查看次数

docker-compose 文件中的命令键是如何工作的

我正在尝试了解 docker 示例应用程序“example-voting-app”。我正在尝试使用 docker-compose 构建应用程序。我对 docker compose 文件中的“command”键的行为和 Dockerfile 中的 CMD 指令感到困惑。该应用程序包含一项名为“投票”的服务。docker-compose.yml 文件中投票服务的配置为:

services: # we list all our application services under this 'services' section.
  vote:  
    build: ./vote # specifies docker to build the 
    command: python app.py
    volumes:
     - ./vote:/app
    ports:
      - "5000:80"
    networks:
      - front-tier
      - back-tier
Run Code Online (Sandbox Code Playgroud)

./vote 目录下提供的 Dockerfile 配置如下:

# Using official python runtime base image
FROM python:2.7-alpine

# Set the application directory
WORKDIR /app

# Install our requirements.txt
ADD requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

3
推荐指数
1
解决办法
558
查看次数

if 语句出错

这是我的templates/deployment.yaml代码片段:

volumes:
  - name: notebooks
  {{- if .Values.persistence.enabled }}
    persistentVolumeClaim:
      claimName: "sdfsdf"
  {{- else }}
    emptyDir: {}
  {{- end -}}
  - name: logs
  {{- if .Values.persistence.enabled }}
    persistentVolumeClaim:
      claimName: "sdfsdfdsf"
  {{- else }}
    emptyDir: {}
  {{- end -}}
  - name: conf
  {{- if .Values.persistence.enabled }}
    persistentVolumeClaim:
      claimName: "sdfsdfsdfsdfsd"
  {{- else }}
    emptyDir: {}
  {{- end -}}
Run Code Online (Sandbox Code Playgroud)

目前,我得到:

& helm template zeppelin ./
Error: YAML parse error on zeppelin/templates/deployment.yaml: error converting YAML to JSON: yaml: line 95: block sequence …
Run Code Online (Sandbox Code Playgroud)

go-templates kubernetes kubernetes-helm

3
推荐指数
1
解决办法
9049
查看次数

AWS EKS Kubernetes 和 DockerHub

我在 AWS EKS 中创建了一个集群和节点。我将部署应用到该集群,如下所示

kubectl apply -f deployment.yaml
Run Code Online (Sandbox Code Playgroud)

其中 deployment.yaml 包含容器的规范以及 DockerHub 存储库和图像

但是,我在deployment.yaml中犯了一个错误,需要重新应用到配置中

我的问题是:

1 - 如何使用 kubectl 将 deployment.yaml 重新应用到 AWS EKS 集群?只是运行上面的命令是行不通的 ( kubectl apply -f deployment.yaml)

2- 在我重新应用 deployment.yaml 之后,节点会去获取 DockerHub 镜像还是我还需要做其他事情(假设所有其他细节都可以)

下面的一些输出:

>> kubectl get pods

my-app-786dc95d8f-b6w4h   0/1     ImagePullBackOff   0          9h
my-app-786dc95d8f-w8hkg   0/1     ImagePullBackOff   0          9h
Run Code Online (Sandbox Code Playgroud)
kubectl describe pod my-app-786dc95d8f-b6w4h                                                                            
Name:         my-app-786dc95d8f-b6w4h
Namespace:    default
Priority:     0
Node:         ip-192-168-24-13.ec2.internal/192.168.24.13
Start Time:   Fri, 10 Jul 2020 12:54:38 -0400
Labels:       app=my-app
              pod-template-hash=786dc95d8f
Annotations:  kubernetes.io/psp: eks.privileged
Status:       Pending …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services kubernetes amazon-eks

3
推荐指数
2
解决办法
1101
查看次数

使用 kubectl 检查 pod 的限制和请求

任何人都可以帮助我使用命令来查看 Pod 或 Pod 中容器的限制和请求吗?我尝试过 Kubectl describe pod, kubectl get pod --output=yaml, kubectl describe node- 显示当前限制,但不显示配置的限制。我想查看 yaml 中配置的限制和请求。

谢谢。

kubernetes kubectl kubernetes-pod

3
推荐指数
1
解决办法
6892
查看次数

使用 Image Transformer 仅更改 Kustomize Overlay 中的图像名称/注册表

对于 Kubernetes 部署,给定一个 Kustomize Base,例如:

\n
apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\n...\nimages:\n  - name: developmentregistry.com/myimage:v1.0\n
Run Code Online (Sandbox Code Playgroud)\n

有没有办法只更改图像注册表并保留带有覆盖的 og 标签,而无需使用图像转换器重新声明图像

\n

例如,如果我使用如下叠加:

\n
apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\n...\nimages:\n  - newName: productionregistry.com/myimage\n
Run Code Online (Sandbox Code Playgroud)\n

该图像仅部署为productionregistry.com/myimage\xe2\x80\x94 这不是我想要的。
\n我怎样才能让我的覆盖部署产生效果productionregistry.com/myimage:v1.0?我找不到任何其他帖子或与此相关的任何问题。
\n我必须使用补丁而不是图像转换器吗?

\n

kubernetes kustomize

3
推荐指数
1
解决办法
2990
查看次数

连接 configMap 和 Secret 中的值

我有一个 configMap 文件:

apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    owner: testdb
  name: testdb-configmap 
data:
  host: postgres
  port: "5432" 

Run Code Online (Sandbox Code Playgroud)

和一个秘密文件:

aapiVersion: v1
kind: Secret
type: Opaque
metadata:
  labels:
    owner: testdb
  name: testdb-secret
  namespace: test
data:
  user: dGVzdA==
  pwd: dGVzdA==
Run Code Online (Sandbox Code Playgroud)

我想构建一个环境变量,CONNECTION_STRING如下所示:

env:
 - name: CONNECTION_STRING
   value: "Host=<host-from-configmap>;Username=<user-from-secret>;Password=<password-from-secret>;Port=<port-from-configmap>;Pooling=False;"
Run Code Online (Sandbox Code Playgroud)

我想知道这是否可能,如果可以,那么如何?我也考虑过使用.tpl(命名模板),但找不到方法。


笔记

由于我无权访问图像,因此CONNECTION_STRING我必须以这种方式构建它。这些配置映射和秘密文件也将保持这样。


kubernetes kubernetes-helm kubernetes-secrets configmap

3
推荐指数
1
解决办法
2883
查看次数

GenServer :Continue 调用是同步的吗?

实现GenServer handle_call/3可以返回:continue以调用附加函数。是否可以保证此函数相对于其他消息的运行时间?

例如,考虑这个仅保留运行计数器的模块:

defmodule Tmp do
  use GenServer

  def start_link(opts), do: GenServer.start_link(__MODULE__, 0, opts)
  def incr(tmp), do: GenServer.call(tmp, :incr)

  @impl true
  def init(state), do: {:ok, state}

  @impl true
  def handle_call(:incr, _from, n) do
    {:reply, n, n, {:continue, :incr}}
  end

  @impl true
  def handle_continue(:incr, n) do
    {:noreply, n+1}
  end
end
Run Code Online (Sandbox Code Playgroud)

当您调用 时Tmp.incr/1,该handle_call/3方法返回计数器的当前值,但随后也返回:continue。这会导致GenServer基础设施调用handle_continue/2

如果我Tmp.incr/1连续调用两次,我能保证得到递增的值吗?或者是否有可能在被调用handle_call/3之前被调用两次?handle_continue/2

iex> {:ok, tmp} = Tmp.start_link([])
iex> Tmp.incr(tmp) …
Run Code Online (Sandbox Code Playgroud)

elixir gen-server

3
推荐指数
1
解决办法
308
查看次数