K8S安装指南

安装K8S集群node

  • 基础环境

 

三节点             k8smaster        192.168.6.128                  centos7            做为k8s的master节点linux

                          k8snode1                  192.168.6.129                  centos7            做为k8s的node节点git

                          k8snode2                  192.168.6.130                  centos7            做为k8s的node节点github

三节点均新建用户nicole    主目录为/users/nicoledocker

三节点均能访问互联网shell

 

配置全部节点的/etc/hosts,使全部节点能够经过机器名ping通json

配置全部节点的时间同步centos

配置全部节点的firewalld不启动,方法以下:分别在三个节点上以root用户执行如下三条命令:api

                  systemctl stop firewalld                  (中止运行中的防火墙)服务器

                  systemctl disable firewalld             ( 设置防火墙开机禁用)

                  systemctl status  firewalld            (查看防火墙当前的状态,确认其已经关闭)

 

  • master节点上安装kubelet 、kubeadm、docker、kubectl

 

一、配置yum安装kubelet、kubeadm、docker、kubectl的yum镜像源

        

         kubelet、kubeadm、kubectl的仓库地址:

                  https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

        

         kubelet、kubeadm、kubectl的两个gpg校验密钥文件地址

                  https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

                  https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

 

         超户下执行

cd  /etc/yum.repos.d/

         vi  kubernetes.repo               内容:

 

         [kubernetes]

         name=Kubernetes Repo

         baseurl= https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

         gpgcheck=1

         gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

         enabled=1

 

         cd ~/   切换到超户的home目录

         wget                 https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

         wget                 https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

         rpm --import rpm-package-key.gpg      导入密钥

         rpm –import yum-key.gpg                       导入密钥

        

         yum repolist             确认刚刚配置的两个仓库是否能正常工做

 

 

         docker的yum安装文件地址

                  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

 

         cd /etc/yum.repos.d/                                        切换路径

         wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo       

下载docker的yum源文件

 

二、安装kubeadm、kubelet、kubectl、docker

        

超户下执行

         yum  install  docker-ce  kubeadm  kubelet  kubectl

 

三、配置docker开机自启动

         systemctl       start  docker                   启动docker

         systemctl        status       docker              查看docker状态

         systemctl       enable     docker              配置docker开机自启动

 

四、配置docker中的代理服务器(若是有代理服务器能够翻出去,就应该配置)

         vi /usr/lib/systemd/system/docker.service

 

         在ExecStart=/usr/bin/dockerd      这一行上面添加:

         Environment=”HTTPS_PROXY=http://www.ik8s.io:10080”  若是没有代理,则本行注释掉

         Environment=”NO_PROXY=127.0.0.0/8,192.168.6.0/24”

 

         从新加载配置

                  systemctl daemon-reload

 

         重启docker服务

                  sysemctl docker

 

         确认配置生效

                  docker info

 

五、配置docker国内镜像仓库( 我选用的是阿里云)

         vi /etc/docker/daemon.json

        

         {

                    "registry-mirrors": ["https://********.mirror.aliyuncs.com"]

}

         其中*****因我的的帐户不一样而不一样

 

         从新加载配置

                  systemctl daemon-reload

 

         重启docker服务

                  sysemctl docker

 

         确认配置生效

                  docker info

        

  • master节点上运行kubeadm init前准备

 

  1. 确认/proc/sys/net/bridge/bridge-nf-call-iptables和bridge-nf-call-ip6tables中内容均为1

 

  1. 测试kubelet

查看kubelet的依赖

         rpm  –ql  kubelet

 

vi  /etc/sysconfig/kubelet ,设置

         KUBELET_EXTRA_ARGS=”—fail-swap-on=false”

即当swap监测fail的时候,不作处理

 

         systemctl  start   kubelet  启动kubelet

(此处只是测试一下,因初始化配置没有完成,必定会启动失败)

        

