Kubernetes

Kubernetes

裸机搭建 Kubernetes

  1. 初始化 Kubernetes
    1
    2
    3
    4
    5
    6
    sudo swapoff -a
    sudo systemctl start kubelet
    sudo kubeadm init --control-plane-endpoint=main --pod-network-cidr=10.244.0.0/16
    cp /etc/kubernetes/admin.conf ~/.kube/config
    # 如果出错使用下列命令重置
    sudo kubeadm reset
  2. 安装 cilium
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    helm upgrade cilium cilium/cilium \
    --namespace kube-system \
    --reuse-values \
    --set kubeProxyReplacement=true \
    --set l2announcements.enabled=true \
    --set k8sClientRateLimit.qps=10 \
    --set k8sClientRateLimit.burst=20 \
    --set kubeProxyReplacement=true \
    --set k8sServiceHost="k8s.local" \
    --set k8sServicePort=6443 \
    # --set devices= \
    --set externalIPs.enabled=true
  3. 安装 Dashboard
    1
    2
    helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
    helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard
  4. 移除主节点的 NoSchedule taint
    1
    kubectl taint nodes xwd node-role.kubernetes.io/control-plane:NoSchedule-
  5. 创建 root 用户并绑定最高权限
    1
    2
    kubectl create serviceaccount root
    kubectl create clusterrolebinding rootBind --clusterrole=cluster-admin --serviceaccount=default:root
  6. 生成 root 用户登录 Dashboard 的 Token,并开放 Dashboard 本地访问
    1
    kubectl create token root && kubectl port-forward -n kubernetes-dashboard svc/kubernetes-dashboard-kong-proxy 8443:443

常用命令

1
2
3
4
kubectl get nodes 
kubectl get pods -A
kubectl describe pod -n <namespace> <pod name> #查看 pod 的部署 log
kubectl logs -n <namespace> <pod name> #查看 pod 内容器的 log

更换 CA 证书

  1. /etc/kubernetes/pki目录下的所有根证书替换为新的根证书
  2. 执行命令sudo kubeadm certs renew all
  3. 替换/etc/kubernetes/kubelet.conf文件内的certificate-authority-data为新的根证书(该字段为 pem 文件的 base64 编码)
  4. 软链接/var/lib/kubelet/pki/kubelet-client-current.pem为 kubeadm 新生成的apiserver-kubelet-client的证书和密钥

有用的链接

Containerd 版本兼容表