Posts

Redis pubsub and reactive programming

 https://github.com/jonashackt/spring-reactive-redis-messaging

Assign pods to nodes

 https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes/

How to understand Prometheus query

http_requests_total{environment="testing",method="GET"} = 1 http_requests_total{environment="development",method="GET"} = 2 http_requests_total{environment="staging",method="GET"} = 1 Nếu bạn muốn hiển thị 1 metric là tổng số request GET thì chỉ cần đơn giản thực hiện query sau sum (http_requests_total{method="GET"}) sum (http_requests_total{method="GET"}) without(environment) sum (http_requests_total{method="GET"}) by(method)

Check logs in docker container

watch -n 0 "docker logs mycontainer"

Check worker node usage

  Use the following commands to check workload usage in CLI: kubectl top pod kubectl describe pod NAME                             CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%     node-1   185m         11%     2671Mi           39%         node-2   145m         9%     2755Mi           40%         node-3   177m         11%     2767Mi           40%         coax-1         1137m         31%     3132Mi           45%         coax-2         107m         2%     1969Mi           28%     ...

Service account token

1. => tạo service account kubectl create serviceaccount deployer 2. => tạo binding giữa service accounts và role-admin kubectl create clusterrolebinding deployer-binding --clusterrole=cluster-admin \ --serviceaccount= default :deployer 3. => Tạo token với name deployer-secret và attach vào service account deployer kubectl apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: deployer-secret annotations: kubernetes.io/service-account.name: deployer type: kubernetes.io/ service-account-token EOF 4. => hiển thị danh sách tên các token đã được tạo ra kubectl get secrets 5. => view token value cho deployer đã tạo kubectl describe secret deployer-token-nmx8l https: //cloudhedge.io/setting-up-kubernetes-api-access-using-service-account/

Emit Events with sink

  private final Sinks.Many<String> eventSink = Sinks. many ().multicast().directBestEffort() ; @GetMapping (value = "/{id}" , produces = MediaType. TEXT_EVENT_STREAM_VALUE ) public Flux<ServerSentEvent<String>> sse ( @PathVariable ( "id" ) String id) { final AtomicLong counter = new AtomicLong( 0 ) ; return eventSink .asFlux() .filter(e -> e.equals( id )) .map(e -> { System. out .println(Thread. currentThread ().getName()) ; return ServerSentEvent. builder (e) .id( counter .incrementAndGet() + "" ) .event(e.toLowerCase() + "-" + new SimpleDateFormat( "yyyy.MM.dd.HH.mm.ss" ).format( new java.util.Date())) .build() ; }) ; } @ResponseStatus (HttpStatus. OK ) @ResponseBody ...