• 使用kubeadm安装Kubernetes


    (1)系统基础设置

    • 通过DNS完成各节点的主机名解析,少量时可以使用hosts文件进行解析;

    • 借助于NTP服务设置各节点时间精确同步

    • 关闭各节点iptables和firewalld,并确保禁止开机自启动

    • 各节点禁用SELinux

    • 各节点禁用所有Swap设备

    • 若要使用ipvs模型的proxy,各节点还需要载入ipvs相关的各模块

    1.1 设置主机名

    每台主机名必须都不一样,并保证所有节点之间可以通过hostname相互访问。

     # 查看主机名
     hostname
     # 修改主机名
     hostnamectl set-hostname HostName
     # 配置hosts文件,使其所有节点之间可以通过hostname相互访问
     vim /etc/hosts
      NodeIP   NodeName
    1.2 设置时钟同步
     # 如果节点可直接访问互联网,可直接启动chronyd系统服务,并设置开机自启动
      systemctl start chronyd.service
      systemctl enable chronyd.service
     # 建议使用本地的时间服务器,尤其在节点数量众多时,存在可用的本地时间服务器时,修改节点时间服务器指向相应的主机即可,配置【/etc/chrony.conf】格式如下:
      server CHRONY-ServerName-OR-IP iburst
     #设置时区
        timedatectl list-timezones|grep -i Shanghai
        timedatectl set-timezone Asia/Shanghai
        timedatectl
     

     

    1.3 安装依赖包
     # 注意jq在EPEL源中
     # wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
     yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp
    1.4 关闭防火墙、swap、重置iptables
     # 关闭防火墙
     systemctl stop firewalld && systemctl disable firewalld
     # 重置iptables
     iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT
     # 关闭swap
     # kubeadm默认会预先检查当前主机是否禁用了Swap设备,并在未禁用时强制终止部署过程。
     swapoff -a
     sed -i '/swap/s/^(.*)$/#1/g' /etc/fstab
     # 关闭SELinux
     setenforce 0
     sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
     # 关闭dnsmasq(否则可能导致docker容器无法解析域名)
     service dnsmasq stop && systemctl disable dnsmasq
    1.5 系统参数设置
      cat > /etc/sysctl.d/kubernetes.conf <<EOF
     net.bridge.bridge-nf-call-iptables=1
     net.bridge.bridge-nf-call-ip6tables=1
     net.ipv4.ip_forward=1
     vm.swappiness=0
     vm.overcommit_memory=1
     vm.panic_on_oom=0
     fs.inotify.max_user_watches=89100
     EOF
     ## 生效文件
     sysctl -p /etc/sysctl.d/kubernetes.conf
     ## 查看
     sysctl -a |grep bridge

     

    (2) 安装docker(所有节点)

    根据kubernetes对docker版本的兼容测试情况选择对应docker版本。

     wget -O /etc/yum.repos.d/docker.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
     yum install docker-ce
     systemctl enable docker
     
     # 配置iptables转发策略默认放行
      # docker自1.13版起会自动设置iptables的FORWARD默认策略为DROP,这可能会影响kubernetes集群依赖的报文转发功能。
     vim /usr/lib/systemd/system/docker.service
      # 在【Service】标签下
      Environment=“HTTPS_PROXY=http://www.ik8s.io:10070”
      Environment=“NO_PROXY=127.0.0.0/8,192.168.141.0/24”
      ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT
     # 重启生效
     systemctl daemon-reload
     systemctl start docker
     docker info

     

    (3)安装必要工具(所有节点)

    工具说明:

    • kubeadm:部署集群用的命令

    • kubelet:在集群中每台机器上都要运行的组件,负责管理Pod、容器的生命周期

    • kubectl:集群管理工具(可选,只要在控制集群的节点上安装即可)

     # 配置yum源
      cat <<EOF > /etc/yum.repos.d/kubernetes.repo
     [kubernetes]
     name=Kubernetes
     baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
     enabled=1
     gpgcheck=0
     repo_gpgcheck=0
     gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
            http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
     EOF
     
     # 安装工具
     yum list kubeadm --showduplicates | sort -r
     #     注:--showduplicates 表示查看当前支持的版本
     # 安装指定版本
     version='1.14.5-0'
     yum install -y kubeadm-${version} kubelet-${version} kubectl-${version}  --disableexcludes=kubernetes
     # 配置kubelet,若未禁用Swap设备,则需要编辑kubelet的配置文件/etc/sysconfig/kubelt,设置其忽略Swap启用的状态错误。
      KUBELET_EXTRA_ARGS=“--fail-swap-on=false”
     
     # 设置kubelet的cgroupdriver(kubelet的cgroupdriver默认为systemd,如果上面没有设置docker的exec-opts为systemd,这里就需要将kubelet的设置为cgroupfs)
     sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
     
     # 启动kubelet
     systemctl enable kubelet && systemctl start kubelet

     

    kubeadm的相关命令
     init    # 初始化集群
      --image-repository string ## 指定初始化集群时镜像仓库地址
     join # 加入集群
     reset # 重置集群
     config # 显示初始化集群相关默认配置
      kubeadm config init-defaults # 显示初始化集群模式配置
      kubeadm config images {list | pull}   # 显示/拉取初始化集群相关镜像
      kubeadm config upload from-file # 由配置文件上传到集群中生成ConfigMap
      kubeadm config upload from-flags # 由配置参数生成ConfigMap
      kubeadm config view # 查看当前集群中的配置值
      kubeadm config print init-defaults # 输出 kubeadm init 默认参数文件的内容
      kubeadm config print join-defaults # 输出 kubeadm join 默认参数文件的内容
      kubeadm config migrate # 在新旧版本之间进行配置转换
      kubeadm config images list   # 列出所需的镜像列表
      kubeadm config images pull   # 拉取镜像到本地

    说明:kubeadm init命令支持两种初始化方式,一种是通过命令行选项传递关键的部署设定,另一种是基于yaml格式的专用配置文件,后一种允许用户自定义各个部署参数。

    初始化集群
     # 可在执行kubeadm init之前提前拉取相关镜像
     kubeadm config images list
     kubeadm config images pull
     kubeadm init --kubernetes-version="v1.14.5" --pod-network-cidr="10.244.0.0/16" --ignore-preflight-errors=Swap  --dry-run  --experimental-upload-certs
     
     # 说明
     #     kubernetes-version 指定要部署的kubernetes程序版本,需要与当前的kubeadm支持的版本保持一致
     #   pod-network-cidr 指定Pod网络网段,需跟网络插件一致
     #   service-cidr   指定集群服务地址
     # 添加 --experimental-upload-certs 参数可以在后续执行加入节点时自动分发证书文件
    配置使用kubectl

    kubectl是kube-apiserver的命令行客户端程序,实现了除系统部署之外的几乎全部的集群管理操作,是kubernetes管理员使用最多的命令之一。kubectl需经由API Server认证及授权后方能执行相应的管理操作。kubeadm部署的集群为其生成了一个具有管理员权限的认证配置文件 /etc/kubernetes/admin.conf,它可由kubectl通过默认的“$HOME/.kube/config”的路径进行加载。当然,用户也可在kubectl命令上使用--kubeconfig选项指定一个别的位置。

     mkdir -p $HOME/.kube
     cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
     # 检查集群组件状态
     kubectl get componentstatus
     
     # 查看当前kubectl配置
     kubectl config view
    部署网络插件

    Kubernetes系统上Pod网络的实现依赖于第三方插件进行。常用有flannel、calico、canal和kube-router

     # flannel
     # github地址:github.com/coreos/flannel
     kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    安装Node
     # 先进行环境基础配置、
     yum install kubelet kubeadm
     kubeadm join XXXX
     # 安装flannel
     kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
     
     # 现在node也使用kubectl
     mkdir ~/.kube
     cp Master:/etc/kubernetes/admin.conf Node:/root/.kube/config

     

  • 相关阅读:
    Linux 详细命令操作大全二
    Liunx 环境安装配置Jupyter
    Linux 详细命令操作大全一
    Mysql int(10)和int(11)区别
    Python 面向对象编程
    Oracle数据库工具设置时间显示格式
    vue安装时报错:npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
    Oracle对当前时间的处理
    Oracle合并不同条件下统计出的总数
    记录一下vue-cli3搭建项目后遇到axios请求跨域的问题
  • 原文地址:https://www.cnblogs.com/Binggo30/p/11444547.html
Copyright © 2020-2023  润新知