成功使用kubeadm搭建k8s集群的过程

这篇具有很好参考价值的文章主要介绍了成功使用kubeadm搭建k8s集群的过程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.环境初始化:

2.安装docker

3.安装k8s组件:

4.准备集群镜像:

5.集群初始化:

6.安装网络插件:

7.服务部署:


1.环境初始化:

  • 主机规划:

    节点 IP地址 操作系统 配置
    master 192.168.178.102 centos7.9 2G2核
    node1 192.168.178.152 centos7.9 2G2核
    node2 192.168.178.202 centos7.9 2G2核
  • 本次环境搭建需要安装三台Centos服务器(一主二从),然后在每台服务器中分别安装docker(18.06.3),kubeadm(1.17.4)、kubelet(1.17.4)、kubectl(1.17.4)程序。

  • centos7的系统需要执行一下操作,防止出现(错误:Invalid version flag: if)

    • 下载centos7的镜像源:

      wget -O ~/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    • 删除yum.repos.d目录并重新创建:

      rm -rf /etc/yum.repos.d;mkdir /etc/yum.repos.d
    • 将下载的镜像源移动到仓库目录中:

      mv ~/CentOS-Base.repo /etc/yum.repos.d/
    • 重建缓存:

      yum clean all;yum makecache
    • 升级所有包:只升级所有包,不升级软件和系统内核,软件和内核保持原样

      yum upgrade -y
  • 在每个节点/etc/hosts配置域名

    cat <<eof >> /etc/hosts
    
    192.168.178.102 master
    192.168.178.152 node1
    192.168.178.202 node2
    eof
  • 禁止使用selinux

    sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
  • 禁用iptables和firewalld服务,kubernetes和docker在运行中会产生大量的iptables规则,为了不让系统规则跟它们混淆,直接关闭系

    统的规则

    systemctl stop firewalld;systemctl disable firewalld
    systemctl stop iptables;systemctl disable iptables
  • 时间同步:

    • 所有节点,安装:

      yum -y install chrony
    • 所有节点,启动进程:

      systemctl enable chronyd;systemctl start chronyd
    • 修改主节点的配置文件/etc/chrony.conf

      sed -i '/^server [0-9]/d' /etc/chrony.conf
      sed -i '2a\server ntp.aliyun.com iburst\' /etc/chrony.conf
      sed -i 's/#allow 192.168.0.0\/16/allow 192.168.178.0\/24/' /etc/chrony.conf
      sed -i 's/#local stratum 10/local stratum 10/' /etc/chrony.conf
    • 修改从节点的配置文件/etc/chrony.conf

      sed -i '/^server [0-9]/d' /etc/chrony.conf
      sed -i '2a\server master iburst\' /etc/chrony.conf
    • 所有节点,重启服务

      systemctl restart chronyd
    • 所有节点,查看时间同步状态

      timedatectl status
    • 所有节点,开启网络时间同步

      timedatectl set-ntp true
    • 所有节点,查看具体的同步信息:

      chronyc sources -v
  • 禁用swap分区:

    # swap分区指的是虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间虚拟成内存来使用
    # 启用swap设备会对系统的性能产生非常负面的影响,因此kubernetes要求每个节点都要禁用swap设备
    # 但是如果因为某些原因确实不能关闭swap分区,就需要在集群安装过程中通过明确的参数进行配置说明
    sed -i 's/\/dev\/mapper\/centos-swap/#\/dev\/mapper\/centos-swap/' /etc/fstab
  • 修改linux的内核参数:

    • 编辑/etc/sysctl.d/kubernetes.conf,添加网桥过滤和地址转发功能

      cat <<eof > /etc/sysctl.d/kubernetes.conf
      net.bridge.bridge-nf-call-ip6tables = 1
      net.bridge.bridge-nf-call-iptables = 1
      net.ipv4.ip_forward = 1
      eof
    • 重新加载配置

      sysctl -p
    • 加载网桥过滤模块

      modprobe br_netfilter
    • 查看网桥过滤模块是否加载成功

      lsmod | grep br_netfilter
  • 配置ipvs功能:

    • 在kubernetes中service有两种代理模型,一种是基于iptables的,一种是基于ipvs的两者比较的话,ipvs的性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块

    • 安装ipset和ipvsadm

      yum install -y ipset ipvsadm
    • 添加需要加载的模块写入脚本文件:

      cat <<eof > /etc/sysconfig/modules/ipvs.modules
      #!/bin/bash
      modprobe -- ip_vs
      modprobe -- ip_vs_rr
      modprobe -- ip_vs_wrr
      modprobe -- ip_vs_sh
      modprobe -- nf_conntrack_ipv4
      eof
    • 为脚本文件添加执行权限

      chmod +x /etc/sysconfig/modules/ipvs.modules
    • 执行脚本文件

      /bin/bash /etc/sysconfig/modules/ipvs.modules
    • 查看对应的模块是否加载成功

      lsmod | grep -e ip_vs -e nf_conntrack_ipv4
  • 重启linux服务

    reboot

