我使用以下脚本将新映像部署到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。
Heres是与最后一次更改有关的一些调试信息(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
如何诊断此问题?我想我需要确定当前在群集/ pod上运行的确切docker镜像。
答案 0 :(得分:0)
kubectl get pods
请注意广告连播名称。
然后执行进入pod:
kubectl exec -c wordpress -it wordpress-915256023-g68cr -- bash
然后我能够确定容器正在侦听端口9000(通过运行netstat -l
)。这让我意识到这不是HTTP服务器,而是PHP-FPM(所以其他形式的服务器)。