部署安装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 服务。

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

被折叠的 条评论
为什么被折叠?



