如何在 kubernetes 上部署镜像后诊断服务
How to diagnose service after image deployment on kubernetes
我正在使用以下脚本将新映像部署到 kubernetes 集群:
#!/usr/bin/env bash
set -euo pipefail
set -x
rootPath=".."
gcpProjectId="example123"
gcpRepoHostname="eu.gcr.io"
imageName="wordpress"
containerName="wordpress"
tagNameSuffix=$(date +%s)
tagNameSuffix="deploy-${tagNameSuffix}"
tagName="$gcpRepoHostname"/"$gcpProjectId"/"$imageName":$tagNameSuffix
echo "$GCLOUD_API_KEYFILE" | base64 --decode --ignore-garbage > ./gcloud-api-key.json
gcloud auth activate-service-account --key-file gcloud-api-key.json
gcloud config set project "$gcpProjectId"
sudo docker build "$rootPath"/wordpress/ -t "$tagName"
sudo gcloud docker -- push "$tagName"
kubectl set image deployment/wordpress "$containerName"="$tagName"
奇怪的是,当我将 wordpress/Dockerfile
修改为:
时,它起作用了
FROM rlesouef/alpine-nginx
如果我把它改成:
FROM wordpress:php7.1-fpm-alpine
COPY custom-entrypoint.sh /usr/local/bin/
我得到一个无响应的服务 - 无法连接到外部 ip。
这里是一些与上次更改相关的调试信息(wordpress 图片):
kubectl get pods
显示以下内容:
NAME READY STATUS RESTARTS AGE
wordpress-702001878-xb0b1 2/2 Running 0 8m
如果我通过 kubectl logs wordpress-702001878-xb0b1 wordpress
检查日志:
[07-Aug-2017 15:13:14] NOTICE: fpm is running, pid 1
[07-Aug-2017 15:13:14] NOTICE: ready to handle connections
如何诊断此问题?我想我需要确定集群上当前 运行 的确切 docker 图像 / pods.
kubectl get pods
记下 pod 名称。
然后执行到 pod 中:
kubectl exec -c wordpress -it wordpress-915256023-g68cr -- bash
然后我能够确定容器正在侦听端口 9000(通过 运行 netstat -l
)。这让我意识到这不是 HTTP 服务器,而是 PHP-FPM(所以是其他形式的服务器)。
我正在使用以下脚本将新映像部署到 kubernetes 集群:
#!/usr/bin/env bash
set -euo pipefail
set -x
rootPath=".."
gcpProjectId="example123"
gcpRepoHostname="eu.gcr.io"
imageName="wordpress"
containerName="wordpress"
tagNameSuffix=$(date +%s)
tagNameSuffix="deploy-${tagNameSuffix}"
tagName="$gcpRepoHostname"/"$gcpProjectId"/"$imageName":$tagNameSuffix
echo "$GCLOUD_API_KEYFILE" | base64 --decode --ignore-garbage > ./gcloud-api-key.json
gcloud auth activate-service-account --key-file gcloud-api-key.json
gcloud config set project "$gcpProjectId"
sudo docker build "$rootPath"/wordpress/ -t "$tagName"
sudo gcloud docker -- push "$tagName"
kubectl set image deployment/wordpress "$containerName"="$tagName"
奇怪的是,当我将 wordpress/Dockerfile
修改为:
FROM rlesouef/alpine-nginx
如果我把它改成:
FROM wordpress:php7.1-fpm-alpine
COPY custom-entrypoint.sh /usr/local/bin/
我得到一个无响应的服务 - 无法连接到外部 ip。
这里是一些与上次更改相关的调试信息(wordpress 图片):
kubectl get pods
显示以下内容:
NAME READY STATUS RESTARTS AGE
wordpress-702001878-xb0b1 2/2 Running 0 8m
如果我通过 kubectl logs wordpress-702001878-xb0b1 wordpress
检查日志:
[07-Aug-2017 15:13:14] NOTICE: fpm is running, pid 1
[07-Aug-2017 15:13:14] NOTICE: ready to handle connections
如何诊断此问题?我想我需要确定集群上当前 运行 的确切 docker 图像 / pods.
kubectl get pods
记下 pod 名称。
然后执行到 pod 中:
kubectl exec -c wordpress -it wordpress-915256023-g68cr -- bash
然后我能够确定容器正在侦听端口 9000(通过 运行 netstat -l
)。这让我意识到这不是 HTTP 服务器,而是 PHP-FPM(所以是其他形式的服务器)。