k8s 自定义api注册,controller

自定义api通过aggregator注册进入k8s api系统,内部通过一个proxy转到对应的自定义api进程(放在pod中), 

自定义API通过main函数,调用生成的zz_generated.api.register.go中的注册函数,此函数有一个全局变量ApiVersion,apiversion中将我们定义的type(包括其deepcopy函数),还有版本转换函数conversion(zz_generated.conversion.go),默认值处理函数(zz_generated.defaults.go)注册进apiversion中,有些情况下也会注册deepcopy函数。(客户端的scheme也会调用并注册这些个转换函数)

 

client中适用于服务client-go或者controller,client部分只有getter,即获取资源的interface。client中scheme会添加conversion和default函数,用于进行client的创建。客户端的crud会用scheme.ParameterCodec进行编码

informer则用资源的数据结构注册informer,只有资源informer,有informer和lister接口。

lister拥有获取资源的接口。

 

k8s自定义controller的健康检查可以通过在controller的Pod中运行一个HTTP服务,然后在Pod的定义中添加livenessProbe和readinessProbe来实现。 下面是一个简单的示例,假设我们要实现一个名为"my-controller"的controller,并且它的Pod中运行一个HTTP服务,监听端口为8080。 ```yaml apiVersion: v1 kind: Pod metadata: name: my-controller spec: containers: - name: my-controller image: my-controller-image ports: - name: http containerPort: 8080 livenessProbe: # livenessProbe用于检查Pod是否健康 httpGet: path: /healthz port: http initialDelaySeconds: 10 # 初始等待10秒再检查 periodSeconds: 5 # 每5秒检查一次 readinessProbe: # readinessProbe用于检查Pod是否准备好接收流量 httpGet: path: /ready port: http initialDelaySeconds: 5 # 初始等待5秒再检查 periodSeconds: 3 # 每3秒检查一次 ``` 上述示例中,我们在Pod的定义中添加了livenessProbe和readinessProbe。它们都使用了httpGet作为检查方式,并且分别检查了/healthz和/ready这两个路径。这两个路径需要在my-controller的HTTP服务中实现,例如: ```go http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) }) http.HandleFunc("/ready", func(w http.ResponseWriter, r *http.Request) { if isReady { w.WriteHeader(http.StatusOK) } else { w.WriteHeader(http.StatusServiceUnavailable) } }) ``` 上述示例中,/healthz路径返回200 OK,表示Pod健康;/ready路径则根据isReady变量的值返回200 OK或503 Service Unavailable,表示Pod是否准备好接收流量。 当Pod的livenessProbe或readinessProbe检测到失败时,k8s会自动重启Pod或停止将流量转发到该Pod。这样就可以保证controller的健康和稳定运行了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值