commit | d779093a7a967634efae99c914e7e4d9559fd7ea | [log] [tgz] |
---|---|---|
author | Kevin Lubick <kjlubick@google.com> | Mon Aug 28 11:16:09 2023 -0400 |
committer | SkCQ <skcq-be@skia-corp.google.com.iam.gserviceaccount.com> | Mon Aug 28 18:42:58 2023 +0000 |
tree | 157bcf466ce9869a1f16e633c788392fcbd86ed7 | |
parent | 1e5d3f962b3ea35d07e154f1a733c274ad884f5b [diff] |
[golden] Add a PodDisruptionBudget for baseline servers Keeping baseline servers highly available is important because many client CQ tasks depend on calling APIs that are served by this service. We already have a podAntiAffinity rule that prevents more than one of the same type of baseline-server on the same node, so if a node goes offline we have redundancy. This CL adds a PodDisruptionBudget [1] which will prevent routine maintenance (e.g. Nodes are being automatically upgraded or intentionally drained) from taking down more than one of a pod at a time. This does not prevent simultaneous NodeDiskPressure events from evicted multiple pods at the same time (they ignore these budgets), but we have hopefully solved that by increasing the diskspace and (soon) having docker-pushes-watcher clean up after itself. One misconception I had about evictions was that when k8s evicts a pod, it starts up another replica on a different node and waits for that second replica to start before terminating the evicted pod. No - k8s sends the evicted pod into shutdown mode right away so there is a gap in time before the second replica is live. While I would have liked to apply this to the Gold frontends as well, those are not designed (yet) to be run with more than one replica (although they are probably close). We cannot have an effective PodDisruptionBudget unless the number of replicas is greater than 1 (see misconception in the previous paragraph which led me to optimistically hope for otherwise). [1] https://kubernetes.io/docs/tasks/run-application/configure-pdb/ Change-Id: I853140320ac63c60d681e42791023147bc4231cf Reviewed-on: https://skia-review.googlesource.com/c/buildbot/+/748436 Commit-Queue: Kevin Lubick <kjlubick@google.com> Reviewed-by: Joe Gregorio <jcgregorio@google.com>
This repo contains infrastructure code for Skia.
The main source code repository is a Git repository hosted at https://skia.googlesource.com/buildbot.git. It is possible to check out this repository directly with git clone
or via go get
.
Using git clone
allows you to work in whatever directory you want. You will still need to set GOPATH in order to build some apps (recommended to put this in a cache dir). E.g.:
$ cd ${WORKDIR} $ git clone https://skia.googlesource.com/buildbot.git $ export GOPATH=${HOME}/.cache/gopath/$(basename ${WORKDIR}) $ mkdir $GOPATH $ cd buildbot
Almost all applications are built with Bazel, and bazelisk is the recommended tool to ensure you have the right version of bazel installed:
go install github.com/bazelbuild/bazelisk@latest go install github.com/bazelbuild/buildtools/buildifier@latest go install github.com/kisielk/errcheck@latest go install golang.org/x/tools/cmd/goimports@latest go install github.com/mikefarah/yq/v4@latest go install go.chromium.org/luci/client/cmd/...@latest
sudo apt-get install jq
bazelisk build --config=mayberemote //...
bazelisk test --config=mayberemote //...
To update generated code run the following in any directory:
go generate ./...
Install Cloud SDK.
Use this command to run the presubmit tests:
./run_unittests --small