Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/virtual-kubelet/nomad
HashiCorp Nomad Provider for Virtual Kubelet
https://github.com/virtual-kubelet/nomad
Last synced: about 1 month ago
JSON representation
HashiCorp Nomad Provider for Virtual Kubelet
- Host: GitHub
- URL: https://github.com/virtual-kubelet/nomad
- Owner: virtual-kubelet
- Created: 2019-06-17T20:34:15.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-09-19T06:34:08.000Z (about 5 years ago)
- Last Synced: 2024-08-02T01:25:48.921Z (4 months ago)
- Language: Go
- Homepage:
- Size: 1.73 MB
- Stars: 30
- Watchers: 3
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-repositories - virtual-kubelet/nomad - HashiCorp Nomad Provider for Virtual Kubelet (Go)
README
# HashiCorp Nomad Provider for Virtual Kubelet
HashiCorp [Nomad](https://nomadproject.io) provider for Virtual Kubelet connects your Kubernetes cluster
with Nomad cluster by exposing the Nomad cluster as a node in Kubernetes. By
using the provider, pods that are scheduled on the virtual Nomad node
registered on Kubernetes will run as jobs on Nomad clients as they
would on a Kubernetes node.**This is an experimental project. This project isn't production ready.**
## Demo
![Virtual Kubelet Nomad Provider Demo](./images/virtual-kubelet-nomad-provider-showcase.gif "Virtual Kubelet Nomad Provider Demo")
## Prerequisites
This guide assumes the following:
* A Nomad cluster up and running.
* A Kubernetes cluster up and running.
* The Nomad API is accessible from the Kubernetes cluster.
* [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl) installed.## Usage
The Nomad provider accepts the following two environment variables:
* `NOMAD_ADDR` - The Nomad API address. Set to `127.0.0.1:4646` by default.
* `NOMAD_REGION` - The Nomad region. Set to `global` by default.```bash
export NOMAD_ADDR="127.0.0.1:4646"
export NOMAD_REGION="global"
```### Run Virtual Kubelet with Nomad Provider
```bash
VK_TAINT_KEY="hashicorp.com/nomad" ./virtual-kubelet --provider="nomad"
```Validate that the virtual kubelet node is registered.
```bash
kubectl get nodes
```Expected output.
```bash
NAME STATUS ROLES AGE VERSION
minikube Ready master 55d v1.10.0
virtual-kubelet Ready agent 1m v1.13.1-vk-N/A
```### Create a Pod in Kubernetes
```bash
kubectl apply -f pods/nginx-pod.yaml
```Validate pod.
```bash
kubectl get pods
```Expected output.
```bash
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 1m
```Validate Nomad job.
```bash
nomad status
```Expected output.
```bash
ID Type Priority Status Submit Date
nomad-virtual-kubelet-nginx service 100 running 2018-12-31T16:52:52+05:30
```### Configuration Options
The Nomad provider has support for annotations to define Nomad [datacenters](https://www.nomadproject.io/docs/job-specification/job.html#datacenters).
Here is an example usage of the Nomad datacenter annotations in a pod spec.
```yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
annotations:
"nomad.hashicorp.com/datacenters": "us-east1,us-west1"
spec:
containers:
- image: nginx
imagePullPolicy: Always
name: nginx
ports:
- containerPort: 80
- containerPort: 443
dnsPolicy: ClusterFirst
nodeSelector:
kubernetes.io/role: agent
beta.kubernetes.io/os: linux
type: virtual-kubelet
tolerations:
- key: virtual-kubelet.io/provider
operator: Exists
- key: hashicorp.com/nomad
effect: NoSchedule
```