debian

K8s能否通过脚本自动化安装在Debian上

小樊
42
2025-04-28 09:24:16
栏目: 智能运维

是的,Kubernetes(K8s)可以通过脚本在Debian上进行自动化安装。以下是一个基本的步骤指南,展示了如何使用脚本在Debian上自动化安装Kubernetes集群:

准备工作

安装步骤

  1. 设置主机名和更新hosts文件:在每个节点上设置主机名,并在/etc/hosts文件中添加节点IP和主机名的映射。
  2. 关闭所有节点的swap分区:禁用swap分区以确保kubelet顺利运行。
  3. 为K8s集群添加防火墙规则:允许必要的端口,如6443/tcp、2379/tcp、2380/tcp等。
  4. 安装containerd运行时:设置内核参数并安装containerd。
  5. 安装Kubernetes工具:添加Kubernetes apt仓库并安装kubelet、kubeadm和kubectl。
  6. 初始化Kubernetes集群:在主控节点上执行kubeadm init命令。
  7. 配置kubectl:配置kubectl访问权限。
  8. 安装网络插件(可选):例如,安装Calico网络插件。

自动化部署脚本示例

以下是一个使用Ansible实现Kubernetes自动化部署的简单示例:

#!/bin/bash

# 定义要部署的Debian主机列表
hosts=("host1" "host2" "host3")
new_node="host4"

# 在master主机上获取token和hash值的函数
get_token_and_hash() {
    token=$(ssh master "sudo kubeadm token create --print-join-command" | awk '{print $5}')
    hash=$(ssh master "openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst")
}

# 安装Ansible
sudo apt install -y ansible

# 创建Ansible Playbook (例如 deploy-kubernetes.yml)
cat <<EOF > deploy-kubernetes.yml
---
- name: Deploy Kubernetes on Debian
  hosts: all
  become: yes
  tasks:
    - name: Update apt cache
      apt: update_cache: yes
    - name: Install Docker
      apt: name: docker.io state: present
    - name: Disable Swap
      lineinfile:
        path: /etc/fstab
        line: '# swap swap swap defaults 0 0'
        backup: yes
    - name: Configure kernel parameters
      lineinfile:
        path: /etc/sysctl.d/99-kubernetes-k8s.conf
        line: 'net.bridge.bridge-nf-call-iptables  1'
        backup: yes
    - name: Install containerd
      apt: name: containerd state: present
    - name: Add Kubernetes APT repository
      apt:
        name: apt-transport-https ca-certificates curl
        state: present
        update_cache: yes
        install_packages:
          - curl - lsb-release - gnupg - software-properties-common
        post_invoke: /usr/bin/apt-key adv --keyserver keyserver.ubuntu.com --recv-key C99B11DEB97541F0
        create_file:
          path: /etc/apt/sources.list.d/kubernetes.list
    - name: Install kubelet kubeadm and kubectl
      apt:
        name: kubelet kubeadm kubectl
        state: present
    - name: Initialize Kubernetes cluster
      command: kubeadm init --pod-network-cidr 10.244.0.0/16
EOF

# 使用Ansible Playbook进行部署
ansible-playbook deploy-kubernetes.yml

请注意,以上脚本是一个基本示例,实际部署时可能需要根据具体需求进行调整。建议参考最新的官方文档以获取最准确的信息。

0
看了该问题的人还看了