当我在 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
例如,我可以跟随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) 按照此处的文档,我可以像这样设置容器启动的阈值:
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 ×3