温馨提示×

k8s在centos上的最佳安装实践

小樊
55
2025-07-17 00:40:43
栏目: 智能运维

在CentOS上安装Kubernetes(k8s)时,遵循最佳实践是确保集群高效、安全和稳定的关键。以下是一些关键的最佳实践:

环境准备

  • 关闭防火墙:在所有节点上关闭防火墙,以允许Kubernetes组件之间的通信。
    systemctl stop firewalld
    systemctl disable firewalld
    
  • 关闭SELinux:将SELinux设置为permissive模式,以减少对Kubernetes操作的限制。
    sed -i 's/enforcing/disabled/' /etc/selinux/config
    setenforce 0
    
  • 关闭Swap:禁用Swap分区,以提高系统性能。
    swapoff -a
    sed -i 's/.*swap.*/#&/' /etc/fstab
    
  • 设置主机名:为每个节点设置唯一的主机名。
    hostnamectl set-hostname <hostname>
    
  • 配置网络:确保所有节点的IP地址设置为静态IP,并在master节点上配置iptables规则。
    cat /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward = 1
    sysctl --system
    
  • 时间同步:配置所有节点的时间同步,避免因时间不同步导致的问题。
    yum install ntpdate
    ntpdate ntp.aliyun.com
    

安装Docker

  • 安装依赖包:安装必要的软件包。
    yum install -y yum-utils device-mapper-persistent-data lvm2
    
  • 添加Docker源:配置Docker镜像加速。
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
  • 安装Docker:在所有节点上安装Docker,并确保版本兼容。
    yum install -y docker-ce docker-ce-cli containerd.io
    systemctl start docker
    systemctl enable docker
    

安装Kubernetes组件

  • 添加Kubernetes源:添加Kubernetes官方仓库,以便下载所需的软件包。
    cat > /etc/yum.repos.d/kubernetes.repo << EOF
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    enabled=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
    EOF
    
  • 安装kubelet、kubeadm和kubectl:在所有节点上安装kubelet、kubeadm和kubectl。
    yum install -y kubelet kubeadm kubectl --nogpgcheck
    systemctl enable kubelet
    systemctl start kubelet
    

初始化Master节点

  • 初始化Master节点:在Master节点上初始化Kubernetes集群。
    kubeadm init --apiserver-advertise-address <master-ip> --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.26.0 --pod-network-cidr 10.244.0.0/16
    
  • 配置kubectl:将kubectl配置文件复制到本地,以便在本地管理集群。
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    

加入Worker节点

  • 加入Worker节点:在所有worker节点上运行kubeadm join命令,加入集群。
    kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
    

部署CNI网络插件

  • 部署Calico或其他CNI网络插件:以支持Pod之间的通信。
    kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    

监控和日志

  • 监控集群状态:使用 kubectl get nodeskubectl get pods --all-namespaces 等命令监控集群状态。
  • 查看事件日志:使用 kubectl get events 查看集群事件日志。
  • 检查Pod日志:使用 kubectl logs pod-name -c container-name 查看Pod日志。

故障排查

  • 审视集群状态:检查节点状态,确保基本组件正常运行。
  • 追踪事件日志:通过事件日志了解集群中的重要事件和错误。
  • 聚焦Pod状态:检查Pod状态,排查容器或应用程序相关的问题。
  • 检查网络连通性:确保服务、Pod和节点之间的网络通信正常。
  • 审视存储配置:检查存储卷声明、存储类和持久卷的状态。
  • 研究容器日志:深入容器的日志,提供关于应用程序故障的重要线索。

内核参数优化

  • 优化内核参数:以提高系统性能和稳定性。
    net.ipv4.tcp_keepalive_time 600
    net.ipv4.tcp_keepalive_intvl 30
    net.ipv4.tcp_keepalive_probes 10
    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv4.neigh.default.gc_stale_time = 120
    net.ipv4.conf.all.rp_filter = 0
    net.ipv4.ip_local_port_range = 45001 65000
    net.ipv4.ip_forward = 1
    net.ipv4.tcp_max_tw_buckets = 6000
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_synack_retries = 2
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.netfilter.nf_conntrack_max = 2310720
    

通过遵循上述最佳实践,您可以确保在CentOS上部署的Kubernetes集群既稳定又高效。建议在实际部署前,参考官方文档进行详细的规划和测试。

0