# 禁用交换空间 (K8S 1.8+要求)
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 调整内核参数
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
# 设置正确的时区
sudo timedatectl set-timezone Your_Timezone
# 安装 containerd
sudo apt-get update && sudo apt-get install -y containerd
# 配置 containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
# 修改配置以使用 systemd cgroup 驱动
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
# 重启 containerd
sudo systemctl restart containerd
sudo systemctl enable containerd
# 添加阿里云K8S源
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
# 安装指定版本 (推荐使用稳定版本)
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
sudo kubeadm init \
--pod-network-cidr=10.244.0.0/16 \
--apiserver-advertise-address=<your-node-ip> \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.28.0 \
--service-cidr=10.96.0.0/12 \
--control-plane-endpoint=<load-balancer-ip-or-dns> \
--upload-certs
推荐使用 Calico 或 Cilium 以获得更好的性能和网络策略支持:
# 安装 Calico
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
# 或安装 Cilium
helm repo add cilium https://helm.cilium.io/
helm install cilium cilium/cilium --version 1.14.0 --namespace kube-system
# 编辑 /etc/default/kubelet 添加
KUBELET_EXTRA_ARGS="--max-pods=110 --kube-reserved=cpu=500m,memory=500Mi --system-reserved=cpu=500m,memory=500Mi"
# 配置日志轮转
sudo cat <<EOF | sudo tee /etc/logrotate.d/kubernetes
/var/log/kubelet.log
/var/log/kube-proxy.log {
rotate 7
daily
compress
missingok
notifempty
copytruncate
}
EOF
启用 metrics-server 用于资源监控
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
配置集群自动扩展 (CA) 用于生产环境
设置资源配额和限制 防止资源耗尽
定期备份 etcd 数据
启用 RBAC 进行细粒度访问控制
kubectl get nodes -o wide
kubectl get pods --all-namespaces
kubectl cluster-info
通过以上优化步骤,您将获得一个性能更好、更稳定的 Kubernetes 集群。根据您的具体环境和需求,可能还需要进行额外的调优。