在CentOS 7.6上使用Ansible安装Kubernetes集群可以大大简化部署过程并确保一致性。以下是通过Ansible安装Kubernetes的基本步骤:

前提条件

  1. 安装Ansible
    在你的Ansible控制节点(通常是你的本地机器或者一台专门用于管理的服务器)上安装Ansible。对于CentOS,你可以使用yum来安装Ansible。

    sudo yum install -y epel-release
    sudo yum install -y ansible python-netaddr
    
  2. 准备Inventory文件
    创建一个包含所有要部署为Kubernetes节点的主机列表的inventory文件,例如inventory.inihosts

    [kube-master]
    master-01.example.com
    
    [kube-node]
    node-01.example.com
    node-02.example.com
    node-03.example.com
    
    [k8s-cluster:children]
    kube-master
    kube-node
    
  3. 创建Ansible Playbook
    创建一个Ansible playbook,如k8s-install.yml,用来执行安装和配置Kubernetes所需的各个步骤,包括安装Docker、设置Kubernetes仓库、安装Kubernetes组件等。

    ---
    - name: Install and configure Kubernetes cluster
      hosts: k8s-cluster
      become: yes
    
      tasks:
      # 1. 安装 Docker CE
      - name: Install Docker
        package:
          name: docker-ce
          state: present
        
      # 2. 设置Docker 配置和服务启动
      - name: Start and enable Docker service
        service:
          name: docker
          enabled: yes
          state: started
    
      # 3. 添加 Kubernetes YUM 仓库
      - name: Add Kubernetes repository
        shell: "cat <<EOF > /etc/yum.repos.d/kubernetes.repo\n[kubernetes]\nname=Kubernetes\nbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64\nenabled=1\ngpgcheck=1\nrepo_gpgcheck=1\ngpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg\nEOF"
    
      # 4. 安装 Kubernetes 组件
      - name: Install Kubernetes components
        package:
          name: "{{ item }}"
          state: present
        with_items:
          - kubelet
          - kubeadm
          - kubectl
    
      # 5. 初始化 Master 节点
      - name: Initialize the master node (run this task only on kube-master group)
        command: kubeadm init --pod-network-cidr=10.244.0.0/16
        when: "'kube-master' in group_names"
        register: kubeadm_init_output
    
      # 6. 将初始化命令的输出保存到变量中,并执行后续的 join 命令
      - name: Save kubeadm join command
        set_fact:
          join_command: "{{ kubeadm_init_output.stdout_lines[-1] }}"
        when: "'kube-master' in group_names"
    
      # 7. 在Worker节点上运行join命令 (这通常会放在一个单独的play中针对kube-node组执行)
      # 注意:实际操作中可能需要编写一个handler任务,在Master初始化完成后再执行Worker节点的join操作
      # - name: Join worker nodes to the cluster
      #   command: "{{ join_command }}"
      #   when: "'kube-node' in group_names"
    
  4. 运行Ansible Playbook
    使用Ansible运行这个playbook。

    ansible-playbook k8s-install.yml -i inventory.ini
    
  5. 配置kubectl访问
    在Master节点上配置kubectl并将其配置复制到本地计算机。

    ssh root@master-01.example.com 'mkdir -p $HOME/.kube; sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config; sudo chown $(id -u):$(id -g) $HOME/.kube/config'
    
  6. 部署网络插件
    根据你的需求,选择合适的网络插件(如Calico、Flannel等),并根据其官方文档进行部署。

  7. 添加Worker节点
    在Ansible Playbook中执行join命令将Worker节点加入集群。

请注意,以上示例是一个简化的指南,实际部署时你可能需要根据具体的环境要求调整上述步骤,并且处理如证书、安全组规则等问题。此外,上述示例中的部分指令是直接在Ansible任务中执行的,而实际上更推荐使用Ansible模块来进行操作,以获得更好的可读性和稳定性。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