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
  1. 安装 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
  1. 安装 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
  1. 移除主节点的 NoSchedule taint
1
kubectl taint nodes xwd node-role.kubernetes.io/control-plane:NoSchedule-
  1. 创建 root 用户并绑定最高权限
1
2
kubectl create serviceaccount root
kubectl create clusterrolebinding rootBind --clusterrole=cluster-admin --serviceaccount=default:root
  1. 生成 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 版本兼容表