k8s 集群部署尝试

作者: 阿兵云原生 | 来源:发表于2023-06-16 12:13 被阅读0次

    [图片上传失败...(image-77165f-1686974878507)]

    K8S 部署方式有很多,有的方式不太友好,需要注意很多关键点,有的方式对小白比较友好,部署简单方便且高效

    二进制源码包的部署方式

    使用 二进制源码包的方式部署会比较麻烦,大概分为如下几步:

    • 获取源码包
    • 部署在 master 节点和 worker 节点上
    • 启动相应节点的关键服务

    master 节点上

    api-server ,分布式存储 例如 etcd,scheduler,controller manager

    woker 节点上

    kubelet,kube-proxy,docker

    在 K8S 中,各个组件之间互相访问都是建议通过证书进行访问的,所以我们也需要生成相应的证书

    • 生成证书

    例如 HTTP 的,HTTPS 的

    涉及的组件和工具比较多,我们可以后续对 K8S 比较熟之后,再来尝试源码包的方式

    使用 kubeadm 方式部署

    官方是推荐使用 minikube 来部署,其实他也是通过 kubeadm 来部署的,使用 kubeadm 的部署方式就相对简单,不过步骤也是不少,有:

    • 需要安装 kube 对应的软件,kubelet,kubeadm,kubectl
    • 初始化整个 K8S 集群
    • 添加节点到集群中

    执行上述 3 步,我们就可以将 K8S 集群搭建部署起来

    • 生成证书是自动的,不需要我们去干预
    • master 节点是用来管理集群容器的,所有的容器都是运行在 master 节点中,worker 节点是用来执行任务的
    • 关于容器镜像的获取

    我们可以直接通过谷歌下载镜像,或者是通过国内阿里云来下载镜像

    点我查看 kubeadm

    [图片上传失败...(image-464791-1686974878507)]

    [图片上传失败...(image-15e5ca-1686974878507)]

    基础环境准备

    准备 3 台虚拟机,买云服务器也是可以的,定义好主机名

    • master
    • node1
    • node2

    可以这么设置主机名

    hostnamectl set-hostname master

    hostnamectl set-hostname node1

    hostnamectl set-hostname node2

    可以通过 hostname 查看主机名

    # hostname
    master
    

    安装 docker

    可以查看我之前的 docker 文章 【Docker 系列】docker 学习 一,Docker的安装使用及Docker的基

    [图片上传失败...(image-d9c627-1686974878507)]

    需保证 master 节点和 worker 节点的 docker 版本一致,如:

    [图片上传失败...(image-eacd18-1686974878507)]

    需要关闭防火墙

    // 查看防火墙的当前状态
    sudo ufw status
    
    // 启用和禁用防火墙
    sudo ufw enable
    sudo ufw disable
    
    // 禁用防火墙并删除所有防火墙规则
    sudo ufw reset
    

    关闭 selinux

    sudo setenforce 0 
    或者
    vim /etc/selinux/config
    将 SELINUX 设置为 permissive
    

    禁用 swap

    sudo swapoff -a
    

    安装 kubeadm 等工具

    点我查看参考地址

    [图片上传失败...(image-42fba-1686974878507)]

    开始安装 kubeadm、kubelet、kubectl 工具

    • 先安装 k8s 的源文件
    sudo apt-get update && sudo apt-get install -y apt-transport-https curl
    
    sudo curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
    
    sudo tee /etc/apt/sources.list.d/kubernetes.list <<-'EOF'
    deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
    EOF
    
    • 查看 kubeadm 可用版本,选一个合适的

    # apt-cache madison kubeadm

    [图片上传失败...(image-408d79-1686974878507)]

    这里我们就安装最新的版本吧

    // 安装最新版本
    # shell sudo apt-get install -y kubelet=1.22.4-00 kubeadm=1.22.4-00 kubectl=1.22.4-00
    
    // 设置标签
    # sudo apt-mark hold kubelet=1.22.4-00 kubeadm=1.22.4-00 kubectl=1.22.4-00
    
    // 设置开启启动 kubelet 并 运行 kubelet
    # sudo systemctl enable kubelet && sudo systemctl start kubelet
    

    我们简单的运行一下 kubelet 可以看到版本安装是正确的

    [图片上传失败...(image-539662-1686974878507)]

    可是 kubelet 本应该是在后台就会启动的 ,为什么会启动异常呢 , 我们可以查看官方文档,得知需要配置 cgroup 驱动程序

    [图片上传失败...(image-9605cb-1686974878507)]

    在本地创建一个 yaml 文件,kubeadm-config.yaml

    配置上自己的 kubelet 的版本 v1.22.4

    kind: ClusterConfiguration
    apiVersion: kubeadm.k8s.io/v1beta3
    kubernetesVersion: v1.22.4
    ---
    kind: KubeletConfiguration
    apiVersion: kubelet.config.k8s.io/v1beta1
    cgroupDriver: systemd
    

    执行命令 kubeadm init --config kubeadm-config.yaml

    若发现有如下报错,则是因为我们的机器 CPU 的核数小于 2 ,kubeadm 要求 我们的环境 CPU 需要是 2 个 ,赶紧换一个配置高一点的机器吧

    [图片上传失败...(image-c9099a-1686974878507)]

    若配置没有异常,CPU 核数够,那么将会执行成功

    今天就到这里,学习所得,若有偏差,还请斧正

    欢迎点赞,关注,收藏

    朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

    [图片上传失败...(image-5bd06c-1686974878507)]

    好了,本次就到这里

    技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

    我是阿兵云原生,欢迎点赞关注收藏,下次见~

    相关文章

      网友评论

        本文标题:k8s 集群部署尝试

        本文链接:https://www.haomeiwen.com/subject/ynsrydtx.html