Setup control plane

Setup Cluster K3S Without Flannel we use Calico as CNI

curl -sfL https://get.k3s.io |  INSTALL_K3S_VERSION=v1.27.3+k3s1 sh -s - server --cluster-init --tls-san 10.10.10.59 --flannel-backend=none --disable-network-policy

get token

cat /var/lib/rancher/k3s/server/token

example token

qwertyuiop

Setup other control plane

curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.27.3+k3s1 sh -s - server --server https://10.10.10.59:6443 --token "qwertyuiop" --tls-san 10.10.10.59 --flannel-backend=none --disable-network-policy

Setup worker node

curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.27.3+k3s1 sh -s - agent --server https://10.10.10.59:6443 --token "qwertyuiop"

Install Addon on cluster

Worker Label

Add worker label

kubectl label node worker1 node-role.kubernetes.io/worker=worker
kubectl label node worker2 node-role.kubernetes.io/worker=worker
kubectl label node worker3 node-role.kubernetes.io/worker=worker

Calico

Calico Operator

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/tigera-operator.yaml
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/custom-resources.yaml

Dashboard

Deploy Dashboard

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

Expose Dashboard

kubectl get all -n kubernetes-dashboard
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard

Access Dashboard

https://10.10.10.28:32224

Create Dashboard Admin User

vim dashboard.admin-user.yml

Edit

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard

Create Dashboard Admin Role

dashboard.admin-user-role.yml

Edit

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard

Deploy

kubectl apply -f .

Generate Token

kubectl -n kubernetes-dashboard create token admin-user

Opsional

Reset Cluster

on server

/usr/local/bin/k3s-uninstall.sh

on agent

/usr/local/bin/k3s-agent-uninstall.sh

Change Cluster Name

config file k3s

vim k3s.yml

edit

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://10.10.10.59:6443
  name: cluster2
contexts:
- context:
    cluster: cluster2
    user: admin-cluster2
  name: admin
current-context: admin
kind: Config
preferences: {}
users:
- name: admin-cluster2
  user:
    client-certificate-data: DATA+OMITTED
    client-key-data: DATA+OMITTED

check cluster config

kubectl config view
kubectl config get-contexts

Access Multi Cluster

create new kubeconfig file

vim cluster-config

edit

apiVersion: v1
kind: Config
preferences: {}

clusters:
- cluster:
  name: cluster1
- cluster:
  name: cluster2

users:
- name: admin-cluster1
- name: admin-cluster2

contexts:
- context:
  name: cluster1-management
- context:
  name: cluster2-management

set cluster

kubectl config --kubeconfig=cluster-config set-cluster cluster1 --server https://ip-cluster1:6443 --certificate-authority-data=zzzz
kubectl config --kubeconfig=cluster-config set-cluster cluster2 --server https://ip-cluster2:6443 --certificate-authority-data=zzzz

set credentials

kubectl config --kubeconfig=cluster-config set-credentials admin-cluster1 --client-certificate-data=zzzzz --client-key-data=zzzzz
kubectl config --kubeconfig=cluster-config set-credentials admin-cluster2 --client-certificate-data=zzzzz --client-key-data=zzzzz

set contexts

kubectl config --kubeconfig=cluster-config set-contexts cluster1-management
kubectl config --kubeconfig=cluster-config set-contexts cluster2-management

verify

kubectl config --kubeconfig=cluster-config view
kubectl config --kubeconfig=cluster-config get-contexts

use context

kubectl config --kubeconfig=cluster-config use-context cluster1-management
kubectl config --kubeconfig=cluster-config use-context cluster2-management

Connect Private Registry

login private registry

docker login https://url-registry

view registry credentials config

cat $HOME/.docker/config.json

create secret from registry credentials config

kubectl  create secret generic private-connect --from-file=.dockerconfigjson=$HOME/.docker/config.json --type=kubernetes.io/dockerconfigjson

create deployment with registry credentials config

vim deployment.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sample-apps-nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: ct-nginx
        image: url-registry/local/nginx
        ports:
        - containerPort: 80
      imagePullSecrets:
        - name: private-connect

By admin

Leave a Reply

Your email address will not be published. Required fields are marked *