如何在kubernetes上部署映像后诊断服务

时间:2017-08-07 15:23:44

标签: kubernetes google-cloud-platform kubectl

我使用以下脚本将新映像部署到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镜像。

1 个答案:

答案 0 :(得分:0)

kubectl get pods

请注意广告连播名称。

然后执行进入pod: kubectl exec -c wordpress -it wordpress-915256023-g68cr -- bash

然后我能够确定容器正在侦听端口9000(通过运行netstat -l)。这让我意识到这不是HTTP服务器,而是PHP-FPM(所以其他形式的服务器)。