Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/caicloud/leader-election-example
This example demonstrates how to write high availability controller with GO.
https://github.com/caicloud/leader-election-example
controller example golang kubernetes leader-election
Last synced: about 2 months ago
JSON representation
This example demonstrates how to write high availability controller with GO.
- Host: GitHub
- URL: https://github.com/caicloud/leader-election-example
- Owner: caicloud
- Created: 2019-10-09T08:06:47.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-02-24T17:27:48.000Z (almost 2 years ago)
- Last Synced: 2024-06-21T16:55:32.454Z (7 months ago)
- Topics: controller, example, golang, kubernetes, leader-election
- Language: Go
- Size: 7.35 MB
- Stars: 10
- Watchers: 6
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*
- [Leader Election Example](#leader-election-example)
- [Running](#running)
- [Health Check](#health-check)# Leader Election Example
This example demonstrates how to use the leader election package.
## Running
Run the following three commands in separate terminals.
```bash
# first terminal
go run main.go -kubeconfig=/path/to/kubeconfig -logtostderr=true -lease-lock-name=example -lease-lock-namespace=default -id=0 -port=8080# second terminal
go run main.go -kubeconfig=/path/to/kubeconfig -logtostderr=true -lease-lock-name=example -lease-lock-namespace=default -id=1 -port=8081# third terminal
go run main.go -kubeconfig=/path/to/kubeconfig -logtostderr=true -lease-lock-name=example -lease-lock-namespace=default -id=2 -port=8082
```> You can ignore the `-kubeconfig` flag if you are running these commands in the Kubernetes cluster.
Now kill the existing leader. You will see from the terminal outputs that one of the remaining two processes will be elected as the new leader.
## Health Check
```bash
$ curl -i localhost:8080/healthz
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff
Date: Thu, 19 Sep 2019 10:44:39 GMT
Content-Length: 2ok%
$ curl -i localhost:8080/healthz/leaderElection
HTTP/1.1 200 OK
Date: Thu, 19 Sep 2019 10:44:31 GMT
Content-Length: 2
Content-Type: text/plain; charset=utf-8ok%
```