优化Ubuntu上的Kubernetes(K8s)安装可以从多个方面进行,包括系统配置、网络设置、资源管理等。以下是一些关键的优化步骤和建议:
更新系统:确保系统包是最新的。
sudo apt-get update
sudo apt-get upgrade
安装Docker:在所有节点上安装Docker,这是运行Kubernetes集群的基础。
sudo apt-get install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
配置Docker镜像加速:编辑/etc/docker/daemon.json
文件,添加国内镜像加速地址。
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
重启Docker服务使配置生效。
sudo systemctl daemon-reload
sudo systemctl restart docker
安装Kubernetes组件:添加Kubernetes的GPG密钥和APT源,然后安装核心组件。
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb http://apt.kubernetes.io/ 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
禁用Swap:临时禁用并永久禁用Swap分区。
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
加载内核模块:加载必要的内核模块,如overlay
和br_netfilter
。
sudo modprobe overlay
sudo modprobe br_netfilter
将上述命令添加到/etc/modules-load.d/k8s.conf
文件中。
设置sysctl参数:启用IP转发和网络功能。
sudo sysctl -w net.bridge.bridge-nf-call-iptables=1
sudo sysctl -w net.bridge.bridge-nf-call-ip6tables=1
sudo sysctl -w net.ipv4.ip_forward=1
将上述设置添加到/etc/sysctl.d/k8s.conf
文件中。
节点配额和内核参数调整:根据节点数量调整资源配置。
# 示例配置
--max-file 1000000
net.ipv4.neigh.default.gc_thresh1 11024
net.ipv4.neigh.default.gc_thresh2 24096
net.ipv4.neigh.default.gc_thresh3 38192
net.netfilter.nf_conntrack_max 10485760
net.core.netdev_max_backlog 10000
net.netfilter.nf_conntrack_tcp_timeout_established 300
net.netfilter.nf_conntrack_buckets 655360
使用高性能网络插件:如Calico或Cilium。
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
配置CNI插件:在每个节点上配置CNI插件,以确保Pod之间和与外部网络的通信。
通过上述步骤和建议,您可以显著提升在Ubuntu上运行的Kubernetes集群的性能和稳定性。