Ubuntu 16.04使用kubeadm安装kubernetes 1.15总结

1.       环境信息:Ubuntu 16.04, Docker:18.09.8

2.       机器信息:使用4个节点,其中一个部署为master节点,另外三个为普通节点

 

IP

Role

10.21.103.111

 Master

10.21.103.161

Node

10.21.103.214

Node

10.21.102.182

Node

 

3. 准备工作:由于需要从国外网站上拉取kubernetes(最新版:1.15)镜像,需要能够访问外网,这里设置代理为hk代理

       a. 配置/etc/apt/apt.conf,如下所示:

           Acquire::http::Proxy "http://username:password@proxyhk.com:8080";

           Acquire::https::Proxy"https://username:password@proxyhk.om:8080";

           注意:在Ubuntu 16.04中,若密码里有特殊字符,不需要把特殊字符转化为ASCII码,系统会自动转换。例如密码是aabb**,直接输入aabb**

       b. 在/root/.bashrc中添加代理,如下所示:

           export http_proxy="username:password@proxyhk.com:8080"

           export https_proxy="username:password@proxyhk.hcom:8080"

           export no_proxy='10.179.175.88,localhost,127.0.0.1'

          注意:其中10.179.175.88需要更换为自己的ip,并且配置完毕后执行source /root/.bashrc使之生效

4.  在Master和Node上分别安装kubeadm, kubelet and kubectl,这里可以使用国内源(阿里巴巴镜像站)安装即可,速度较快。具体操作如下:

        a.  安装docker. 这部分可以参考

           https://blog.csdn.net/ZJZJ0320/article/details/97009603

        b.  Docker安装并测试完毕后,启动docker,开始安装kubeadm, kubelet and kubectl,这部分Master和Node的操作是一样的。

           (1) 更新软件源

                apt-get update && apt-get install -y apt-transport-https

           (2) 获取并添加gpg证书

               curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

           (3) 添加到源信息列表

                cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF

           (4) 再次更新软件源信息

               apt-get update

           (5) 执行安装命令

              apt-get install -y kubelet kubeadm kubectl

              注意:这里默认会安装最新版本的kubelet kubeadm kubectl,截至目前均为1.15版本(2019.7.23),也可以指定版本进行安装,执行             

             apt-get install -y kubelet=<version> kubeadm=<version> kubectl=<version>         

 

5.  使用kubeadm部署kubernetes1.15集群

         这里分为Master和Node两部分介绍.

         对于Master

           a.  安装kubeadm后,执行

                kubeadm init --pod-network-cidr=10.244.0.0/16

               注意:执行这一句时电脑一定要能够访问外网

               如果只执行上述语句则表示全部使用默认安装,但也有一些参数可以指定,总结部分如下:

              --apiserver-advertise-address:这是 API server 用来告知集群中其它成员的地址,这也是在 init 流程的时候用来构建 kubeadm join 命令行的地址。如果不设置(或者设置为 0.0.0.0)那么将使用默认接口的 IP 地址。该地址也被添加到 API Server 使用的证书中 。

             --apiserver-bind-port:API server 将绑定的端口。默认为 6443。

             --cert-dir:存储证书的路径。默认为 “/etc/kubernetes/pki”。

             --config:kubeadm 指定的 配置文件,实际上可以在kubeadm后面加上配置参数,就不用另外写一个配置文件,但是当有配置文件的前提下,优先使用配置文件中的参数。

             --skip-preflight-checks:默认情况下,kubeadm 在安装前会进行一系列的 preflight 检查来验证系统。如果需要的话,高级用户可以使用这个参数来跳过这些检查。

             --pod-network-cidr:设置网络插件,有很多种可以选。这里选择Flannel,所以--pod-network-cidr=10.244.0.0/16。必须注意的是,在执行init时其他参数可以使用默认,但--pod-network-cidr需要自己指定         

           b. 安装kubernetes后,出现如下界面表示安装成功,根据红色方框中的提示,执行其语句。   

           c.安装网络插件,由于我们选择了flannel,所以这里执行

                    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

           d.可以执行kubeadm config images list,会出现如下版本信息。

          对于node

            a.  安装完Master后,只要把Node加入到Master就可以了。由于token是有限制时间的,默认为24小时,在Master上也可以自己创建token,执行

               kubeadm token create

            b.  创建好token后,可以执行如下命令查看

               kubeadm token list

             c.  获取ca证书sha256编码hash值,同样在Master执行

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

             返回的字符串就是我们要的

             d.  执行

             kubeadm join 10.21.102.182:6443 --token <token-a>  --discovery-token-ca-cert-hash <hash-b>

             将Node加入到Mster中,其中10.21.102.182为主节点IP,安装kubernetes没有额外设置的话端口就是6443,<token-a> 需要替换为步骤a中获取到的token,<hash-b>需要替换为步骤b中获得的证书字符串,<>是不需要的,示例如下

             kubeadm join 10.21.102.182:6443 --token c0q5x4.2j52bkebwxx5e0s5  --discovery-token-ca-cert-hash sha256:b8c6aafade71657581a729b055502151b274bae169ed86ddfb34f7d10b51acca , 可以在Master上查看,执行kubectl get nodes, 所有节点的状态为Ready则表示成功

6.  安装过程中遇到的部分问题及解决方法

         a. 无法访问https://k8s.gcr.io:将代理设置为hk,

         b. 提示Port 2379 is in use:关闭系统的etcd服务。这是因为我在安装kubelet kubeadm kubectl之前就把etcd装了,实际上是不需要的。

         c. 提示/var/lib/etcd is not empty:将/var/lib/etcd文件清空

        d.  提示detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd".:设置为Docker cgroup driver为systemd,创建/etc/docker/daemon.json文件并添加如下内容

{

  "exec-opts": ["native.cgroupdriver=systemd"],

  "log-driver": "json-file",

  "log-opts": {

    "max-size": "100m"

  }

}

                   设置完后需要重启docker。

·       e. NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized:这是由于kubelet配置了network-plugin=cni,但是还没安装,所以状态会是NotReady,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值