2.安装docker

  • 添加docker镜像到本地:

    wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 然后输入命令:

    yum install -y --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7 
  • 修改配置文件:

    mkdir /etc/docker
    #  Docker在默认情况下使用的Cgroup Driver为cgroupfs,而kubernetes推荐使用systemd来代替cgroupfs
    cat <<eof > /etc/docker/daemon.json
    {
    "exec-opts": ["native.cgroupdriver=systemd"],
    "registry-mirrors": ["https://ja9e22yz.mirror.aliyuncs.com"]
    }
    eof
  • 重启,并设置开机自启:

    systemctl restart docker;systemctl enable docker

3.安装k8s组件:

  • 配置k8syum仓库:

    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
  • 安装kubeadm、kubelet和kubectl

    组件 说明
    kubeadm 搭建kubernetes集群的工具
    kubelet 负责维护容器的生命周期,即通过控制docker,来创建、更新、销毁容器
    kubectl 用来与集群通信的命令行工具。
    yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y
  • 编辑/etc/sysconfig/kubelet,配置kubelet的cgroup

    cat <<eof > /etc/sysconfig/kubelet
    KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
    KUBE_PROXY_MODE="ipvs"
    eof
  • 设置kubelet开机自启

    systemctl enable kubelet

4.准备集群镜像:

  • 在安装kubernetes集群之前,必须要提前准备好集群需要的镜像,所需镜像可以通过下面命令查看

    kubeadm config images list
  • 下载镜像:此镜像在kubernetes的仓库中,由于网络原因,无法连接,下面提供了一种替代方案下载这些镜像

    images=(
        kube-apiserver:v1.17.4
        kube-controller-manager:v1.17.4
        kube-scheduler:v1.17.4
        kube-proxy:v1.17.4
        pause:3.1
        etcd:3.4.3-0
        coredns:1.6.5
    )
    for imageName in ${images[@]};do
        docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
        docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
        docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
    done

