banzaicloud / pke

PKE is an extremely simple CNCF certified Kubernetes installer and distribution, designed to work on any cloud, VM or bare metal.
Apache License 2.0
264 stars 31 forks source link
distribution golang k8s kubernetes

Pipeline Kubernetes Engine - PKE

PKE is an extremely simple CNCF certifed Kubernetes installer and distribution, designed to work on any cloud, VM or bare metal. The pke tool supports cloud provider integrations, multi-phased installs (requires only an OS), pre-warmed machine image builds, and more. PKE is the preferred Kubernetes run-time of the Banzai Cloud Pipeline platform, which supercharges the development, deployment and scaling of container-based applications with native support for multi-, hybrid-, and edge-cloud environments.

If you would like to supercharge your Kubernetes experience using Banzai Cloud Pipeline, check out the free developer beta:

Creating PKE Kubernetes clusters on a Linux distribution

In order to run PKE, you need to meet the following requirements.

Requirements

Operating system

pke currently is available for AlmaLinux 8.x, RHEL 8.x. and Ubuntu 20.04 LTS.

We recommend using Ubuntu since it contains a much newer Kernel version. If you need support for an OS not listed above feel free to contact us.

Network

A flat network between nodes is required. Port 6443 (K8s API server) should be opened if there is a need to access K8s API externally.

The pke binary

You can download a particular binary release from the project's release page on GitHub. Our guides assume that the executable is available as pke in the system PATH.

You can also use the following commands as root to achieve this:

curl -vL https://github.com/banzaicloud/pke/releases/download/0.9.0/pke-0.9.0 -o /usr/local/bin/pke
chmod +x /usr/local/bin/pke
export PATH=$PATH:/usr/local/bin/

Note that the pke tool will install all required dependencies (like CRI, CNI, etc).

Single-node PKE

This will install a single Kuberentes master node and enables you to run workloads on it.

At least 2 CPU cores are required and minimum of 512 MB of memory.

Creating a single-node Kubernetes cluster is as simple as running the following command as root:

pke install single

Multi-node PKE

This setup consists a single Kubernetes master and at least one non-master node.

Master

At least 2 CPU cores are required and minimum of 512 MB of memory.

To create the Kubernetes API server:

export MASTER_IP_ADDRESS=""
pke install master --kubernetes-api-server=$MASTER_IP_ADDRESS:6443

Please get the token and certhash from the logs or issue the pke token list command to print the token and cert hash needed by workers to join the cluster.

Additional nodes

At least 1 CPU core is required.

Once the API server is up and running you can add as many non-master nodes as needed:

export TOKEN=""
export CERTHASH=""
export MASTER_IP_ADDRESS=""
pke install worker --kubernetes-node-token $TOKEN --kubernetes-api-server-ca-cert-hash $CERTHASH --kubernetes-api-server $MASTER_IP_ADDRESS:6443

Using kubectl

To use kubectl and other command line tools on the Kubernetes master, set up its config:

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes

Other options

You can create PKE clusters on any of the cloud providers, Vagrant, virtual machines, etc using the pke tool or let the Pipeline platform do it for you using all the complementary features, such as: centralized log collection, federated monitoring, autoscaling, Vault based secret management, disaster recovery, security scans and a lot more.

Contributing

Thank you for your contribution and being part of our community. Please read CONTRIBUTING.md for details on the code of conduct, and the process for submitting pull requests. When you are opening a PR to PKE for the first time we will require you to sign a standard CLA.

Community

If you have any questions about PKE, and would like to talk to us and the other members of the Banzai Cloud community, please join our Slack.

License

Copyright (c) 2017-2019 Banzai Cloud, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.