我有一個正在運行的容器顯示正在運行,但還沒有準備好,我不能爲我的數字生活出了什麼問題。我在谷歌容器引擎上運行kubectl服務器1.64和kubectl客戶端1.62kubernetes服務卡在未準備好
我的健康檢查路由表明正在請求健康檢查,雖然直接在pod ip上而不是服務ip。我這樣說是因爲當在不同的吊艙內時,我無法對沒有準備好的服務進行curl
。
當我看到我下面包含的yaml文件時,沒有什麼似乎是錯誤的。我還包括了一些我已經運行的命令和它們的輸出。
在容器內,我可以確認存在的祕密,因爲我可以echo $MYSQL_USER
,所以我知道他們正在設置。
最後,我的docker文件非常簡單,並在端口7000上運行服務器,因此不能確定這可能。我究竟做錯了什麼?我怎麼去調試呢?
從不同的莢的wget -qO- blahblah
wget: can't connect to remote host (10.55.252.109): Operation timed out
NSLOOKUP blahblah:
nslookup: can't resolve '(null)': Name does not resolve
Name: blahblah-service
Address 1: 10.55.252.109 blahblah-service.staging.svc.cluster.local
從GKE VM內
捲曲10.55.252.109
Failed to connect to 10.55.252.109 port 80: Connection refused
從我的終端:
kubectl得到SVC blahblah
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
blahblah-service 10.55.252.109 <nodes> 80:31003/TCP 41m
kubectl獲得端點blahblah服務
NAME ENDPOINTS AGE
blahblah-service 29m
kubectl得到莢-l名= blahblah
NAME READY STATUS RESTARTS AGE
blahblah-3521139244-6tkj5 0/1 Running 0 29m
kubectl描述SVC blahblah服務
Name: blahblah-service
Namespace: staging
Labels: <none>
Annotations: <none>
Selector: name=blahblah
Type: NodePort
IP: 10.55.252.109
Port: http 80/TCP
NodePort: http 31003/TCP
Endpoints:
Session Affinity: None
Events: <none>
服務&部署yamls
kind: Service
apiVersion: v1
metadata:
name: blahblah-service
spec:
selector:
name: blahblah
type: NodePort
ports:
- port: 80
targetPort: "http"
name: http
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: blahblah-deployment
spec:
replicas: 1
minReadySeconds: 30
template:
metadata:
labels:
name: blahblah
spec:
containers:
- name: blahblah
image: eu.gcr.io/company_name/blahblah-service
ports:
- containerPort: 7000
name: http
readinessProbe:
httpGet:
path: /_internal_/ok
port: http
env:
- name: NODE_ENV
valueFrom:
configMapKeyRef:
name: env-variables
key: ENV_NAME
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: blahblah-mysql-secrets
key: MYSQL_USER
- name: MYSQL_PASS
valueFrom:
secretKeyRef:
name: blahblah-mysql-secrets
key: MYSQL_PASS
dockerfile
FROM node:7.5.0-alpine
RUN apk update && apk upgrade \
&& apk add --no-cache --update-cache git ca-certificates openssl\
&& update-ca-certificates
RUN cd /tmp && wget https://yarnpkg.com/latest.tar.gz && tar zxf latest.tar.gz
COPY package.json /workspace/package.json
WORKDIR /workspace
COPY yarn.lock /workspace/yarn.lock
RUN /tmp/dist/bin/yarn
COPY . /workspace
ARG NODE_ENV=production
ENV NODE_ENV ${NODE_ENV}
ENV PORT 7000
EXPOSE $PORT
ENTRYPOINT exec node_modules/pm2/bin/pm2-docker start pm2.json --only blahblah-service-$NODE_ENV
編輯
我還注意到,當其他服務在同一時間運行,這隻能說明沒有準備好。我沒有看到兩個服務之間有任何相似之處,所以我不確定兩者的運行方式會有什麼衝突?這兩個服務使用一個配置映射,並有他們自己的祕密,但我不明白爲什麼會導致衝突。
您可以發佈kubectl描述SVC blahblah服務 –
@BaroudiSafwen添加 –
你介意把'kubectl得到events'呢?我也看到這個服務被命名爲'blahblah-service',但是在許多地方,你只是將它稱爲'blahblah'?你檢查過那個東西嗎? – surajd