kube-apiserver健康检查接口可跳过https证书认证
k8s v1.19.0
检查配置
livenessProbe、readinessProbe和startupProbe配置,这3个都是走https。
kubelet加跳过证书认证
kubelet在执行https探测时跳过证书认证,kube-apiserver正常https业务接口无法跳过证书认证。
pkg/probe/http/http.go
New函数
pkg/kubelet/prober/prober.go
newProber函数
kube-apiserver处理/livez流程分析
staging/src/k8s.io/apiserver/pkg/server/genericapiserver.go
NonBlockingRun方法
启动https端口
staging/src/k8s.io/apiserver/pkg/server/secure_serving.go
Serve方法
启动http.Server
staging/src/k8s.io/apiserver/pkg/server/secure_serving.go
tlsConfig方法
https支持多种认证方式,不只是证书认证。
staging/src/k8s.io/apiserver/pkg/authentication/request/union/union.go
AuthenticateRequest方法
认证请求
/livez走匿名认证,当kube-apiserver取消匿名认证即--anonymous-auth=false后,livez接口认证失败。
plugin/pkg/auth/authorizer/rbac/bootstrappolicy/policy.go
ClusterRoles函数
rbac为/livez增加权限,保证鉴权通过。
staging/src/k8s.io/apiserver/pkg/server/healthz/healthz.go
handleRootHealthz函数
kube-apiserver正常时返回ok。