如何创建一个Kubernetes控制器(附代码)

81 阅读1分钟

自定义Kubernetes控制器

这是一个非常简单的例子,说明如何创建一个Kubernetes控制器,在创建部署时自动创建一个服务和入口控制器。

使用方法

你必须应用deployment.yml,它将在kube-system 命名空间中创建一个部署调用custom-controller ,每当你创建一个部署时,将创建一个服务和一个ingress。确保你有一个ingress控制器在运行。ingress主机将是servicenamedomain.io ,请随意将其改为你自己的域。ingress和服务资源将具有与部署相同的名称。

一旦你删除了部署,服务和ingress将被自动删除:

% kubectl create deployment nginx --image nginx
deployment.apps/nginx created

$ kubectl logs deployment/custom-controller -n kube-system 
Adding deployment
Creating service named nginx

$ kubectl get svc
NAME                            TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                      AGE
nginx                           ClusterIP      10.3.247.100   <none>          80/TCP                       48s

$ kubectl get ingress
NAME    CLASS    HOSTS             ADDRESS         PORTS   AGE
nginx   <none>   nginx.domain.io   34.79.195.242   80      77s

$ kubectl delete deployment nginx
deployment.apps "nginx" deleted

$ kubectl logs deployment/custom-controller -n kube-system 
Deleting deployment named, nginx
Deleting service nginx
Deleting ingress nginx

有待改进

  • 自动收集部署的端口/名称,现在它只听80端口。
  • 如果它被删除,自动重新创建svc和ingress资源,该逻辑仍未实现。
  • 参照注解或所有者来删除资源。