问题描述
我做了一个Nginx pod的简单部署,然后编辑了部署,像official docs一样通过TCP添加了readinessProbe和livenessProbe。
保存后,部署便创建了一个新的copysetSet并启动了新的pod,但是探测从未实现。
这是describe命令的部署yaml输出:
request,err := codec.BinaryFromNative(nil,(datum).ToStringMap())
if err != nil {
logs.Error("logPdt :: Log Error while converting data to binary","error",err)
return err
}
intf,bt,err1 := codec.NativeFromBinary(request)
fmt.Println("Err1:",err1)
fmt.Println(string(bt))
fmt.Println(intf)
这是吊舱的事件:
apiVersion: apps/v1
kind: Deployment
Metadata:
annotations:
deployment.kubernetes.io/revision: "2"
creationTimestamp: "2020-09-21T18:51:13Z"
generation: 2
labels:
app: dep1
name: dep1
namespace: default
resourceVersion: "1683893"
selfLink: /apis/apps/v1/namespaces/default/deployments/dep1
uid: b23bceff-aca5-4c89-84c0-5882cf2df217
spec:
progressDeadlineseconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: dep1
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
Metadata:
creationTimestamp: null
labels:
app: dep1
spec:
containers:
- image: Nginx
imagePullPolicy: Always
livenessProbe:
failureThreshold: 3
initialDelaySeconds: 15
periodSeconds: 20
successthreshold: 1
tcpsocket:
port: 8080
timeoutSeconds: 1
name: Nginx
ports:
- containerPort: 8080
protocol: TCP
readinessProbe:
failureThreshold: 3
initialDelaySeconds: 5
periodSeconds: 10
successthreshold: 1
tcpsocket:
port: 8080
timeoutSeconds: 1
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
status:
availableReplicas: 1
conditions:
- lastTransitionTime: "2020-09-21T18:51:16Z"
lastUpdateTime: "2020-09-21T18:51:16Z"
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
- lastTransitionTime: "2020-09-21T18:51:13Z"
lastUpdateTime: "2020-09-21T19:16:07Z"
message: replicaset "dep1-5d66c67794" is progressing.
reason: replicasetUpdated
status: "True"
type: Progressing
observedGeneration: 2
readyReplicas: 1
replicas: 2
unavailableReplicas: 1
updatedReplicas: 1
为什么用以下方法打开端口后连接会被拒绝?
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
normal Scheduled <unkNown> default-scheduler Successfully assigned default/dep1-5d66c67794-qd48q to docker-desktop
normal Pulling 13m (x2 over 14m) kubelet,docker-desktop Pulling image "Nginx"
normal Killing 13m kubelet,docker-desktop Container Nginx Failed liveness probe,will be restarted
normal Pulled 13m (x2 over 14m) kubelet,docker-desktop Successfully pulled image "Nginx"
normal Created 13m (x2 over 14m) kubelet,docker-desktop Created container Nginx
normal Started 13m (x2 over 14m) kubelet,docker-desktop Started container Nginx
Warning Unhealthy 12m (x5 over 14m) kubelet,docker-desktop Liveness probe Failed: dial tcp 10.1.0.174:8080: connect: connection refused
Warning Unhealthy 9m48s (x30 over 14m) kubelet,docker-desktop Readiness probe Failed: dial tcp 10.1.0.174:8080: connect: connection refused
Warning BackOff 4m42s (x11 over 8m36s) kubelet,docker-desktop Back-off restarting Failed container
解决方法
默认情况下,nginx Web服务器公开端口80,不仅您的运行状况检查不起作用,而且您的应用程序永远不会在端口8080上打开。此tutorial中使用的docker映像为k8s.gcr.io/goproxy:0.1
,您正在使用nginx
。尝试此配置,或将映像部署更改为k8s.gcr.io/goproxy:0.1
:
spec:
containers:
- image: nginx
imagePullPolicy: Always
livenessProbe:
failureThreshold: 3
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
tcpSocket:
port: 80
timeoutSeconds: 1
name: nginx
ports:
- containerPort: 80
protocol: TCP
readinessProbe:
failureThreshold: 3
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
tcpSocket:
port: 80
timeoutSeconds: 1