到目前为止,我有一组使用docker-compose up -d
非常基本的 docker 运行
我想运行我的项目的多个实例,并且我已经阅读了这个 Run multiple docker compose
现在,当运行docker-compose up -p PRNAME -d
compose 时,不会将项目名称预先添加到容器中,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) 我已经在配置目录中定义了 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)
我的要求是只有文件的内容应该是大写和. 应替换为 _。不应转换文件名。文件名应保持原样。
这能实现吗?
我已经有了自己的微服务,到目前为止,我已经通过 https 将服务以及 helm 图表公开type: NodePort
到nginx-ingress
我自己的公共 IP;我注意到在我的微服务 helm 图表上运行 linter 时,它不安全(使用 NodePort),我应该使用 ClusterIP - 有人可以解释为什么吗?
我正在尝试了解 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) 这是我的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) 我在 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) 任何人都可以帮助我使用命令来查看 Pod 或 Pod 中容器的限制和请求吗?我尝试过
Kubectl describe pod
,
kubectl get pod --output=yaml
,
kubectl describe node
- 显示当前限制,但不显示配置的限制。我想查看 yaml 中配置的限制和请求。
谢谢。
对于 Kubernetes 部署,给定一个 Kustomize Base,例如:
\napiVersion: 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例如,如果我使用如下叠加:
\napiVersion: 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我必须使用补丁而不是图像转换器吗?
我有一个 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
我必须以这种方式构建它。这些配置映射和秘密文件也将保持这样。
实现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) kubernetes ×7
docker ×2
amazon-eks ×1
configmap ×1
elixir ×1
gen-server ×1
go-templates ×1
kubectl ×1
kustomize ×1