Coder Social home page Coder Social logo

community's Introduction

banner

Manage kubernetes in the most light and convenient way

repo status coverage Go Report Card last commit Issues Pull Requests contributors apache2.0 Stars Forks

github actions code-check-test build-kc


What is KubeClipper

English | 中文

KubeClipper is a lightweight web service that provides a friendly web console GUI, APIs, and a CLI tool for Kubernetes cluster lifecycle management.
KubeClipper provides flexible Kubernetes as a Service (KaaS), which allows users to rapidly deploy K8S clusters anywhere(cloud, hypervisor, bare metal) and provides continuous lifecycle management capabilities (installation, deleting, upgrading, backup and restoration, cluster scaling, remote access, plug-in management, application store).see Feature List for details.

🎯 Project Goal:Manage Kubernetes in the most light and convenient way.

Features

☸️ Cluster Lifecycle Management Supports deployment of Kubernetes on any infrastructure and provides comprehensive cluster lifecycle management.
  • Lifecycle Management: cluster creation, deletion, backup, restoration, upgrade, and node manipulation
  • Multiple Deployment Modes: online/offline deployment support
  • Multi-Architecture: x86/64 & arm64 support
  • Cluster Import: registration and management of external clusters (non-Kubeclipper created)
  • ...
🌐 Node Management
  • Automatic node registration
  • Node information collection
  • Node terminal
  • ...
🚪 Identity and Access Management (IAM) Provides a unified authentication and authorization system with fine-grained role-based access control.
  • RBAC-based user permission system
  • OIDC integration
  • ...

Roadmap & Todo list

  • 🚀 Cluster Installation Optimization
    • Use images to encapsulate installation package resources to reduce complexity. Reuse mature image technology
  • 💻 Kubernetes Web Console
    • Workload resources & monitoring presentation
    • Tenant based cluster access control
  • 📦 Application Store
    • Application lifecycle management
    • Support web UI & CLI interface
  • 🧩 Common Application and Plugin Integrations
    • LB & Ingress
    • Monitoring
    • Kubernetes Dashboard
    • KubeEdge
  • 🕸 Managed Clusters
    • Support KoK clusters.

Architecture

Core

kc-arch1

Node

kc-arch2

Network

kc-network

Explore the architecture of Kubeclipper on kubeclipper.io.

Quick Start

For users who are new to KubeClipper and want to get started quickly, it is recommended to use the All-in-One installation mode, which can help you quickly deploy KubeClipper with zero configuration.

Preparations

KubeClipper itself does not take up too many resources, but in order to run Kubernetes better in the future, it is recommended that the hardware configuration should not be lower than the minimum requirements.

You only need to prepare a host with reference to the following requirements for machine hardware and operating system.

Hardware recommended configuration

  • Make sure your machine meets the minimum hardware requirements: CPU >= 2 cores, RAM >= 2GB.
  • Operating System: CentOS 7.x / Ubuntu 18.04 / Ubuntu 20.04.

Node requirements

  • Nodes must be able to connect via SSH.

  • You can use the sudo / curl / wget / tar command on this node.

It is recommended that your operating system is in a clean state (no additional software is installed), otherwise, conflicts may occur.

Deploy KubeClipper

Download kcctl

KubeClipper provides command line tools 🔧 kcctl to simplify operations.

You can download the latest version of kcctl directly with the following command:

# Install latest release
curl -sfL https://oss.kubeclipper.io/get-kubeclipper.sh | bash -
# In China, you can add env "KC_REGION=cn", we use registry.aliyuncs.com/google_containers instead of k8s.gcr.io
curl -sfL https://oss.kubeclipper.io/get-kubeclipper.sh | KC_REGION=cn bash -
# The latest release version is downloaded by default. You can download the specified version. For example, specify the master development version to be installed
curl -sfL https://oss.kubeclipper.io/get-kubeclipper.sh | KC_REGION=cn KC_VERSION=master bash -

It is highly recommended that you install the latest release to experience more features.
You can also download the specified version on the GitHub Release Page.

Check if the installation is successful with the following command:

kcctl version

Get Started with Installation

In this quick start tutorial, you only need to run just one command for installation:

If you want to install AIO mode

# install default release
kcctl deploy
# you can use KC_VERSION to install the specified version, default is latest release
KC_VERSION=master kcctl deploy

If you want to install multi node, Use kcctl deploy -h for more information about a command

After you runn this command, kcctl will check your installation environment and enter the installation process, if the conditions are met.

After printing the KubeClipper banner, the installation is complete.

 _   __      _          _____ _ _
| | / /     | |        /  __ \ (_)
| |/ / _   _| |__   ___| /  \/ |_ _ __  _ __   ___ _ __
|    \| | | | '_ \ / _ \ |   | | | '_ \| '_ \ / _ \ '__|
| |\  \ |_| | |_) |  __/ \__/\ | | |_) | |_) |  __/ |
\_| \_/\__,_|_.__/ \___|\____/_|_| .__/| .__/ \___|_|
                                 | |   | |
                                 |_|   |_|

Login Console

When deployed successfully, you can open a browser and visit http://$IP to enter the KubeClipper console.

You can log in with the default account and password admin / Thinkbig1 .

You may need to configure port forwarding rules and open ports in security groups for external users to access the console.

Create a k8s cluster

When kubeclipper is deployed successfully, you can use the kcctl tool or console to create a k8s cluster. In the quick start tutorial, we use the kcctl tool to create.

Then create a k8s cluster with the following command:

NODE=$(kcctl get node -o yaml|grep ipv4DefaultIP:|sed 's/ipv4DefaultIP: //')

kcctl create cluster --master $NODE --name demo --untaint-master

The cluster creation will be completed in about 3 minutes, or you can use the following command to view the cluster status:

kcctl get cluster -o yaml|grep status -A5

You can also enter the console to view real-time logs.

Once the cluster enter the Running state , it means that the creation is complete. You can use kubectl get cs command to view the cluster status.

Development and Debugging

  1. fork repo and clone
  2. run etcd locally, usually use docker / podman to run etcd container
    export HostIP="Your-IP"
    docker run -d \
    --net host \
    k8s.gcr.io/etcd:3.5.0-0 etcd \
    --advertise-client-urls http://${HostIP}:2379 \
    --initial-advertise-peer-urls http://${HostIP}:2380 \
    --initial-cluster=infra0=http://${HostIP}:2380 \
    --listen-client-urls http://${HostIP}:2379,http://127.0.0.1:2379 \
    --listen-metrics-urls http://127.0.0.1:2381 \
    --listen-peer-urls http://${HostIP}:2380 \
    --name infra0 \
    --snapshot-count=10000 \
    --data-dir=/var/lib/etcd
  3. change kubeclipper-server.yaml etcd.serverList to your locally etcd cluster
  4. make build
  5. ./dist/kubeclipper-server serve

Contributing

Please follow Community to join us.

Star History

Star History Chart

community's People

Contributors

lixd avatar mengchenchen avatar metrora avatar moweiwei avatar x893675 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

community's Issues

GitHub repository does not link to the project website url

As part of our ongoing effort to ensure all the websites within the CNCF meet the CLOMonitor guidelines, we noticed that Kubeclipper does not pass the website criteria on CLOMonitor.

To fix this:
Edit kubeclipper/community repository details. See Notary for example:
Screenshot 2023-11-22 at 09 29 19

In the website section, add the link to the kubeclipper website. See Notary for example:
Screenshot 2023-11-22 at 09 30 15

Once done, feel free to close this issue as CLOMonitor will recrawl the page and update accordingly.

Installation issues

ubuntu: 20.04
Kubeclipper: v1.1.0

Environment
Use account ubuntu to install with full sudo permission.

Issue1.
[2022-09-22T07:37:00Z][FATAL] [10.180.0.89]deploy etcd failed due to (run echo $PASSWD | sudo -S /bin/bash -c "echo '# /usr/lib/systemd/system/kc-etcd.service [Install] WantedBy=multi-user.target' > /usr/lib/systemd/system/kc-etcd.service" &&echo $PASSWD | sudo -S systemctl daemon-reload &&echo $PASSWD | sudo -S systemctl enable kc-etcd --now on [email protected]) err: /bin/bash: line 16: /usr/lib/systemd/system/kc-etcd.service: No such file or directory

ll /usr/lib/systemd/
total 36
drwxr-xr-x 9 root root 4096 Jul 5 01:08 ./
drwxr-xr-x 72 root root 4096 Jul 5 01:13 ../
drwxr-xr-x 3 root root 4096 Aug 13 2019 boot/
drwxr-xr-x 2 root root 4096 May 27 02:53 catalog/
drwxr-xr-x 2 root root 4096 Jul 5 01:09 logind.conf.d/
drwxr-xr-x 4 root root 4096 Jul 6 01:12 user/
drwxr-xr-x 2 root root 4096 Jul 6 01:12 user-environment-generators/
drwxr-xr-x 2 root root 4096 Apr 20 2018 user-generators/
drwxr-xr-x 2 root root 4096 May 27 02:53 user-preset/

The reason is no system folder under the /usr/lib/systemd/, use sudo mkdir /usr/lib/systemd/system to fix it.

Issue2.
Due to installing failure, reinstall it and got below.

Length: 813815019 (776M) [application/x-gzip]
kc-amd64.tar.gz: Permission denied

Cannot write to ‘kc-amd64.tar.gz’ (Success).
[2022-09-22T07:44:38Z][FATAL] os call error. exit status 3

The reason is it doesn't clean up the /tmp/kc*, before installation, use sudo rm -rf /tmp/kc* to fix it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.