5.集群初始化:

  • 在 master 节点:

    • 创建集群

      kubeadm init \
      --kubernetes-version=v1.17.4 \
      --pod-network-cidr=10.244.0.0/16 \
      --service-cidr=10.96.0.0/12 \
      --apiserver-advertise-address=192.168.178.102     # 集群入口指向master
      # 成功执行后将给出将node节点加入集群的命令
      kubeadm join 192.168.178.102:6443 --token pq7e3f.sbttkdodixfdmiwa \
          --discovery-token-ca-cert-hash sha256:00b426328ab903e4e32abc3b368d90797e7e68a03c94fc80eb6e6b381fd465eb 
    • 创建必要文件

      mkdir -p $HOME/.kube
      cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      chown $(id -u):$(id -g) $HOME/.kube/config
  • 在 node 节点,将node节点加入集群(命令各不相同,需要在住master节点创建集群后获取命令

    kubeadm join 192.168.178.102:6443 --token pq7e3f.sbttkdodixfdmiwa \
        --discovery-token-ca-cert-hash sha256:00b426328ab903e4e32abc3b368d90797e7e68a03c94fc80eb6e6b381fd465eb   
  • 在 master 节点,在查看集群状态 此时的集群状态为NotReady,这是因为还没有配置网络插件

    [root@master ~]# kubectl get nodes
    NAME     STATUS     ROLES    AGE     VERSION
    master   NotReady   master   12m     v1.17.4
    node1    NotReady   <none>   2m11s   v1.17.4
    node2    NotReady   <none>   10s     v1.17.4

6.安装网络插件:

  • kubernetes支持多种网络插件,比如flannel、calico、canal等等,任选一种使用即可

  • 本次选择flannel

  • 下面操作只需在 master 节点执行即可,插件使用的是DaemonSet的控制器,它会在每个节点上都运行

  • 获取fannel的配置文件

    wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  • 部署flannel网络:

    kubectl apply -f kube-flannel.yml
  • 过一分钟左右查看各节点状态,变为Ready说明网络打通了:

    [root@master ~]# kubectl get nodes
    NAME     STATUS   ROLES    AGE   VERSION
    master   Ready    master   24m   v1.17.4
    node1    Ready    <none>   14m   v1.17.4
    node2    Ready    <none>   12m   v1.17.4
  • 查看所有pod是否变为Running

    [root@master ~]# kubectl get pod --all-namespaces
    NAMESPACE      NAME                             READY   STATUS    RESTARTS   AGE
    kube-flannel   kube-flannel-ds-dzr2h            1/1     Running   0          5m13s
    kube-flannel   kube-flannel-ds-hjskt            1/1     Running   0          5m13s
    kube-flannel   kube-flannel-ds-t5xhn            1/1     Running   0          5m13s
    kube-system    coredns-6955765f44-4d6mm         1/1     Running   0          26m
    kube-system    coredns-6955765f44-65m72         1/1     Running   0          26m
    kube-system    etcd-master                      1/1     Running   0          26m
    kube-system    kube-apiserver-master            1/1     Running   0          26m
    kube-system    kube-controller-manager-master   1/1     Running   0          26m
    kube-system    kube-proxy-4qmwl                 1/1     Running   0          14m
    kube-system    kube-proxy-6mdck                 1/1     Running   0          26m
    kube-system    kube-proxy-q94ps                 1/1     Running   0          16m
    kube-system    kube-scheduler-master            1/1     Running   0          26m

7.服务部署:

  • 接下来在kubernetes集群中部署一个nginx程序,测试下集群是否在正常工作

  • 部署nginx

    kubectl create deployment nginx --image=nginx:1.14-alpine
  • 暴露端口:

    kubectl expose deployment nginx --port=80 --type=NodePort
  • 查看服务状态

    [root@master ~]# kubectl get pods,service
    NAME                         READY   STATUS    RESTARTS   AGE
    pod/nginx-6867cdf567-b24c4   1/1     Running   0          16s
    ​
    NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
    service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        36m
    service/nginx        NodePort    10.98.153.169   <none>        80:31812/TCP   7s
  • 最后在电脑上访问下部署的nginx服务文章来源地址https://www.toymoban.com/news/detail-418282.html

    http://192.168.178.102:31812

到了这里,关于成功使用kubeadm搭建k8s集群的过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kubeadm方式搭建K8s集群【1.27.0版本】

    官方文档: 二进制下载地址 环境规划: pod网段:10.244.0.0/16 service网段:10.10.0.0/16 注意: pod和service网段不可冲突,如果冲突会导致K8S集群安装失败。 主机名 IP地址 操作系统 master-1 16.32.15.200 CentOS7.8 node-1 16.32.15.201 CentOS7.8 node-2 16.32.15.202 CentOS7.8 1、关闭防火墙 2、配置域名解

    2024年02月04日
    浏览(69)
  • Kubeadm方式搭建K8s集群 1.27.0版本

    目录 一、集群规划 二、系统初始化准备(所有节点同步操作) 三、安装并配置cri-docker插件 四、安装kubeadm(所有节点同步操作) 五、初始化集群 六、Node节点添加到集群 七、安装网络组件Calico 八、测试codedns解析可用性 环境规划: pod网段:10.244.0.0/16 service网段:10.10.0.0/16 注

    2024年02月13日
    浏览(64)
  • kubeadm方式搭建的k8s集群升级——2023.05

    搭建k8s集群的方式有很多种,比如二进制,kubeadm,RKE(Rancher)等,k8s集群升级方式也各有千秋,本文主要介绍使用kubeadm方式搭建的k8s集群升级方法。 需要注意的是,升级集群版本建议逐步升级,比如 v1.20.4–v1.21.4–v1.22.4–v1.23.4–v1.24.4,不能跨度过大,否则会报错。 节点

    2024年02月12日
    浏览(60)
  • Kubeadm方式搭建K8s高可用集群【1.23.0版本】

    官方文档: 二进制下载地址 环境规划: pod网段:10.244.0.0/16 service网段:10.10.0.0/16 注意: pod和service网段不可冲突,如果冲突会导致K8S集群安装失败。 主机名 IP地址 操作系统 备注 master-1 16.32.15.200 CentOS7.8 安装keepalived、nginx实现高可用 master-2 16.32.15.201 CentOS7.8 安装keepalived、

    2023年04月22日
    浏览(52)
  • 【云原生-K8s-1】kubeadm搭建k8s集群(一主两从)完整教程及kubernetes简介

    🍁 博主简介   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊 交流社区: 运维交流社区 欢迎大家的加入!   Kubernetes(简称:k8s) 是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,用于管理云平台中多

    2024年02月07日
    浏览(64)
  • 【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.27.0版本

    官方文档: 二进制下载地址 环境规划: pod网段:10.244.0.0/16 service网段:10.10.0.0/16 注意: pod和service网段不可冲突,如果冲突会导致K8S集群安装失败。 主机名 IP地址 操作系统 master-1 16.32.15.200 CentOS7.8 node-1 16.32.15.201 CentOS7.8 node-2 16.32.15.202 CentOS7.8 1、关闭防火墙 2、配置域名解

    2024年02月08日
    浏览(75)
  • 【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.26.0版本

    官方文档: 二进制下载地址 环境规划: pod网段:10.244.0.0/16 service网段:10.10.0.0/16 注意: pod和service网段不可冲突,如果冲突会导致K8S集群安装失败。 容器运行时本次使用containerd。 主机名 IP地址 操作系统 master-1 16.32.15.200 CentOS7.8 node-1 16.32.15.201 CentOS7.8 node-2 16.32.15.202 CentOS

    2024年02月10日
    浏览(42)
  • kubeadm搭建单master多node的k8s集群--小白文,图文教程

    K8S基础知识与集群搭建 kubeadm搭建单master多node的k8s集群—主要参考这个博客,但是有坑,故贴出我自己的过程,坑会少很多 注意: 集群配置是:一台master:zabbixagent-k8smaster,两台node:k8snode1和k8snode2 当没有明说master机器做什么或者node机器做什么时,所有操作步骤默认是三台

    2024年02月19日
    浏览(52)
  • 使用kubeadm快速部署一个K8s集群

    kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。 这个工具能通过两条指令完成一个kubernetes集群的部署: 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 一台或多台机器,操作系统 CentOS7.x-86_x64 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更

    2024年02月09日
    浏览(59)
  • 使用kubeadm方式快速部署一个K8S集群

    目录 一、环境准备 二、环境初始化  三、在所有主机上安装相关软件 1、安装docker 2、配置k8s的yum源 3、安装kubelet、kubeadm、kubectl 四、部署Kubernetes Master 五、加入Kubernets Node 六、部署CNI网络插件 七、测试k8s集群 我的是CentOS7系统,然后准备三台虚拟主机 一台master,和两台no

    2024年02月11日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包