引言

Kubernetes(简称K8s)是一个开源的容器编排平台,它可以帮助您自动化容器的部署、扩展和管理。裸机部署K8s意味着您不需要依赖虚拟化技术,直接在物理服务器上部署和运行K8s集群。这种部署方式具有更高的性能和更低的资源开销。本文将详细介绍如何在裸机上部署K8s集群,并对其进行优化。

准备工作

在开始部署之前,您需要准备以下资源:

  • 物理服务器或云服务器
  • 操作系统(如CentOS、Ubuntu等)
  • 网络配置工具(如ifconfig、ip等)
  • 软件包管理器(如yum、apt等)

部署步骤

1. 系统初始化

  • 更新系统:确保系统是最新的,以便安装最新的软件包。
    
    sudo yum update
    
  • 关闭防火墙:K8s集群需要端口映射和通信,因此需要关闭防火墙。
    
    sudo systemctl stop firewalld
    sudo systemctl disable firewalld
    
  • 设置主机名:为每台服务器设置一个主机名,方便后续操作。
    
    sudo hostnamectl set-hostname <hostname>
    

2. 安装Docker

K8s集群需要Docker来运行容器,因此需要先安装Docker。

  • 安装Docker:根据您的操作系统选择相应的安装命令。
    • 对于CentOS:
    sudo yum install -y yum-utils
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    sudo yum install -y docker-ce docker-ce-cli containerd.io
    sudo systemctl start docker
    sudo systemctl enable docker
    
    • 对于Ubuntu:
    sudo apt-get update
    sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    sudo apt-get update
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io
    sudo systemctl start docker
    sudo systemctl enable docker
    

3. 安装Kubeadm、Kubelet和Kubectl

Kubeadm、Kubelet和Kubectl是K8s集群的基本组件。

  • 添加Kubernetes仓库
    
    cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-\$basearch
    enabled=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/keys.txt
    EOF
    
  • 安装kubeadm、kubelet和kubectl
    
    sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubelet
    sudo systemctl start kubelet
    sudo systemctl enable kubelet
    

4. 初始化Master节点

在Master节点上执行以下命令初始化K8s集群。

  • 初始化Master节点
    
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    
  • 获取kubectl配置
    
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    

5. 安装Pod网络插件

选择一个Pod网络插件(如Calico、Flannel等)来设置集群的网络。

  • 安装Calico
    
    kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    

6. 部署Worker节点

在Worker节点上执行以下命令加入集群。

  • 加入Worker节点
    
    sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
    

7. 验证集群状态

在Master节点上执行以下命令验证集群状态。

  • 查看集群状态
    
    kubectl get nodes
    

优化建议

  • 资源限制:为K8s组件设置资源限制,避免单点故障。
  • 日志管理:使用ELK(Elasticsearch、Logstash、Kibana)等工具进行日志收集和管理。
  • 监控:使用Prometheus和Grafana等工具进行集群监控。
  • 备份:定期备份集群配置和重要数据。

总结

本文详细介绍了在裸机上部署K8s集群的步骤和优化建议。通过遵循上述步骤,您可以轻松搭建一个高可用、高性能的K8s集群。希望本文对您有所帮助!