zoukankan      html  css  js  c++  java
  • Kubernetes kubeadm在Linux下的安装

    实践环境

    CentOS-7-x86_64-DVD-1810

    开始之前

    确保每台机器2G内存或以上

    确保每台机器双核CPU或以上

    确保所有机器网络互连

    确认每个结点(node)的hostnameMACproduct_uuid唯一,Kubernetes用这些数值唯一确定集群中的结点

    禁用Swap,以便kubelet正常工作

    检查网络适配器

    如果拥有多个网络适配器,无法通过默认路由访问Kubernetes组件,推荐给指定适配器添加到Kubernetes集群IP路由。

    确保桥接通信(bridged traffic)对iptables可见

    确保br_netfilter模块已加载,可通过执行``lsmod | grep br_netfilter查看是否已加载,如果没有,可通过执行命令sudo modprobe br_netfilter`加载

    检查必备端口

    确保以下必备端口未被占用

    Control-plane node(s)

    Protocol Direction Port Range Purpose Used By
    TCP Inbound 6443* Kubernetes API server All
    TCP Inbound 2379-2380 etcd server client API kube-apiserver, etcd
    TCP Inbound 10250 kubelet API Self, Control plane
    TCP Inbound 10251 kube-scheduler Self
    TCP Inbound 10252 kube-controller-manager Self

    Worker node(s)

    Protocol Direction Port Range Purpose Used By
    TCP Inbound 10250 kubelet API Self, Control plane
    TCP Inbound 30000-32767 NodePort Services† All

    禁用Swap

    临时禁用

    # swapoff -a
    

    避免重启机器后失效,编辑etc/fstab,注释掉swap所在记录行

    # vi /etc/fstab
    
    #UUID=2a2ac056-92c2-4cb9-9525-0291498f3d62 swap                    swap    defaults        0 0
    

    如果不禁用,运行kubeadm时,会提示如下错误

    [ERROR Swap]: running with swap on is not supported. Please disable swap
    

    安装运行时

    Kubernetes使用容器运行时Pod中运行容器。Linux结点,Kubernetes使用CRI(Container Runtime Interface )同所选择的的容器运行时交互。

    如果不指定运行时,kubeadm通过扫描熟知的Unix域名socket列表自动检测已安装容器运行时

    以下列出了容器运行时及关联的的socket路径

    Docker	/var/run/dockershim.sock
    containerd	/run/containerd/containerd.sock
    CRI-O	/var/run/crio/crio.sock
    

    如果检测到Dockercontainerd同时存在,则优先使用containerd。除此之外,如果还存在其它运行时,则kebeadm会报错。

    kubelet通过dockershim CRI实现Docker的集成

    这里选择安装 Docker 19.03.9,安装过程略

    安装kubeadm, kubeletkubectl

    kubeadm: 提供引导集群命令

    kubelet: 提供在集群中运行所有机器组件的能力,以及其它事情,比如启动pod和容器

    kubectl: 提供同集群交互的命令行工具

    安装CNI插件(为大多数pod网络所需)

    CNI_VERSION="v0.8.2"
    sudo mkdir -p /opt/cni/bin
    curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-amd64-${CNI_VERSION}.tgz" | sudo tar -C /opt/cni/bin -xz
    

    定义用于存放命令文件的目录

    DOWNLOAD_DIR=/usr/local/bin
    sudo mkdir -p $DOWNLOAD_DIR
    

    注意:DOWNLOAD_DIR目录必须可写

    安装crictl(为kubeadm/Kubelet CRI)所需)

    CRICTL_VERSION="v1.17.0"
    curl -L "https://github.com/kubernetes-sigs/cri-tools/releases/download/${CRICTL_VERSION}/crictl-${CRICTL_VERSION}-linux-amd64.tar.gz" | sudo tar -C $DOWNLOAD_DIR -xz
    

    安装kubeadm, kubeletkubectl并添加kubelet系统服务

    RELEASE="$(curl -sSL https://dl.k8s.io/release/stable.txt)"
    cd $DOWNLOAD_DIR
    sudo curl -L --remote-name-all https://storage.googleapis.com/kubernetes-release/release/${RELEASE}/bin/linux/amd64/{kubeadm,kubelet,kubectl}
    sudo chmod +x {kubeadm,kubelet,kubectl}
    
    RELEASE_VERSION="v0.4.0"
    curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service
    sudo mkdir -p /etc/systemd/system/kubelet.service.d
    curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
    

    设置允许开机启动kubelet,并立即启动

    systemctl enable --now kubelet
    

    配置供kubelet使用的cgroup驱动

    如果使用Dockerkubeadm会自动检测cgroup驱动,并在运行时,自动配置/var/lib/kubelet/config.yaml中对应驱动配置

    如果使用其它CRI,需要传递cgroupDriverkubeadm init,形如以下

    apiVersion: kubelet.config.k8s.io/v1beta1
    kind: KubeletConfiguration
    cgroupDriver: <value>
    

    查看更多,请查看 Using kubeadm init with a configuration file.

    注意,仅CRI驱动不是cgroupfs时才需要传递cgroupDriver ,因为cgroupfs为kubelet的默认驱动。

    作者:授客
    QQ:1033553122
    全国软件测试QQ交流群:7156436

    Git地址:https://gitee.com/ishouke
    友情提示:限于时间仓促,文中可能存在错误,欢迎指正、评论!
    作者五行缺钱,如果觉得文章对您有帮助,请扫描下边的二维码打赏作者,金额随意,您的支持将是我继续创作的源动力,打赏后如有任何疑问,请联系我!!!
               微信打赏                        支付宝打赏                  全国软件测试交流QQ群  
                  

  • 相关阅读:
    [bug] ERROR: Can't get master address from ZooKeeper; znode data == null
    [面试] 大数据
    [项目] 智慧出行
    [Linux] grep -v
    [Linux] > /dev/null 2>&1 &
    [bug] CDH报错:cloudera-scm-server dead but pid file exists
    [bug] CM / CDH 主机运行状态不良情况
    [bug] org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 2
    [其他] 记忆的奥秘(一)
    处理数字的类 —— Math类 、 Random类 、 BigDecimal类 与 BigInteger类
  • 原文地址:https://www.cnblogs.com/shouke/p/15227896.html
Copyright © 2011-2022 走看看