Kubernetes Cluster Setup and KubeSphere Installation Guide

Kubernetes (k8s) is an open-source system for automating deployment, scaling, and management of containerized applicasions. The core components include:

  • Master Node:
    • kube-apiserver: API entry point for cluster operations
    • etcd: Distributed key-value store for cluster data
    • kube-scheduler: Assigns pods to nodes
    • Controller Manager: Manages replication, node health, etc.
  • Worker Node:
    • kubelet: Node agent for container management
    • kube-proxy: Network proxy for service discovery
    • Container Runtime: Docker, containerd, etc.

Core Concepts

Term Description
Pod Samllest deployable unit containing one or more containers sharing network
Deployment Manages pod replicas and rolling updates
Service Abstracts pod access with load balancing
Label Key-value pairs for resource organization
Namespace Logical isolation for resources
Volume Persistent storage for pods

Cluster Installation Steps

  1. Prerequisites:
    • Minimum 2GB RAM, 2 CPUs
    • Disable swap
    • Install Docker
  2. Initialize Master Node: ``` kubeadm init
    --apiserver-advertise-address=10.0.2.15
    --image-repository registry.aliyuncs.com/google_containers
    --kubernetes-version v1.17.3
    --service-cidr=10.96.0.0/16
    --pod-network-cidr=10.244.0.0/16
  3. Join Worker Nodes: ``` kubeadm join 10.0.2.15:6443
    --token abcdef.0123456789abcdef
    --discovery-token-ca-cert-hash sha256:1234567890abcdef
  4. Install CNI Plugin: ``` kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    
    

KubeSphere Installation

  1. Install Helm: ``` curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
  2. Configure Tiller: ``` kubectl create serviceaccount tiller -n kube-system kubectl create clusterrolebinding tiller --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
  3. Deploy KubeSphere: ``` kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.1/kubesphere-installer.yaml kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.1/cluster-configuration.yaml
  4. Monitor Installation: ``` kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
    
    

YAML Configuraton Examples

Deployment Example

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:latest
        ports:
        - containerPort: 8080

Service Example

apiVersion: v1
kind: Service
metadata:
  name: myapp-service
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 8080
    nodePort: 30001
  selector:
    app: myapp

Ingress Example

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: myapp-ingress
spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: myapp-service
            port:
              number: 80
  ingressClassName: nginx

Tags: kubernetes kubeadm KubeSphere Helm containerization

Posted on Sun, 04 Oct 2026 16:26:20 +0000 by Fjerpje