All Projects → hyperhq → hyper.sh-connector-k8s

hyperhq / hyper.sh-connector-k8s

Licence: MIT license
Hyper.sh Container Connector for Kubernetes

Programming Languages

typescript
32286 projects
Makefile
30231 projects

Projects that are alternatives of or similar to hyper.sh-connector-k8s

exploit-CVE-2016-6515
OpenSSH remote DOS exploit and vulnerable container
Stars: ✭ 53 (+140.91%)
Mutual labels:  container
spacetech-kubesat
IBM Space Tech - Cognitive Autonomous Framework
Stars: ✭ 75 (+240.91%)
Mutual labels:  container
collections
Serves GOV.UK navigation pages, browse, topic, step-by-steps & services and information pages.
Stars: ✭ 32 (+45.45%)
Mutual labels:  container
undock
Extract contents of a container image in a local folder
Stars: ✭ 119 (+440.91%)
Mutual labels:  container
microcore
.NET Core framework for inter-service communication
Stars: ✭ 24 (+9.09%)
Mutual labels:  container
search-api
Search API for GOV.UK
Stars: ✭ 21 (-4.55%)
Mutual labels:  container
docker-cassandra-k8s
Cassandra Docker optimized for Kubernetes
Stars: ✭ 13 (-40.91%)
Mutual labels:  container
plasma-docker
Plasmoid for KDE Plasma to control docker containers
Stars: ✭ 38 (+72.73%)
Mutual labels:  container
docker
Craft CMS Docker images.
Stars: ✭ 79 (+259.09%)
Mutual labels:  container
laravel-auto-binder
Bind interfaces to concrete classes automatically
Stars: ✭ 67 (+204.55%)
Mutual labels:  container
DrawContainerDemo
作业盒子批注控件反编译
Stars: ✭ 17 (-22.73%)
Mutual labels:  container
shorty
URL shortener available as library, microservice (even containerized), aws lambda, and azure function
Stars: ✭ 31 (+40.91%)
Mutual labels:  container
yoda
Simple tool to dockerize and manage deployment of your project
Stars: ✭ 69 (+213.64%)
Mutual labels:  container
solr-container
Ansible Container project that manages the lifecycle of Apache Solr on Docker.
Stars: ✭ 17 (-22.73%)
Mutual labels:  container
docker
📦 Docker Images for YOURLS
Stars: ✭ 100 (+354.55%)
Mutual labels:  container
docker-nfs4
Simple containerized NFS v4 server running on Alpine Linux
Stars: ✭ 19 (-13.64%)
Mutual labels:  container
pandleau
A quick and easy way to convert a Pandas DataFrame to a Tableau .hyper or .tde extract.
Stars: ✭ 60 (+172.73%)
Mutual labels:  hyper
ddd-practitioners-ref
EventStorming workshop, this is a hands-on workshop. Contains such topics: DDD, Event storming, Specification by example. Including the AWS product : Serverless Lambda , DynamoDB, Fargate, CloudWatch.
Stars: ✭ 276 (+1154.55%)
Mutual labels:  container
podman-macos
📦 Podman frontend for macOS
Stars: ✭ 576 (+2518.18%)
Mutual labels:  container
docker-routeros
Mikrotik RouterOS inside Docker container
Stars: ✭ 225 (+922.73%)
Mutual labels:  container

Hyper.sh Container Connector for Kubernetes (experimental)

Note:

This project is inspired by and based on aci-connector-k8s. We chose to create a new repo, instead of sending a PR, simply because that this is merely a quick change. In the future, a new open framework is desired to support all container-first infrastructure service with driver plugins, including ACI and Hyper.sh.

The Hyper.sh Container Connector for Kubernetes allows Kubernetes clusters to deploy Hyper.sh Container.

This enables on-demand and nearly instantaneous container compute, orchestrated by Kubernetes, without having VM infrastructure to manage and while still leveraging the portable Kubernetes API. This will allow you to utilize both VMs and container simultaneously in the same Kubernetes cluster, giving you the best of both worlds.

