centos

k8s部署在centos上的最佳实践

小樊
32
2025-06-10 14:38:58
栏目: 智能运维

在CentOS上部署Kubernetes(K8s)集群时,遵循最佳实践是确保集群的高可用性、安全性和性能的关键。以下是一些关键的最佳实践:

环境准备

  1. 操作系统要求:确保操作系统为CentOS 7或更高版本,至少2个CPU核心和2GB内存。
  2. 关闭防火墙和SELinux:以减少安全漏洞。
    systemctl stop firewalld
    systemctl disable firewalld
    sed -i 's/enforcing/disabled/' /etc/selinux/config
    setenforce 0
    
  3. 配置时间同步:安装并配置NTP服务,确保所有节点的时间一致。
    yum install ntpdate
    ntpdate time.windows.com
    
  4. 禁用Swap:禁用Swap分区,以提高系统性能。
    swapoff -a
    sed -i '/swap/s/.*/#&/' /etc/fstab
    
  5. 设置主机名:为每个节点设置唯一的主机名。
    hostnamectl set-hostname hostname
    

安装Docker

  1. 安装依赖包
    yum install -y yum-utils device-mapper-persistent-data lvm2
    
  2. 配置Docker源:使用国内的镜像源以加快下载速度。
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
  3. 安装Docker
    yum install -y docker-ce docker-ce-cli containerd.io
    systemctl start docker
    systemctl enable docker
    

安装Kubernetes组件

  1. 配置Kubernetes源
    cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyuncs.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    enabled=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://mirrors.aliyuncs.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyuncs.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
    
  2. 安装kubelet、kubeadm和kubectl
    yum install -y kubelet kubeadm kubectl
    systemctl enable kubelet
    systemctl start kubelet
    

初始化Master节点

  1. 初始化Master节点
    kubeadm init --apiserver-advertise-address master-ip --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.22.15 --service-cidr 10.96.0.0/12 --pod-network-cidr 10.244.0.0/16 --ignore-preflight-errors all
    
  2. 配置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节点

  1. 获取加入命令:初始化完成后,Master节点会输出加入Node节点的命令。
    kubeadm join master-ip:6443 --token token --discovery-token-ca-cert-hash sha256:hash
    

部署CNI网络插件

  1. 部署Calico
    kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    

监控和日志管理

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

故障排查

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

内核参数优化

  1. 优化内核参数:修改 /etc/sysctl.d/k8s.conf 文件,添加必要的内核参数以优化网络性能。
    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.bridge.bridge-nf-call-ip6tables 1
    net.bridge.bridge-nf-call-iptables 1
    net.netfilter.nf_conntrack_max 2310720
    

通过遵循上述最佳实践,您可以在CentOS上成功部署并运行一个高效、可靠的Kubernetes集群。

0
看了该问题的人还看了