我使用TCP套接字连接进行活动性/就绪性探测,因为应用程序就是这样设置的。这是一个TCP JSON返回的东西,而不是HTTP协议。
更新:我用NGINX在pod中添加了第二个容器,并将活性/就绪性探针移到了那里:没有区别。
以下是所有部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: cleardev-deployment
labels:
app: clearspring
spec:
replicas: 2
selector:
matchLabels:
app: clearspring
template:
metadata:
labels:
app: clearspring
spec:
containers:
- name: clearspring
image: gcr.io/clearspring-dev/cleardev2:49477e1
ports:
- containerPort: 8080
readinessProbe:
tcpSocket:
port: 8080
successThreshold: 1
failureThreshold: 5
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
tcpSocket:
port: 8080
successThreshold: 1
failureThreshold: 5
initialDelaySeconds: 15
periodSeconds: 20
以及服务:
apiVersion: v1
kind: Service
metadata:
name: clearspring-service443
spec:
type: NodePort
selector:
app: clearspring
ports:
- name: https
protocol: TCP
port: 443
targetPort: 8080
证书:
apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
name: clearspring-cert
spec:
domains:
- api.clearspringinsurance.com
入口:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: clearspring-ingress
annotations:
# If the class annotation is not specified it defaults to "gce".
kubernetes.io/ingress.global-static-ip-name: "kubething"
networking.gke.io/managed-certificates: clearspring-cert
kubernetes.io/ingress.class: "gce"
spec:
defaultBackend:
service:
name: clearspring-service443
port:
name: https
我遇到的一个解决方法是向pod添加第二个容器,如nginx,它将毫无问题地返回http 200响应。
还有其他想法吗?非常感谢您的任何建议!
有几个问题,但最基本的是活性/准备性探测。
据我所知,它们不支持TCP连接,尽管留档说它们支持。
对我的项目来说,好消息是它基于Flask,毕竟是http。所以我只需要在Flask应用程序中添加一个路由“/healthz”(然后在我得到405个错误后修复它,因为我把它作为POST,而不是第一次得到)。
另一件非常奇怪的事情是从pod中获取日志的语法。。。如果你只是给
kubectl logs -p podname -n seven
您会收到一个错误“上一个pod不存在”。
如果您添加此标志:
kubectl logs -p podname -n seven --previous=false
然后显示了我要找的日志。
(设计这个的库伯内特斯怪胎:你欠我一杯茶!)
其他细微差别:
>
kubernetes仆从的防火墙设置阻塞太多,所以我不得不将其更改为“允许所有”
当集群被删除时,静态IP不会被标记回保留,但会继续使用,因此如果您只是使用相同的静态IP将集群恢复,则入口将失败。。。
我想就是这样。。。嘘!
我可以找到文件,其中提到我如何添加我的自定义探针和改变探针参数,如初始延迟等,但不能找到默认的探针方法使用的K8S。
对于liveness,我认为它可能会开始循环使用POD/容器,尽管(在DB关闭的情况下)它可能无法修复任何东西。 准备就绪后,我想如果数据库关闭,可能会导致可用应用程序池为0。如果数据库关闭,应用程序本身很可能不会很有用,但我想部分可能仍然可以工作。 对于这种类型的事情,有推荐的最佳实践吗?
问题内容: 我遵循了负载均衡器教程:https : //cloud.google.com/container- engine/docs/tutorials/http-balancer 在使用Nginx映像时,当尝试使用自己的应用程序映像时,它工作正常后端切换为不正常。 我的应用程序重定向到/(返回302),但在pod定义中添加了一个: 我的入口看起来像: 服务配置为: 后端健康状况如下: 入口的规
我遵循了负载均衡器教程:https://cloud.google.com/container-engine/docs/tutorials/http-balancer当我使用Nginx映像时工作正常,当我尝试使用我自己的应用程序映像时,尽管后端切换到不健康。 我的应用程序重定向到/(返回302),但我在pod定义中添加了一个livenessProbe: 我的入口看起来像: 服务配置为: 入口中的后端
给出一个Python应用程序,它在无限循环中轮询Kafka主题,并在处理接收到的Kafka消息后将结果上传到s3 bucket。 null 并且活性探测只检查轮询循环是否尚未退出。 严格来说,在准备调查中检查这样的事情是不好的做法吗?
服务: 入口: