Kubernetes

The control plane is run for you, and the nodes are servers in your project at their plans’ prices. The standard control plane is not billed.

Create a cluster

  1. Pick a region and a name for the cluster.
  2. Add at least one node pool, with a name, a plan and a number of nodes.
  3. Choose the standard control plane or the high-availability one.
$ lc k8s create shop --region ee1 \
    --pool web:s-4:3 --network app
Creating shop in ee1 ... ready
Control plane  standard
Pool web       3 × s-4

A cluster starts on the latest Kubernetes version that logi-ciel supports. With --network, its nodes join a private network and reach your other servers by their private addresses.

The control plane

The standard control plane runs one API server and has no charge. During an upgrade, or if its host fails, the API pauses for a few minutes while workloads keep running.

The high-availability control plane runs its API server and etcd on three machines, so the API stays up through both. Add --ha to the create command to choose it. It costs €0.0450 an hour, up to €29.90 a month per cluster.

Connect with kubectl

$ lc k8s kubeconfig shop --merge
Merged shop into ~/.kube/config
$ kubectl cluster-info
Kubernetes control plane is running at https://shop.k8s.ee1.logi-ciel.co

The kubeconfig asks lc for a short-lived token on each use. Access ends when you log out of lc or leave the project.

Node pools

A pool is a set of servers on one plan. Each node is billed as a server on its plan, and adds its 20 TB of outbound traffic to the project’s pool.

$ lc k8s pool add shop batch --plan d-8 --nodes 2
$ lc k8s pool scale shop web --nodes 5
$ lc k8s pool autoscale shop batch --min 0 --max 6

The cluster autoscaler adds nodes when pods wait for room, and removes nodes that sit idle. A pool scaled to zero has no nodes, so nothing in it is billed.

Use dedicated vCPUs for pools that run near full load, such as builds or databases. Shared vCPUs suit most web workloads, which run well below full load.

Load balancers and volumes

A Service of type LoadBalancer gets a load balancer on the lb-1 plan. An annotation on the Service picks the lb-2 plan instead:

apiVersion: v1
kind: Service
metadata:
  name: shop
  annotations:
    logi-ciel.co/lb-plan: lb-2
spec:
  type: LoadBalancer
  selector: {app: shop}
  ports:
    - {port: 443, targetPort: 8443}

A PersistentVolumeClaim gets a volume through the CSI driver, and logiciel-nvme is the default storage class. For storage that several pods share, use file storage over NFS.

Both are billed like any other load balancer or volume, from creation to deletion. Deleting a cluster deletes its nodes and load balancers, but its volumes stay. Delete them yourself once you are done with them.

Upgrades

$ lc k8s upgrade shop

The upgrade moves the control plane to the next version first. Then it replaces the nodes one at a time, draining each before it goes. Patch releases install on their own, in a weekly maintenance window you set in the console.

logi-ciel is a design concept

This site is a portfolio piece by Soheyb. The brand, the pages and the price list are real design work; the cloud behind them is not. There’s no console to sign in to, and no server to rent.

Back to the site