Please note this software is experimental and should not be used for anything resembling a production workload.

How does it Work

The Hyper.sh Connector roughly mimics the Kubelet interface by:

  • Registering into the Kubernetes data plane as a Node with unlimited capacity
  • Dispatching scheduled Pods to Hyper.sh Container instead of a VM-based container engine

Once the connector is registered as a node named hyper-connector, you can use nodeName: hyper-connector in your Pod spec to run the Pod via Hyper.sh Container. Pods without this node name will continue to be scheduled normally. See below for instructions on how to use the Hyper.sh Connector with the Kubernetes scheduler via taints and tolerations.

Hyper.sh Connector for Kubernetes Demo

Requirements

  1. A working Hyper.sh account with credential
  2. A Kubernetes cluster with a working kubectl

Quickstart

  1. Edit examples/hyper-connector.yaml and supply environment variables
  2. Run the Hyper.sh Connector with kubectl create -f examples/hyper-connector.yaml
  3. Wait for kubectl get nodes to display the hyper-connector node
  4. Run an NGINX pod via Hyper.sh using kubectl create -f examples/nginx-pod.yaml
  5. Access the NGINX pod via its public address

Usage

Get Started with Hyper.sh

Follow the instruction to get Access Key and Secret Key of Hyper.sh account.

Edit the examples/hyper-connector.yaml and input environment variables using the values above:

  • HYPER_ACCESS_KEY: insert Access Key
  • HYPER_SECRET_KEY: insert Secret Key

Install the Hyper.sh Connector

$ kubectl create -f examples/hyper-connector.yaml
deployment "hyper-connector" created

$ kubectl get pods
NAME                                   READY     STATUS    RESTARTS   AGE
hyper-connector-3791207804-gtc77       1/1       Running   0          2d

$ kubectl get nodes
NAME            STATUS    AGE       VERSION
hyper-connector Ready     2d        1.6.6
minikube        Ready     2d        v1.7.0

Install the NGINX example

$ kubectl create -f examples/nginx-pod.yaml 
pod "nginx" created

$ kubectl get pods -w -o wide
NAME                              READY     STATUS    RESTARTS   AGE       IP              NODE
hyper-connector-3791207804-gtc77  1/1       Running   1          2d        172.17.0.3      minikube
nginx                             1/1       Running   0          2d        205.233.66.72   hyper-connector

Note the pod is scheduled on the hyper-connector node. It should now be accessible at the public IP listed.

Using the Kubernetes scheduler

The example in nginx-pod hard codes the node name, but you can also use the Kubernetes scheduler.

The virtual hyper node, has a taint (hyper.sh/container) with a default effect of NoSchedule. This means that by default Pods will not schedule onto the hyper node unless they are explicitly placed there.

However, if you create a Pod that tolerates this taint, it can be scheduled to the hyper node by the Kubernetes scheduler.

Here is an example of Pod with this toleration.

To use this Pod, you can simply:

$ kubectl create -f examples/nginx-pod-toleration.yaml

Note that if you have other nodes in your cluster then this Pod may not necessarily schedule onto the Hyper.sh Container.

To force a Pod onto Hyper.sh Container, you can either explicitly specify the NodeName as in the first example, or you can delete all of the other nodes in your cluster using kubectl delete nodes <node-name>. A third option is to fill your cluster with other workloads, then the scheduler will be obligated to schedule work to the Hyper.sh Container API.

Development Instructions

Local Development

<edit source>
$ make clean
$ make build
$ node connector.js

Docker Development

make docker-build
docker tag <local-image> <remote-image>
docker push <remote-image>

Then edit examples/hyper-connector.yaml to point to the remote-image.

TODO

  • Full container parameter support
  • Improve the status synchronization of node and pod
  • Enhanced error checking and exception handling

Contributing

https://github.com/hyperhq/hyper-connector-k8s

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].