centos

k8s部署在centos上如何实现自动化

小樊
46
2025-04-06 22:27:23
栏目: 智能运维

在CentOS上自动化部署Kubernetes(k8s)集群可以通过多种方法实现,包括使用配置管理工具(如Ansible、Puppet、Chef)、脚本自动化以及容器编排工具(如kubeadm)。以下是一些常见的方法和步骤:

使用kubeadm工具自动化部署

kubeadm是一个用于初始化Kubernetes控制平面和添加工作节点的工具。以下是一个基本的自动化部署步骤:

  1. 准备工作
  1. 安装Docker
  1. 安装kubelet、kubeadm和kubectl
  1. 初始化Master节点
  1. 加入Worker节点
  1. 安装网络插件

使用自动化脚本

可以编写一个自动化脚本来执行上述步骤。以下是一个简单的示例脚本:

#!/bin/bash

# 环境配置
echo "配置环境..."
hostnamectl set-hostname $1
sed -i 's/SELINUX.*/SELINUXdisabled/' /etc/selinux/config
sed -i '/swap/s///#/g' /etc/fstab
yum -y install ca-certificates curl

# 安装Docker
echo "安装Docker..."
yum -y install docker-ce docker-ce-cli containerd.io
systemctl enable docker
systemctl start docker

# 修改Docker的cgroup driver
echo "修改Docker的cgroup driver..."
mkdir -p /etc/docker
cat <<EOF > /etc/docker/daemon.json
{
  "registry-mirrors": ["https://mirrors.aliyun.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

# 安装Kubernetes组件
echo "安装Kubernetes组件..."
yum -y install kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable kubelet && systemctl start kubelet
kubectl version

# 初始化Master节点
echo "初始化Master节点..."
kubeadm init --apiserver-advertise-address=xxx.xxx.xxx.xxx --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16

# 加入Worker节点
echo "加入Worker节点..."
kubeadm join xxx.xxx.xxx.xxx:xxxx --token=xxxx --discovery-token-ca-cert-hash=sha256:xxxx

使用配置管理工具

配置管理工具如Ansible可以更灵活地管理和部署Kubernetes集群。以下是一个使用Ansible的简单示例:

  1. 安装Ansible
yum -y install ansible
  1. 创建Ansible Playbook
---
- name: Deploy Kubernetes on CentOS
  hosts: all
  become: yes

  tasks:
    - name: Configure hosts
      lineinfile:
        path: /etc/hosts
        line: "{{ item.1 }}"
        state: present
      with_items:
        - "192.168.1.100 k8s-master"
        - "192.168.1.101 k8s-node1"
        - "192.168.1.102 k8s-node2"

    - name: Disable firewalld and SELinux
      lineinfile:
        path: /etc/selinux/config
        line: "SELINUX=disabled"
        state: present
      when: ansible_facts['os_family'] == "RedHat"

    - name: Disable Swap
      lineinfile:
        path: /etc/fstab
        line: "/dev/mapper/centos-swap swap swap defaults 0 0"
        state: absent

    - name: Install Docker
      yum:
        name: docker
        state: present

    - name: Install Kubernetes packages
      yum:
        name: kubelet kubeadm kubectl
        state: present

    - name: Initialize Master node
      command: kubeadm init --apiserver-advertise-address={{ inventory_hostname }} --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16
      args:
        chdir: /root

    - name: Join Worker nodes
      command: kubeadm join {{ inventory_hostname }}:6443 --token={{ lookup('file', '/etc/kubernetes/admin.conf') | base64decode }} --discovery-token-ca-cert-hash=sha256:{{ lookup('file', '/etc/kubernetes/admin.conf') | base64decode | hash('sha256') }}
      args:
        chdir: /root
  1. 执行Ansible Playbook
ansible-playbook -i hosts deploy_kubernetes.yml

通过上述方法,您可以在CentOS上实现Kubernetes集群的自动化部署。选择哪种方法取决于您的具体需求和环境。

0
看了该问题的人还看了