Sub*_*Das 3 deployment kubernetes dockerfile
一旦我添加,
spec:
containers:
- args:
- /bin/sh
- '-c'
- touch /tmp/healthy; touch /tmp/liveness
env:
Run Code Online (Sandbox Code Playgroud)
对于部署文件,应用程序不会在描述日志中没有任何错误的情况下出现。部署成功,但没有输出。这两个文件都在容器中创建。我可以在 kubernetes 部署中运行 docker build 吗?
下面是完整的部署yaml。
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: web
name: web
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: web
version: prod
template:
metadata:
annotations:
prometheus.io/scrape: 'true'
labels:
app: web
version: prod
spec:
containers:
- args:
- /bin/sh
- '-c'
- >-
touch /tmp/healthy; touch /tmp/liveness; while true; do echo .;
sleep 1; done
env:
- name: SUCCESS_RATE
valueFrom:
configMapKeyRef:
key: SUCCESS_RATE
name: web-config-prod
image: busybox
livenessProbe:
exec:
command:
- cat
- /tmp/liveness
initialDelaySeconds: 5
name: web
ports:
- containerPort: 8080
- containerPort: 8000
Run Code Online (Sandbox Code Playgroud)
你的问题是在container is not found完成任务之后。您告诉要对您的容器执行 shell 脚本。这样做之后,容器就完成了。这就是为什么您看不到文件是否已创建的原因。它也没有放任何日志。因此,您需要在创建文件后使容器保持活动状态。你可以通过放置一个无限的 while 循环来做到这一点。它来了:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello
labels:
app: hi
spec:
replicas: 1
selector:
matchLabels:
app: hi
template:
metadata:
labels:
app: hi
spec:
containers:
- name: hi
image: busybox
args:
- /bin/sh
- "-c"
- "touch /tmp/healthy; touch /tmp/liveness; while true; do echo .; sleep 1; done"
ports:
- containerPort: 80
Run Code Online (Sandbox Code Playgroud)
将其保存到 hello-deployment.yaml 并运行,
$ kubectl create -f hello-deployment.yaml
$ pod_name=$(kubectl get pods -l app=hi -o jsonpath='{.items[0].metadata.name}')
$ kubectl logs -f $pod_name
$ kubectl exec -it -f $pod_name -- ls /tmp
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13680 次 |
| 最近记录: |