部署安装kubeadm和kubelet

本文介绍如何通过Ansible部署Kubeadm和Kubelet,并配置Kubernetes仓库,实现自动化安装流程。针对Master和Node节点,详细解释了kubelet配置文件的生成方式及其启动过程。

部署安装kubeadm和kubelet

创建一个repo文件

1 | cd /etc/yum.repos.d
2 | cat kubernetes.repo

内容如下

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
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/rpm-package-key.gpg

使用ansible部署

---
- name: Deploy  kubeadm  kubelet kubectl
  hosts: all
  gather_facts: no
  vars:
    pkg_dir: /kubeadm-pkg
    pkg_names: ["kubelet", "kubeadm", "kubectl"]

    # 变量 download_host 需要手动设置
    # 且值需要是此 playbook 目标主机中的一个
    # 需要写在 inventory 文件中的名称
    download_host: "k8s-master"
    local_pkg_dir: "{{ playbook_dir }}/{{ download_host }}"

  tasks:
    - name: 测试使用 -e 是否设置并覆盖了变量
      debug:
        msg: "{{ local_pkg_dir }} {{ download_host }}"
      tags:
        - deploy
        - test

    - name: "只需要给 {{ download_host }}安装仓库文件"
      when: inventory_hostname == download_host
      copy:
        src: /etc/yum.repos.d/kubernetes.repo
        dest: /etc/yum.repos.d/kubernetes.repo
      tags:
        - deploy

    - name: 创建存放 rmp 包的目录
      when: inventory_hostname == download_host
      file:
        path: "{{ pkg_dir }}"
        state: directory
      tags:
        - deploy

    - name:  下载软件包
      when: inventory_hostname == download_host
      yum:
        name: "{{ pkg_names }}"
        download_only: yes
        download_dir: "{{ pkg_dir }}"
      tags:
        - deploy

    - name: 获取下载目录 "{{ pkg_dir }}" 中的文件列表
      when: inventory_hostname == download_host
      shell: ls -1 "{{ pkg_dir }}"
      register: files
      tags:
        - deploy

    - name: 把远程主机下载的软件包传输到 ansible 本地
      when: inventory_hostname == download_host
      fetch:
        src: "{{ pkg_dir }}/{{ item }}"
        dest: ./
      loop: "{{files.stdout_lines}}"
      tags:
        - deploy

    - name: 传输 rpm 包到远程节点
      when: inventory_hostname != download_host
      copy:
        src: "{{ local_pkg_dir }}{{ pkg_dir }}"
        dest: "/"
      tags:
        - deploy

    - name: 正在执行从本地安装软件包
      shell:
        cmd: yum -y localinstall *
        chdir: "{{ pkg_dir }}"
        warn: no
      async: 600
      poll: 0
      register: yum_info
      tags:
        - deploy

    - name: 打印安装结果
      debug: var=yum_info.ansible_job_id
      tags:
        - deploy
    - name:
      systemd:
        name: kubelet
        state: started
      tags:
        - start
...

执行这段代码 如果出现如下错误
在这里插入图片描述
创建一个目录

1 | mkdir -p /etc/root/host/docker/master/kubeadm-pkg

执行

1 | ansible-playbook -i hosts docker/deploy-kubeadm.yml

报如下错误
在这里插入图片描述
请执行命令

1 | ansible-playbook -i hosts docker/deploy-kubeadm.yml -t deploy
2 | ansible-playbook -i hosts docker/deploy-kubeadm.yml -t start

显示如下,表示安装成功
在这里插入图片描述

关于 Kubelet 服务

对于此文档中使用的 kubernetes1.20.4 版本, kubelet 已经取消了

/etc/sysconfig/kubelet 文件中的 KUBELET_EXTRA_ARGS 变量。

将会使用 /var/lib/kubelet/config.yaml 文件作为 kubelet 的配置文件,
kubelet 将会依照此配置文件进行启动。

kubelet 配置文件的产生
此文件默认是没有的

对于 master 节点,会在集群初始化的过程中生成,生成后初始化程序会自动启动 kubelet 服务。

对于 node 节点,会在将节点加入到集群中生成,生成后会自从启动kubelet 服务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值