systemctl  status  kubelet   检查kubelet运行状态

                tail   /var/log/message             查看出错日志

                  systemctl   stop  kubelet    中止kubelet

                  systemctl   enable  kubelet   虽然kubelet启动会失败,但要设置开机自启动

 

  • master节点上运行kubeadm init

 

  1. 运行kubeadm init

 

先使用kubeadm init –help 了解一下kubeadm init的使用方法

 

使用kubeadm init 初始化kubernetes

 

kubeadm  init  --kubernetes-version=v1.11.1 --pod-network-cidr=10.244.0.0/16 –server-cidr=10.96.0.0/12 –apiserver-advertise-address=192.168.6.128 –ignore-preflight-errors=Swap

 

执行完这个命令以后,通常都会报错。缘由在于:该命令将致使docker去谷歌官网的镜像仓库pull数个必须的镜像到本地,但对于中国大陆用户来讲,这个网站是不可达的,若是前面的代理服务网站被正确设置,而且代理可用的话,是能够经过代理将镜像拉取到本地的。但通常而言,很难找到合适的代理服务。所以,须要手动经过镜像仓库将镜像拉取到本地

 

  1. 肯定须要拉取的镜像名称和版本号

执行 kubeadm  config images list ,能够获得须要拉取的镜像名称和版本号。可能以下所示:

                         

k8s.gcr.io/kube-apiserver:v1.13.3

k8s.gcr.io/kube-controller-manager:v1.13.3

k8s.gcr.io/kube-scheduler:v1.13.3

k8s.gcr.io/kube-proxy:v1.13.3

k8s.gcr.io/pause:3.1

k8s.gcr.io/etcd:3.2.24

k8s.gcr.io/coredns:1.2.6

 

  1. 拉取对应的镜像

 

将k8s.gcr.io改为mirrorgooglecontainers,键入以下命令逐一拉取镜像:

 

docker  pull  mirrorgooglecontainers/kube-apiserver:v1.13.3

docker  pull  mirrorgooglecontainers/kube-controller-manager:v1.13.3

docker  pull mirrorgooglecontainers/k8s.gcr.io/kube-scheduler:v1.13.3

docker  pull  mirrorgooglecontainers/kube-proxy:v1.13.3

docker  pull  mirrorgooglecontainers/pause:3.1

docker  pull  mirrorgooglecontainers/etcd:3.2.24

 

这些命令本质上是从google的镜像仓库中将对应的镜像拉取到本地,但拉取到本地后,镜像的tag和须要的tag是不同的,所以还须要将tag逐一改为k8s.gcr.io,命令以下:

docker tag mirrorgooglecontainers/kube-apiserver:v1.13.3 k8s.gcr.io/kube-apiserver:v1.13.3

docker tag mirrorgooglecontainers/ kube-controller-manager:v1.13.3 k8s.gcr.io/kube-controller-manager:v1.13.3

docker tag mirrorgooglecontainers/k8s.gcr.io/kube-scheduler:v1.13.3 k8s.gcr.io/kube-scheduler:v1.13.3

docker tag mirrorgooglecontainers/kube-proxy:v1.13.3 k8s.gcr.io/kube-proxy:v1.13.3

docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1

docker tag mirrorgooglecontainers/etcd:3.2.24 k8s.gcr.io/etcd:3.2.24

 

最后一个镜像须要到其自身官网上拉取

docker pull coredns/coredns:1.2.6

docker tag coredns/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6

docker rmi coredns/coredns:1.2.6

 

能够将上述命令写成shell脚本,一次性执行完成;

 

 

当完成了拉取以后,再次执行

         kubeadm  init  --kubernetes-version=v1.11.1 --pod-network-cidr=10.244.0.0/16 –server-cidr=10.96.0.0/12 –apiserver-advertise-address=192.168.6.128 –ignore-preflight-errors=Swap

         命令执行完成以后就会提示成功地完成了master的初始化

 

  • master节点上安装Pod网络(flannel)

 

  1. 使能kubectl命令

