Skip to content

Instantly share code, notes, and snippets.

View udhos's full-sized avatar
👾
Wondering

udhos

👾
Wondering
  • São Paulo, Brazil
View GitHub Profile
@udhos
udhos / kubectl apply metadata.resourceVersion
Created February 24, 2021 18:54
kubectl apply --- metadata.resourceVersion: Invalid value: 0x0: must be specified for an update
https://feichashao.com/kubectl-apply-fail/
Root Cause
This is because there's a resourceVersion field in last-applied-configuration annotation, which is not expected. But why there's a resourceVersion field?
We can reproduce the issue like this:
## Create a CR using "kubectl apply"
$ cat origin.yml
@udhos
udhos / main.go
Created January 13, 2024 02:35 — forked from fl64/main.go
golang prometheus exporter example
package main
import (
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
"log"
"math/rand"
"net/http"
"time"
@udhos
udhos / Go, Containers, and the Linux Scheduler.md
Last active November 10, 2023 06:17
Go, Containers, and the Linux Scheduler

Go, Containers, and the Linux Scheduler

https://www.riverphillips.dev/blog/go-cfs/

GOMAXPROCS should be set to the number of CPU cores that the container is allowed to use, if you’re allocating fractional CPU round down, unless you’re allocating less than 1 CPU core in which case round up. GOMAXPROCS=max(1, floor(CPUs)) can be used to calculate the value. If you find it easier Uber has open sourced a library automaxprocs to calculate this value for you from your container’s cgroups automatically.

golang/go#33803

https://github.com/uber-go/automaxprocs

@udhos
udhos / kubernetes operator.md
Last active November 1, 2023 07:10
kubernetes operator

Kubebuilder does not exist as an example to copy-paste, but instead provides powerful libraries and tools to simplify building and publishing Kubernetes APIs from scratch. It provides a plugin architecture allowing users to take advantage of optional helpers and features.

Kubebuilder is developed on top of the controller-runtime and controller-tools libraries.

Kubebuilder is extensible and can be used as a library in other projects. Operator-SDK is a good example of a project that uses Kubebuilder as a library.

Sample controller: https://github.com/kubernetes/sample-controller

Book: https://book.kubebuilder.io/

@udhos
udhos / grace.go
Created October 28, 2023 21:22 — forked from silkeh/grace.go
Golang graceful restart with TCP connections
package main
import (
"encoding/json"
"flag"
"io/ioutil"
"log"
"net"
"os"
"os/signal"
@udhos
udhos / nc.go
Created March 28, 2018 20:18 — forked from suconghou/nc.go
nc golang
package main
import (
"fmt"
"io"
"net"
"os"
"sync"
)
http://checkip.amazonaws.com/
@udhos
udhos / nginx resolver in stream.md
Created June 28, 2023 13:31
nginx resolver in stream