快速搭建k8s环境

快速搭建k8s环境

步骤简述

  1. 准备基础系统环境
  2. 准备相关镜像
  3. 安装 containerd 和 kubeadm
  4. 准备 etcd
  5. 准备相关集群初始化文件
  6. kubeadm init 初始化
  7. 加入新节点
  8. 安装网络插件
  9. 安装其它非核心组件
  10. 部署一个服务

注意如果参考本文部署,请修改各配置文件的镜像仓库为自己的地址;

1. 准备环境

参考本站另一篇文章 环境准备文档

2. 准备外部etcd环境

参考本站另一篇文章 etcd部署

3. 准备相关镜像

多种办法获取镜像

方法一: 从各种镜像站下载

方法二: 直接在 github 下载提供的 server 二进制文件包, 解压后里面就带了主要的镜像

如果没有私有仓库, 就提前导入到各节点; 但是推荐上传到私有仓库去, 方便后续维护;

4. 安装 containerd

先准备 containerd 的配置文件,文件太长, 这里暂时不贴了, 可以点击此链接下载
下载 config.toml

可以使用命令生成默认的配置文件 containerd config default > /etc/containerd/config.toml

然后进行自定义修改; 主要修改内容

  1. 修改 cgroup 为 systemd
  2. 增加私有仓库
  3. 修改 sandbox_image 沙盒镜像的仓库路径

安装程序

cri-containerd-1.6.14-linux-amd64.tar.gz

tar xf cri-containerd-1.6.14-linux-amd64.tar.gz -C /

删除默认的 cni 插件配置文件, 这个是桥接的配置, 会导致初始化时启动的容器获取到错误的地址;
rm -f /etc/cni/net.d/10-containerd-net.conflist

拷贝主配置文件内容
/etc/containerd/config.toml

systemctl enable containerd --now
systemctl restart containerd

5. kubeadm 安装

方法一: 使用官方的 yum 仓库,然后 yum 安装;

yum install -y kubelet kubeadm kubectl socat conntrack-tools

方法二: 直接上传需要使用的 3 个二进制文件, kubelet, kubeadm, kubectl; 然后配置相关 systemd 单元文件和配置文件;

此处采用方法二, 也更推荐方法二

# 先创建相关目录\
mkdir -p /opt/k8s/bin

mkdir -p /etc/systemd/system/kubelet.service.d \
mkdir -p /etc/kubernetes/manifests

# 上传 3 个二进制文件
/opt/k8s/bin/kubelet
/opt/k8s/bin/kubeadm
/opt/k8s/bin/kubectl

kubelet 的 systemd 文件 /usr/lib/systemd/system/kubelet.service 下载 kubelet.service

用于传递参数给 kubelet 的 systemd 文件 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf 下载 10-kubeadm.conf

systemctl daemon-reload systemctl enable kubelet –now

6. 准备初始化配置文件

kubeadm-config.yml
文件太长, 这里暂时不贴了, 可以点击此链接下载
下载 kubeadm-config.yml


初始化

  1. 提前拉取镜像 kubeadm config images pull –config kubeadm-config.yml

  2. 第一个节点初始化 kubeadm init –config=kubeadm-config.yml

  3. 上传密钥 避免后面新增节点时再来回拷贝证书文件 kubeadm init phase upload-certs –upload-certs –config kubeadm-config.yml

此时已经完成核心组件部分的安装

安装网络插件 calico

也就一条命令 配置文件需要修改一下,主要就是仓库镜像位置和自己的网段信息

- name: CALICO_IPV4POOL_CIDR
    value: "10.20.0.0/16"

kubectl apply -f calico.yaml

下载 calico.yaml

部署第一个服务

简述:

  1. 创建一个 命名空间
  2. 创建一个 services
  3. 创建一个 Deployment 发布
  4. 通过 nodePort 暴露端口

kubectl apply -f baseweb.yaml

下载 baseweb.yaml

后面找时间再来慢慢补内容;

PS: 个人站点就这点好处,方便时随时可以改,不用太顾及什么。 以前写公众号或博客,总想要完美,于是始终走不出去。 就如同那句“我每次登台表演时都想着要一炮而红,于是我从没有上过舞台!” 好东西自然也是可以逐步迭代出来的。

最后更新于