master节点上安装Pod网络须要使用kubectl命令,kubectl命令在安装完成以后须要一些配置才能使用。

首先要明白,kubectl命令只能在普通用户下使用,超户下没法使用。

所以须要切换到普通用户下,这里切换到nicole用户下

su – nicole

mkdir –p $HOME/.kube

sudo cp –i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown nicole:nicole $HOME/.kube/config

         注意:使用上述命令须要nicole用户有sudo的权限

 

  1. 执行命令安装flannel网络

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

         很不幸,此次的命名执行完成以后,也不会成功地安装flannel网络,缘由也是镜像没法拉取到本地。

 

  1. 肯定须要拉取的镜像名称和版本号

首先查看节点运行状态:kubectl get nodes      ,能够发现master节点的status不是READY状态;

接下来查看pod运行状态:kubectl get pod --all-namespaces,能够看到集群中有许多的pod的状态不是RUNNING状态,而是Pending、ContainerCreating、ImagePullBackOff之类的没有就绪的状态,但经过这个命令咱们能够查看到那些未就绪的pod的名字;

接下来查看某一特定pod的具体状况:kubectl describe pod <pod name> --namespace=kube-system,能够看到某一特定pod的运行状态,命令的输出中就能够看到是某一特定的镜像拉取失败,从这里就能够看到镜像名了,例如镜像名为quay.io/coreos/flannel:v0.11.0-amd64的镜像拉取失败

 

  1. 手动拉取镜像

将quay.io/coreos/flannel:v0.11.0-amd64改成quay-mirror.qiniu.com /coreos/flannel:v0.11.0-amd64,使用命令:

docker pull quay-mirror.qiniu.com /coreos/flannel:v0.11.0-amd64 便可以拉取镜像

拉取完成以后,将quay-mirror.qiniu.com /coreos/flannel:v0.11.0-amd64改成quay.io/coreos/flannel:v0.11.0-amd64,使用命令:

docker tag docker pull quay-mirror.qiniu.com /coreos/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64

 

按照三、4的方式,逐一将因拉取镜像失败而状态异常的pod的依赖镜像拉取到本地,以后从新执行

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

此时,全部的pod将运行正常

 

另:将quay.io/coreos/flannel:v0.11.0-amd64也可改成registry.aliyuncs.com /coreos/flannel:v0.11.0-amd64

 

 

  • node节点上安装kubelet、kubeadm、docker、kubectl
  1. 配置yum安装kubelet、kubeadm、docker、kubectl的yum镜像源

 

在root用户下将master节点上的kubernetes.repo、docker-ce.repo文件复制到各node节点的/etc/yum.repos.d/目录中

 

在root用户下将master节点上的rpm-package-key.gpg、yum-key.gpg文件复制到各node节点的root主目录中

rpm --import rpm-package-key.gpg      导入密钥

                  rpm –import yum-key.gpg                       导入密钥

 

                  执行yum安装

yum  install  docker-ce  kubeadm  kubelet  kubectl(kubectl能够不装)

 

  1. 其余配置同master同样,主要是镜像的拉取须要注意

 

  • node节点上运行kubeadm join

在node一、node2上执行kubeadm join命令将,将两个节点注册到cluster中。命令以下:

         kubeadm join --token *********  192.168.6.128:6443

         其中*****来自前面master节点作kubeadm init时命令输出的提示,若是没有记录下来,能够经过kubeadm token list查看

 

  • 确认kubernetes集群运行正常

在master节点上运行kubectl get nodes查看节点的状态,全部的节点状态应该都是READY。

若是不是READY,就要继续查看pod的状态,再根据未就绪的pod的名字查看对应的pod的具体运行信息,一般是依赖的镜像没有下载,此时仍然须要根据前面的方式手动下在对应的镜像。

相关文章
相关标签/搜索