kopf
metrics-server
kopf | metrics-server | |
---|---|---|
6 | 40 | |
1,958 | 5,426 | |
- | 1.0% | |
7.6 | 8.6 | |
28 days ago | 9 days ago | |
Python | Go | |
MIT License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
kopf
- A Kubernetes Operator in Rust
- I wrote a kubernetes operator for “locust”, should I open source it
-
Automate All the Boring Kubernetes Operations with Python
If you're looking for more examples beyond what was shown and referenced above, I recommend exploring other popular tools that make use Python Kubernetes client, such kopf - the library for creating Kubernetes operators. I also find it very useful to take a look at tests of the library itself, as it showcases its intended usage such this client test suite.
-
is it possible to have components of a specific namespace run on specific nodes ?
Depending on how you want to configure your selecting logic, it can be solved by mutating admission webhooks for the pods. For example, in Kopf, the simplest approach would be:
-
Kopf 1.31 now supports admission webhooks. Feedback is welcome!
Hello. Kopf (a framework to write Kubernetes operators in Python) 1.31 is released and has finally got admission webhooks — https://github.com/nolar/kopf/releases/tag/1.31.0. I would appreciate some feedback from experienced operator developers on how easy or hard it is to write webhooks now, and what is missing and makes it inconvenient. The docs: https://kopf.readthedocs.io/en/stable/admission/ For a brief preview, it looks like this:
-
lightkube 0.6.0 - python kubernetes client
Correct, using generic resources with Client.watch should work. In general to create more complex operators I would recommend to check out kopf.
metrics-server
-
Upgrading Hundreds of Kubernetes Clusters
The last one is mostly an observability stack with Prometheus, Metric server, and Prometheus adapter to have excellent insights into what is happening on the cluster. You can reuse the same stack for autoscaling by repurposing all the data collected for monitoring.
-
Deploy Secure Spring Boot Microservices on Amazon EKS Using Terraform and Kubernetes
and the Metrics Server.
-
☸️ Managed Kubernetes : Our dev is on AWS, our prod is on OVH
Metrics-server is installed by default on OVH, and has to be installed manually on AWS/EKS cluster.
-
Kubernetes HPA on AKS is failing with error 'missing request for cpu'
I have also installed metrics-server (though not sure whether that was required or not) using the following statement:kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
-
Factors affecting performance of job running in a pod
For #2: There are MANY solutions but the simplest and easiest is https://github.com/kubernetes-sigs/metrics-server and then you can use kubectl top to view pods resource usage. If you want fancy graphs, long retention, alerting, analysis, etc. of resource metrics.. then you need to use something like new relic, data dog, or something open source but much more complex like prometheus/thanos/grafana.. or a managed SaaS version of those open source tools... also some k8s platforms like AWS, Spot.io, GKE, OpenShift, may have this stuff built in or turnkey
-
Autoscaling Ingress controllers in Kubernetes
It's an autoscaler with a metrics server (so I don't need to install 2 different tools).
-
Checking the Capability of ChatGPT for DevOps Automation Solution Design
Sure, here's an example of how to configure the Kubernetes Metrics Server along with the Horizontal Pod Autoscaler (HPA) and Vertical Pod Autoscaler (VPA) configurations we provided earlier. The Metrics Server is a Kubernetes add-on that provides resource utilization metrics for pods and nodes, which are used by the HPA and VPA to determine when and how to scale an application. First, you'll need to install the Metrics Server into your Kubernetes cluster. You can do this by running the following command: kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml Once the Metrics Server is installed, you can configure your HPA and VPA to use it for metrics by adding the following annotation to your deployment: apiVersion: apps/v1 kind: Deployment metadata: name: my-app annotations: autoscaling.alpha.kubernetes.io/metrics-provider: "metrics-server" With this annotation in place, the HPA and VPA will use the Metrics Server to obtain CPU and memory utilization metrics for your pods and nodes. Here's an updated example of the HPA configuration we provided earlier, with the addition of the Metrics Server configuration: apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: my-app-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: my-app minReplicas: 1 maxReplicas: 10 metrics: - type: Resource resource: name: cpu targetAverageUtilization: 50 - type: Resource resource: name: memory targetAverageUtilization: 80 In this example, we've added a second metric to the HPA configuration that targets memory utilization at 80%. Here's an updated example of the VPA configuration we provided earlier, with the addition of the Metrics Server configuration: apiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: name: my-app-vpa spec: targetRef: apiVersion: apps/v1 kind: Deployment name: my-app updatePolicy: updateMode: "Off" resourcePolicy: containerPolicies: - containerName: "*" minAllowed: cpu: 50m memory: 256Mi maxAllowed: cpu: 500m memory: 1Gi metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50 - type: Resource resource: name: memory target: type: Utilization averageUtilization: 80 In this example, we've added two metrics to the VPA configuration that target CPU and memory utilization, with target average utilization of 50% and 80% respectively. I hope this helps you configure the Metrics Server, HPA, and VPA for your application in Kubernetes!
-
plz help
Id go for k3s then install metrics-server, then you can deploy some hpa’s
-
Autoscaling Nodes in Kubernetes
# Create EKS Cluster with version 1.23 eksctl create cluster -f eks-cluster.yaml # Output like below shows cluster has been successfully created 2022-12-30 16:26:46 [ℹ] kubectl command should work with "/home/ec2-user/.kube/config", try 'kubectl get nodes' 2022-12-30 16:26:46 [✔] EKS cluster "ca-demo" in "us-west-2" region is ready # Deploy the Metric server kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml # Output of the above command looks something like below - serviceaccount/metrics-server created clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created clusterrole.rbac.authorization.k8s.io/system:metrics-server created rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created service/metrics-server created deployment.apps/metrics-server created apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
-
Korifi : API Cloud Foundry V3 expérimentale dans Kubernetes …
ubuntu@korifi:~$ kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.6.2/components.yaml serviceaccount/metrics-server created clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created clusterrole.rbac.authorization.k8s.io/system:metrics-server created rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created service/metrics-server created deployment.apps/metrics-server created apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created ubuntu@korifi:~$ kubectl get po,svc -A NAMESPACE NAME READY STATUS RESTARTS AGE cert-manager pod/cert-manager-74d949c895-w6gzm 1/1 Running 0 13m cert-manager pod/cert-manager-cainjector-d9bc5979d-jhr9m 1/1 Running 0 13m cert-manager pod/cert-manager-webhook-84b7ddd796-xw878 1/1 Running 0 13m kpack pod/kpack-controller-84cbbcdff6-nnhdn 1/1 Running 0 9m40s kpack pod/kpack-webhook-56c6b59c4-9zvlb 1/1 Running 0 9m40s kube-system pod/coredns-565d847f94-kst2l 1/1 Running 0 31m kube-system pod/coredns-565d847f94-rv8pn 1/1 Running 0 31m kube-system pod/etcd-kind-control-plane 1/1 Running 0 32m kube-system pod/kindnet-275pd 1/1 Running 0 31m kube-system pod/kube-apiserver-kind-control-plane 1/1 Running 0 32m kube-system pod/kube-controller-manager-kind-control-plane 1/1 Running 0 32m kube-system pod/kube-proxy-qw9fj 1/1 Running 0 31m kube-system pod/kube-scheduler-kind-control-plane 1/1 Running 0 32m kube-system pod/metrics-server-8ff8f88c6-69t9z 0/1 Running 0 4m21s local-path-storage pod/local-path-provisioner-684f458cdd-f6zqf 1/1 Running 0 31m metallb-system pod/controller-84d6d4db45-bph5x 1/1 Running 0 29m metallb-system pod/speaker-pcl4p 1/1 Running 0 29m projectcontour pod/contour-7b9b9cdfd6-h5jzg 1/1 Running 0 6m43s projectcontour pod/contour-7b9b9cdfd6-nhbq2 1/1 Running 0 6m43s projectcontour pod/contour-certgen-v1.23.2-hxh7k 0/1 Completed 0 6m43s projectcontour pod/envoy-v4xk9 2/2 Running 0 6m43s servicebinding-system pod/servicebinding-controller-manager-85f7498cf-xd7jc 2/2 Running 0 115s NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE cert-manager service/cert-manager ClusterIP 10.96.153.49 9402/TCP 13m cert-manager service/cert-manager-webhook ClusterIP 10.96.102.82 443/TCP 13m default service/kubernetes ClusterIP 10.96.0.1 443/TCP 32m kpack service/kpack-webhook ClusterIP 10.96.227.201 443/TCP 9m40s kube-system service/kube-dns ClusterIP 10.96.0.10 53/UDP,53/TCP,9153/TCP 32m kube-system service/metrics-server ClusterIP 10.96.204.62 443/TCP 4m21s metallb-system service/webhook-service ClusterIP 10.96.186.139 443/TCP 29m projectcontour service/contour ClusterIP 10.96.138.58 8001/TCP 6m43s projectcontour service/envoy LoadBalancer 10.96.126.44 172.18.255.200 80:30632/TCP,443:30730/TCP 6m43s servicebinding-system service/servicebinding-controller-manager-metrics-service ClusterIP 10.96.147.189 8443/TCP 115s servicebinding-system service/servicebinding-webhook-service ClusterIP 10.96.14.224 443/TCP 115s
What are some alternatives?
awx-operator - An Ansible AWX operator for Kubernetes built with Operator SDK and Ansible. 🤖
prometheus - The Prometheus monitoring system and time series database.
fastapi - FastAPI framework, high performance, easy to learn, fast to code, ready for production
k8s-prometheus-adapter - An implementation of the custom.metrics.k8s.io API using Prometheus
fastapi-crudrouter - A dynamic FastAPI router that automatically creates CRUD routes for your models
kube-state-metrics - Add-on agent to generate and expose cluster-level metrics.
Celery-Kubernetes-Operator - An operator to manage celery clusters on Kubernetes (Work in Progress)
kube-prometheus - Use Prometheus to monitor Kubernetes and applications running on Kubernetes
flyte - Scalable and flexible workflow orchestration platform that seamlessly unifies data, ML and analytics stacks.
istio - Connect, secure, control, and observe services.
pykorm - A python 🐍 kubernetes ☸️ ORM 🚀. Very useful when writing operators for your CRDs with Kopf.
k9s - 🐶 Kubernetes CLI To Manage Your Clusters In Style!