暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

k8s系列-08-kubespray的安装配置

运维家 2022-03-11
786


主旨

既然选择使用kubespray的方式来部署k8s集群,那么我们首先要搞明白kubespray如何安装和配置,以及这些配置是如何生成的吧,要明白这些之后,后面的才好理解。
PS:在k8s系列中,推荐使用root用户来进行相关操作,否则的话会经常有权限性的问题,不太友好。

配置免密
在随意一台服务器上操作就行,我这里使用node-1节点来操作,仅在一台服务器上执行即可哈。
    # 一路回车下去,什么信息都不用输入
    [root@node-1 ~]# ssh-keygen
    # 查看生成的pubkey,并复制下来,以供后面使用
    [root@node-1 ~]# cat root/.ssh/id_rsa.pub
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCbdPY3FRjOrIgUmNUm71tQ6PoEc1qF6FHakITd+Ig/luEO3sWMWN/XpfEQY76effltPzQZ8OS7KI6uPg5qgtfFNOJjWE1JkeF55DYzBckYtJk98j05Hf+guP/FeKpZ8bWpQhonp0sAslw2N6SNQU56WIsFSTY8/QPXhOJ5/7djORY80mh6R7Xj8EZRMHw8TyRsYsJM1vNAYypUT+hHBuuP01TiI+Me7O2h0AyPjQxvwYcVQG7xca5gTS/xc+3RYswveS5FkY9ctvKiLyyyxs/uHt7RYlTMYt8d+6wDqo4gxBnsBDaylB9f1LYibyI+sqdGGztAQdm3eVy7aFUCEbjn root@node-1
    [root@node-1 ~]#


    该操作需要在每一台服务器上操作,包括上面的node-1节点:
      # node-1
      [root@node-1 ~]# mkdir -p root/.ssh
      [root@node-1 ~]# echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCbdPY3FRjOrIgUmNUm71tQ6PoEc1qF6FHakITd+Ig/luEO3sWMWN/XpfEQY76effltPzQZ8OS7KI6uPg5qgtfFNOJjWE1JkeF55DYzBckYtJk98j05Hf+guP/FeKpZ8bWpQhonp0sAslw2N6SNQU56WIsFSTY8/QPXhOJ5/7djORY80mh6R7Xj8EZRMHw8TyRsYsJM1vNAYypUT+hHBuuP01TiI+Me7O2h0AyPjQxvwYcVQG7xca5gTS/xc+3RYswveS5FkY9ctvKiLyyyxs/uHt7RYlTMYt8d+6wDqo4gxBnsBDaylB9f1LYibyI+sqdGGztAQdm3eVy7aFUCEbjn root@node-1" >> root/.ssh/authorized_keys


      # node-2
      [root@node-2 ~]# mkdir -p root/.ssh
      [root@node-2 ~]# echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCbdPY3FRjOrIgUmNUm71tQ6PoEc1qF6FHakITd+Ig/luEO3sWMWN/XpfEQY76effltPzQZ8OS7KI6uPg5qgtfFNOJjWE1JkeF55DYzBckYtJk98j05Hf+guP/FeKpZ8bWpQhonp0sAslw2N6SNQU56WIsFSTY8/QPXhOJ5/7djORY80mh6R7Xj8EZRMHw8TyRsYsJM1vNAYypUT+hHBuuP01TiI+Me7O2h0AyPjQxvwYcVQG7xca5gTS/xc+3RYswveS5FkY9ctvKiLyyyxs/uHt7RYlTMYt8d+6wDqo4gxBnsBDaylB9f1LYibyI+sqdGGztAQdm3eVy7aFUCEbjn root@node-1" >> root/.ssh/authorized_keys


      # node-3
      [root@node-3 ~]# mkdir -p root/.ssh
      [root@node-3 ~]# echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCbdPY3FRjOrIgUmNUm71tQ6PoEc1qF6FHakITd+Ig/luEO3sWMWN/XpfEQY76effltPzQZ8OS7KI6uPg5qgtfFNOJjWE1JkeF55DYzBckYtJk98j05Hf+guP/FeKpZ8bWpQhonp0sAslw2N6SNQU56WIsFSTY8/QPXhOJ5/7djORY80mh6R7Xj8EZRMHw8TyRsYsJM1vNAYypUT+hHBuuP01TiI+Me7O2h0AyPjQxvwYcVQG7xca5gTS/xc+3RYswveS5FkY9ctvKiLyyyxs/uHt7RYlTMYt8d+6wDqo4gxBnsBDaylB9f1LYibyI+sqdGGztAQdm3eVy7aFUCEbjn root@node-1" >> /root/.ssh/authorized_keys


      验证一下,从node-1节点,分别登录三台服务器,看下是否需要输入密码,如果不需要输入密码的话,就成功了。
        [root@node-1 ~]# ssh root@192.168.112.130
        Last login: Thu Mar 10 11:16:21 2022 from node-1
        [root@node-1 ~]# exit
        登出
        Connection to 192.168.112.130 closed.
        [root@node-1 ~]# ssh root@192.168.112.131
        Last login: Thu Mar 10 11:17:45 2022 from 192.168.112.130
        [root@node-2 ~]# exit
        登出
        Connection to 192.168.112.131 closed.
        [root@node-1 ~]# ssh root@192.168.112.132
        Last login: Thu Mar 10 11:17:40 2022 from 192.168.112.130
        [root@node-3 ~]# exit
        登出
        Connection to 192.168.112.132 closed.
        [root@node-1 ~]#
        有同学会发现需要让你输入yes,其实是只有第一次需要,后面就都不需要了。


        依赖解决

        该步骤只需要在node-1上执行。
          # 安装基础
          [root@node-1 ~]# yum install -y epel-release python36 python36-pip git
          # 下载kubespray源码
          [root@node-1 ~]# wget https://github.com/kubernetes-sigs/kubespray/archive/v2.15.0.tar.gz
          # 解压缩
          [root@node-1 ~]# tar xf v2.15.0.tar.gz
          [root@node-1 ~]# cd kubespray-2.15.0/
          [root@node-1 kubespray-2.15.0]#
          # 安装所需插件
          [root@node-1 kubespray-2.15.0]# pip3.6 install setuptools_rust
          [root@node-1 kubespray-2.15.0]# pip3.6 install --upgrade pip
          [root@node-1 kubespray-2.15.0]# cat requirements.txt
          ansible==2.9.16
          jinja2==2.11.1
          netaddr==0.7.19
          pbr==5.4.4
          jmespath==0.9.5
          ruamel.yaml==0.16.10
          [root@node-1 kubespray-2.15.0]# pip3.6 install -r requirements.txt


          生成配置

          该步骤只需要在node-1上执行。
            # 拷贝一份集群配置示例,以供我们自己使用
            [root@node-1 kubespray-2.15.0]# cp -rpf inventory/sample inventory/mycluster


            # 环境变量配置
            [root@node-1 kubespray-2.15.0]# export USE_REAL_HOSTNAME=true
            [root@node-1 kubespray-2.15.0]# export CONFIG_FILE=inventory/mycluster/hosts.yaml
            # 这里的IP地址一定要写成自己集群的IP地址哈,有几台就写几个
            [root@node-1 kubespray-2.15.0]# declare -a IPS=(192.168.112.130 192.168.112.131 192.168.112.132)


            # 生成配置文件,此处使用的是k8s提供的脚本来生成配置文件
            [root@node-1 kubespray-2.15.0]# python3.6 contrib/inventory_builder/inventory.py ${IPS[@]}


            个性化配置

            该步骤只需要在node-1上执行。
            1、节点组织配置
              [root@node-1 kubespray-2.15.0]# vim inventory/mycluster/hosts.yaml 
              all:
              hosts:
              node-1:
              ansible_host: 192.168.112.130
              ip: 192.168.112.130
              access_ip: 192.168.112.130
              node-2:
              ansible_host: 192.168.112.131
              ip: 192.168.112.131
              access_ip: 192.168.112.131
              node-3:
              ansible_host: 192.168.112.132
              ip: 192.168.112.132
              access_ip: 192.168.112.132
              children:
              kube-master:
              hosts:
              node-1:
              node-2:
              kube-node:
              hosts:
              node-1:
              node-2:
              node-3:
              etcd:
              hosts:
              node-1:
              node-2:
              node-3:
              k8s-cluster:
              children:
              kube-master:
              kube-node:
              calico-rr:
                    hosts: {}
              在里面可以调整节点组织信息,如果有问题可以直接修改。


              2、containerd配置
                [root@node-1 kubespray-2.15.0]# vim inventory/mycluster/group_vars/all/containerd.yml
                一般不需要修改,如果有定制化,可以自行更改。

                3、全局配置
                  [root@node-1 kubespray-2.15.0]# vim inventory/mycluster/group_vars/all/all.yml 
                  # 这是一个总的全局配置文件,这里不一一介绍里面可以修改什么内容,举几个例子吧
                  # etcd的工作目录
                  # 相关端口号
                  # 代理地址 等都可以在这里进行修改


                  由于kubespary是国外的服务,所以他下载的时候也需要访问“外网”,需要“翻墙”出去,当然了,也可以使用国内源,为了方便,我这里直接配置了国外的地址,如果有同学需要配置国内源的需求,或者说也想翻出去,但是没有什么渠道,可以后台留言,咱们后面可以单独针对这两个内容再来唠一唠。
                    # 修改代理地址
                    [root@node-1 kubespray-2.15.0]# vim inventory/mycluster/group_vars/all/all.yml
                    # 找到以下两行,取消注释,然后写上自己的代理地址,别用我的哈,我的是内网,你连不上
                    http_proxy: "http://192.168.112.100"
                    https_proxy"http://192.168.112.100"
                    [root@node-1 kubespray-2.15.0]#


                    4、k8s集群配置调整
                      [root@node-1 kubespray-2.15.0]# vim inventory/mycluster/group_vars/k8s-cluster/k8s-cluster.yml 
                      # 修改master节点的IP地址池
                      kube_service_addresses: 10.200.0.0/16
                      # 修改worker节点的IP地址池
                      kube_pods_subnet: 10.233.0.0/16
                      # 修改底层容器,由docker咱们改成containerd
                      container_manager: containerd
                      [root@node-1 kubespray-2.15.0]#
                      其他的一些,比如网络插件使用calico等东西,可以根据自行需要去调整,这里就不一一列举了。


                      5、修改etcd的部署类型
                        [root@node-1 kubespray-2.15.0]# vim inventory/mycluster/group_vars/etcd.yml 
                        etcd_deployment_type: host
                        [root@node-1 kubespray-2.15.0]#
                        为什么要修改这个部署类型呢,因为他默认的是按照docker来安装的,但是我们上一步把容器改成了containerd,就没有docker了,所以需要修改成host模式。

                        6、附加组件
                          [root@node-1 kubespray-2.15.0]# vim inventory/mycluster/group_vars/k8s-cluster/addons.yml 
                          # 代理,默认是false
                          ingress_nginx_enabled: true
                          # 界面(可选),这里是默认注释的状态,取消注释即可
                          dashboard_enabled: true


                          至此,本文结束,kubespray部署前的准备工作就完事儿了,下一篇我们就直接来进行安装即可,以上内容操作过程中有问题的话,后台留言即可。


                          往期推荐

                          k8s系列-07-kubespray方案基础环境准备

                          k8s系列-06-containerd的基本操作

                          k8s系列-05-k8s集群搭建方案对比,以及containerd是什么,如何安装

                           


                          添加关注,带你高效运维 

                          文章转载自运维家,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                          评论