标签: kubernetes-container

为什么在 Kuberntes 部署/容器定义中需要端口/容器端口?

当我在 kubernetes 中定义例如部署时,有一个包含容器列表的部分,每个容器都包含一组端口,例如:

apiVersion: apps/v1
kind: Deployment
spec:
  template:
    spec:
      containers:
      - name: my-nginx
        image: nginx
        ports:
        - containerPort: 80
Run Code Online (Sandbox Code Playgroud)

现在这里的文档明确表示它不会影响连接:

要从容器公开的端口列表。在此处公开端口可为系统提供有关容器使用的网络连接的附加信息,但主要是信息性的。在此处不指定端口不会阻止该端口被公开。任何侦听容器内默认“0.0.0.0”地址的端口都可以从网络访问。无法更新。

现在看来它并没有真正影响任何东西,只是信息性的,但这究竟意味着什么,它在哪里使用?

我发现它的一个用途是,如果端口定义了一个名称,则可以通过该名称从服务中引用它。

是它还是这个规范还有其他用途?

kubernetes kubernetes-deployment kubernetes-container kubernetes-service kubernetes-networking

8
推荐指数
1
解决办法
3207
查看次数

我们可以在Kubernetes的Pod中使用相同种类的多个容器吗?

例如,我可以跟随yaml生成具有多个容器的pod:

apiVersion: v1
kind: Pod
metadata:
name: lampapp
labels:
    app: app
spec:
  containers:
  - name: lampdb
    image: mysql_test
  - name: app
    image: php-app-db-url-env
    env:
     - name: DB_URL
      value: 127.0.0.1:3306
  - name: app2
    image: php-app-db-url-env
    env:
    - name: DB_URL
      value: 127.0.0.1:3306
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-pod kubernetes-container

6
推荐指数
1
解决办法
2141
查看次数

在 v1.12 中提高 k8s 容器的启动阈值

按照此处的文档,我可以像这样设置容器启动的阈值:

startupProbe:
  httpGet:
    path: /healthz
    port: liveness-port
  failureThreshold: 30
  periodSeconds: 10
Run Code Online (Sandbox Code Playgroud)

不幸的是,它似乎startupProbe.failureThreshold与我们当前的 k8s 版本(1.12.1)不兼容:

unknown field "startupProbe" in io.k8s.api.core.v1.Container; if you choose to ignore these errors, turn validation off with --validate=false
Run Code Online (Sandbox Code Playgroud)

有解决方法吗?我想给一个容器大约 40 分钟以上的启动时间。

kubernetes kubernetes-pod kubernetes-container

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