Ubuntu环境搭建Kubernetes1.13.1集群

部署软件环境版本

操作系统: Ubuntu 18.10(本教程采用server版本)

Docker: docker-ce 18.06

Kubernetes: k8s 1.13.1

Ubuntu搭建研发环境

我们直接下载Unbuntu18.10-server版本,server版本的好处是没有Desktop,可以节省资源。

wget http://mirrors.aliyun.com/ubuntu-releases/18.10/ubuntu-18.10-live-server-amd64.iso

Ubuntu安装过程

创建虚拟机

在这里插入图片描述

这里注意选择CPU,选择处理器数量为2!!!在这里插入图片描述

我这里选择1,结果后面在安装的时候就会报

error execution phase preflight: [preflight] Some fatal errors occurred:
        [ERROR NumCPU]: the number of available CPUs 1 is less than the required 2
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`

所以牢记cpu选择2,免得后面要重新设置就很麻烦。
在这里插入图片描述

在这里插入图片描述

图形界面安装方式

选择英文语言
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
设置国内镜像源头 http://mirrors.aliyun.com/ubuntu/ 注意末尾的斜线,我这里居然忘记添加末尾的斜线,不过貌似没啥问题?最好还是加上末尾的斜线吧。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
切勿选择 microk8s snap stable: v1.14.2 空格选中
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
重启之后就完成了。

修改root密码

  1. 安装过程中,输入用户名 YOUR_USERNAME 密码: YOUR_PASSWORD
  2. 重新启动后登录 用户名 YOUR_USERNAME 密码: YOUR_PASSWORD
  3. 确认登录成功后输入sudo passwd 输入上面的YOUR_PASSWORD,然后输入root用户的密码root
设置root用户的密码root,是为了教学过程中简单。
但是在生产环境下禁止使用弱强度的密码。
  1. 执行exit退出当前登录用户,然后使用root用户重新登录
  2. 输入shutdown now停机

在这里插入图片描述

修改主机名

修改主机名称

  1. 使用root用户登录
  2. 打开配置文件vim /etc/cloud/cloud.cfg
  3. 修改配置preserve_hostname: true

在这里插入图片描述

在这里插入图片描述

重启

$ shutdown -r now

配置静态IP(永久有效)(NAT模式)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

修改hosts

使用root用户登录

  1. 打开hosts文件 vim /etc/hosts

  2. 输入如下内容

    192.168.236.177 master
    

    这个ip是当前桥接或者NAT分配的IP地址

  3. 重启机器shutdown -r now

在这里插入图片描述

在这里插入图片描述

ip应用启动:

$netplan apply

Docker-CE安装及配置

基础准备

  1. Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的 Ubuntu 版本是否支持 Docker。
uname -r 
4.18.0-21-generic(主版本必须保持一致)

在这里插入图片描述

  1. 安装curl

我们先使用secureCRT连接。
在这里插入图片描述
接下来我们安装curl

首先切换root用户

apt-get update && apt-get install -y curl telnet wget man  apt-transport-https  ca-certificates  software-properties-common vim

在这里插入图片描述

  1. 查看新版本号
  • Ubuntu 18.10
  $ lsb_release -c
  Codename:	cosmic

在这里插入图片描述

  1. 查看确认国内源
    	$ cp /etc/apt/sources.list /etc/apt/sources.list.bak
    	$ cat /etc/apt/sources.list
    
    在这里插入图片描述

在线安装Docker-ce(本教程不推荐)

(建议下面的手动安装方式,因为在线可能会出现版本不一致)

注意: 该国内源目前提供的版本,与k8s不符。k8s推荐安装Docker ce 18.06

  1. 安装GPG秘钥和添加国内镜像
  $ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

添加国内源头

   $ sudo add-apt-repository "deb  https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable" 
  1. 更新国内源路径
$ apt update

3.安装查看版本指令

$ apt-get install -y apt-show-versions

4.查看docker-ce版本号

$ apt-show-versions -a docker-ce
  1. 在线安装Docker-ce
$ sudo apt-get update && apt-get install -y docker-ce

手动安装Docker(离线安装)

  1. 下载docker-ce_18.06.1\~ce\~3-0\~ubuntu_amd64.deb
  2. 上传到上述文件到待安装服务器master

在这里插入图片描述

在这里插入图片描述

  1. 登录待安装服务器,切换到root账户
  2. dpkg -i docker-ce_18.06.1\~ce\~3-0\~ubuntu_amd64.deb

如果提示错误

dpkg: error: dpkg frontend is locked by another process

说明已经有其他进程在使用dpkg安装程序

sudo rm /var/lib/dpkg/lock

即可。

如果提示错误

root@master:/home/master# dpkg -i docker-ce_18.06.1\~ce\~3-0\~ubuntu_amd64.deb
Selecting previously unselected package docker-ce.
(Reading database ... 100354 files and directories currently installed.)
Preparing to unpack docker-ce_18.06.1~ce~3-0~ubuntu_amd64.deb ...
Unpacking docker-ce (18.06.1~ce~3-0~ubuntu) ...
dpkg: dependency problems prevent configuration of docker-ce:
 docker-ce depends on libltdl7 (>= 2.4.6); however:
  Package libltdl7 is not installed.

dpkg: error processing package docker-ce (--install):
 dependency problems - leaving unconfigured
Processing triggers for man-db (2.8.4-2) ...
Processing triggers for systemd (239-7ubuntu10.12) ...
Errors were encountered while processing:
 docker-ce
root@master:/home/master# 

在这里插入图片描述

表示当前docker-ce 依赖系统libltd17库,安装就可以了

$ apt-get install -y libltdl7

在这里插入图片描述

在这里插入图片描述

  1. 检查docker是否安装成功
docker version 

在这里插入图片描述

确保版本号是 18.06

启动Docker-ce

  1. 开机并启动docker
sudo systemctl enable docker 
sudo systemctl start docker 

在这里插入图片描述

  1. 重启,登录确认docker已经运行
 sudo docker ps

发现报如下错误:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.38/containers/json: dial unix /var/run/docker.sock: connect: permission denied

在这里插入图片描述

我们需要将当前的普通用户添加到当前的docker用户组中

sudo groupadd docker
sudo usermod -aG docker $USER
exit

在这里插入图片描述
重新登录使用普通用户登录:
在这里插入图片描述

就可以使用了。

  1. 下载Alpine镜像热身一下 Docker
~$ sudo docker run -it --rm alpine:latest sh 

在这里插入图片描述

输出内容如下,我们在Docker容器中测试三个命令,分别是

- `date`
- `time`
- `uname -r`

申请阿里云镜像加速器

申请步骤如下

在阿里云注册自己账户

找到容器镜像服务,参考网址如下

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

点开左侧菜单镜像中心—>镜像加速器

右侧加速器地址,即使私人专属的镜像加速器地址,点击复制

在这里插入图片描述

docker配置国内镜像加速器

目的 : 为了下载docker镜像更快

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器。

创建/etc/docker/daemon.json文件,内容如下:

{
  "registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]
}

在这里插入图片描述

重启docker服务

# 重载所有修改过的配置文件
sudo systemctl daemon-reload
# 重启Docker服务
sudo systemctl restart docker

在这里插入图片描述

建议在安装的过程中,保存虚拟机的快照,这样防止误操作导致环境崩坏。

Kubernetes 安装及部署

k8s安装环境准备

配置并安装k8s国内源

  1. 创建配置文件sudo touch /etc/apt/sources.list.d/kubernetes.list

  2. 添加写权限

$ sudo chmod 666 /etc/apt/sources.list.d/kubernetes.list 

在这里插入图片描述

再添加,内容如下:

   deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main

在这里插入图片描述

  1. 执行sudo apt update 更新操作系统源,开始会遇见如下错误
    在这里插入图片描述
root@master:/home/master# vim /etc/apt/sources.list.d/kubernetes.list 
root@master:/home/master# sudo apt update
Get:1 http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial InRelease [8,993 B]
Hit:2 http://mirrors.aliyun.com/ubuntu cosmic InRelease   
Err:1 http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial InRelease     
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6A030B21BA07F4FB
Hit:3 http://mirrors.aliyun.com/ubuntu cosmic-updates InRelease                 
Hit:4 http://mirrors.aliyun.com/ubuntu cosmic-backports InRelease              
Hit:5 http://mirrors.aliyun.com/ubuntu cosmic-security InRelease                
Reading package lists... Done                                                   
W: GPG error: http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6A030B21BA07F4FB
E: The repository 'http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
root@master:/home/master# 

其中:

  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6A030B21BA07F4FB

签名认证失败,需要重新生成。记住上面的NO_PUBKEY 6A030B21BA07F4FB

  1. 添加认证key

    运行如下命令,添加错误中对应的key(错误中NO_PUBKEY后面的key的后8位)

   gpg --keyserver keyserver.ubuntu.com --recv-keys BA07F4FB

在这里插入图片描述

接着运行如下命令,确认看到OK,说明成功,之后进行安装:

   gpg --export --armor BA07F4FB | sudo apt-key add -

在这里插入图片描述

  1. 再次重新sudo apt update更新系统下载源数据列表
root@master:/home/master# su master
master@master:~$ sudo apt update
[sudo] password for master: 
Get:1 http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial InRelease [8,993 B]
Hit:2 http://mirrors.aliyun.com/ubuntu cosmic InRelease    
Ign:3 http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial/main amd64 Packages                  
Get:3 http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial/main amd64 Packages [28.4 kB]        
Hit:4 http://mirrors.aliyun.com/ubuntu cosmic-updates InRelease               
Hit:5 http://mirrors.aliyun.com/ubuntu cosmic-backports InRelease                                                 
Hit:6 http://mirrors.aliyun.com/ubuntu cosmic-security InRelease                                         
Fetched 28.4 kB in 1s (44.9 kB/s)                  
Reading package lists... Done
Building dependency tree       
Reading state information... Done
92 packages can be upgraded. Run 'apt list --upgradable' to see them.
master@master:~$ 

在这里插入图片描述

以上没有报和错误异常,表示成功。

禁止基础设施

  1. 禁止防火墙
   $ sudo ufw disable
   Firewall stopped and disabled on system startup
  1. 关闭swap并查看
master@master:~$ top

在这里插入图片描述

master@master:~$ top
top - 13:16:35 up 32 min,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 160 total,   1 running, 159 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1969.9 total,   1126.7 free,    253.8 used,    589.4 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   1564.0 avail Mem 
   # 成功(临时关闭)
   $ sudo swapoff -a 
   # 永久关闭swap分区
   $ sudo sed -i 's/.*swap.*/#&/' /etc/fstab

或者可以

sudo vim /etc/fstab 

在这里插入图片描述

然后重启之后查看

在这里插入图片描述

  1. 禁止selinux
# 安装操控selinux的命令
$ sudo apt install -y selinux-utils
# 禁止selinux
$ setenforce 0
# 重启操作系统
$ shutdown -r now
# 查看selinux是否已经关闭
$ sudo getenforce
Disabled(表示已经关闭)

在这里插入图片描述

在这里插入图片描述

重启之后查看

在这里插入图片描述

k8s系统网络配置

(1) 配置内核参数,将桥接的IPv4流量传递到iptables的链

创建/etc/sysctl.d/k8s.conf文件

添加内容如下:

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness = 0

在这里插入图片描述

(2) 执行命令使修改生效

# 【候选】建议执行下面的命令
$ sudo modprobe br_netfilter
$ sudo sysctl -p /etc/sysctl.d/k8s.conf

在这里插入图片描述

安装k8s

注意: 切换到root用户 $ su

  1. 安装Kubernetes 目前安装版本 v1.13.1
   $ apt update && apt-get install -y kubelet=1.13.1-00 kubernetes-cni=0.6.0-00 kubeadm=1.13.1-00 kubectl=1.13.1-00

在这里插入图片描述

  1. 设置为开机重启
   $ sudo systemctl enable kubelet && systemctl start kubelet
   $ sudo shutdown -r now

在这里插入图片描述

验证k8s

  1. 使用root用户登录Master主机

  2. 执行如下个命令

   kubectl get nodes 

输出如下

   $ kubectl get nodes
   The connection to the server localhost:8080 was refused - did you specify the right host or port?
  1. 查看当前k8s版本
   $ kubectl version
Client Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.1", GitCommit:"eec55b9ba98609a46fee712359c7b5b365bdd920", GitTreeState:"clean", BuildDate:"2018-12-13T10:39:04Z", GoVersion:"go1.11.2", Compiler:"gc", Platform:"linux/amd64"}
The connection to the server localhost:8080 was refused - did you specify the right host or port?

在这里插入图片描述

创建Kubernetes多主机集群环境

创建两个节点(两个虚拟机)

  1. 在VMWare中创建完整克隆,分别命名为node1-k8snode2-k8s

在这里插入图片描述

在这里插入图片描述
通过如此方法克隆node2
在这里插入图片描述

分别对两个完整克隆的虚拟机进行如下操作,修改主机名称

  1. 使用root用户登录
  2. 打开配置文件vim /etc/cloud/cloud.cfg
  3. 修改配置preserve_hostname: true
    在这里插入图片描述

master和node基础配置

给node配置hostname

修改/etc/hostname,只有一行 node1node2

node1主机

sudo vim /etc/hostname

在这里插入图片描述

node2主机

sudo vim /etc/hostname

在这里插入图片描述

配置IP地址

  • master

/etc/netplan/50-cloud-init.yaml

network:
    ethernets:
        ens33:
            addresses: [192.168.174.133/24]
            dhcp4: false
            gateway4: 192.168.174.2
            nameservers:
                       addresses: [192.168.174.2]
            optional: true
    version: 2

重启ip配置

sudo netplan apply
  • node1

/etc/netplan/50-cloud-init.yaml

network:
    ethernets:
        ens33:
            addresses: [192.168.174.134/24]
            dhcp4: false
            gateway4: 192.168.174.2
            nameservers:
                       addresses: [192.168.174.2]
            optional: true
    version: 2

在这里插入图片描述
重启ip配置

sudo netplan apply
  • node2

/etc/netplan/50-cloud-init.yaml

network:
    ethernets:
        ens33:
            addresses: [192.168.174.135/24]
            dhcp4: false
            gateway4: 192.168.174.2
            nameservers:
                       addresses: [192.168.174.2]
            optional: true
    version: 2

在这里插入图片描述

重启ip配置

sudo netplan apply

修改hosts文件

注意: (Master、Node1、Node2都需要配置)

使用root用户登录

  1. 打开hosts文件 vim /etc/hosts

  2. 输入如下内容

   192.168.174.133 master
   192.168.174.134 node1
   192.168.174.135 node2

在这里插入图片描述

  1. 重启机器shutdown -r now

配置Master节点

创建工作目录

$ sudo mkdir /home/master/working
$ cd /home/master/working/

在这里插入图片描述

创建kubeadm.conf配置文件

  1. 创建k8s的管理工具kubeadm对应的配置文件,之后操作在home/master/working/目录下

使用kubeadm配置文件,通过在配置文件中指定docker仓库地址,便于内网快速部署。

切换root用户,然后生成配置文件

 kubeadm config print init-defaults ClusterConfiguration > kubeadm.conf

在这里插入图片描述

  1. 修改kubeadm.conf中的如下两项:
  • imageRepository
  • kubernetesVersion
vi kubeadm.conf
# 修改 imageRepository: k8s.gcr.io
# 改为 registry.cn-beijing.aliyuncs.com/imcto
imageRepository: registry.cn-beijing.aliyuncs.com/imcto
# 修改kubernetes版本kubernetesVersion: v1.13.0
# 改为kubernetesVersion: v1.13.1
kubernetesVersion: v1.13.1

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
3. 修改kubeadm.conf中的API服务器地址,后面会频繁使用这个地址。

  • localAPIEndpoint:
localAPIEndpoint:
  advertiseAddress: 192.168.174.133
  bindPort: 6443

在这里插入图片描述

注意: 192.168.174.133是master主机的ip地址

  1. 配置子网网络
networking:
  dnsDomain: cluster.local
  podSubnet: 10.244.0.0/16
  serviceSubnet: 10.96.0.0/12
scheduler: {}

在这里插入图片描述

在这里插入图片描述

这里的10.244.0.0/1610.96.0.0/12分别是k8s内部pods和services的子网网络,最好使用这个地址,后续flannel网络需要用到。

拉取K8s必备的模块镜像

  1. 查看一下都需要哪些镜像文件需要拉取
$ kubeadm config images list --config kubeadm.conf
registry.cn-beijing.aliyuncs.com/imcto/kube-apiserver:v1.13.1
registry.cn-beijing.aliyuncs.com/imcto/kube-controller-manager:v1.13.1
registry.cn-beijing.aliyuncs.com/imcto/kube-scheduler:v1.13.1
registry.cn-beijing.aliyuncs.com/imcto/kube-proxy:v1.13.1
registry.cn-beijing.aliyuncs.com/imcto/pause:3.1
registry.cn-beijing.aliyuncs.com/imcto/etcd:3.2.24
registry.cn-beijing.aliyuncs.com/imcto/coredns:1.2.6

在这里插入图片描述

  1. 拉取镜像
#下载全部当前版本的k8s所关联的镜像
kubeadm config images pull --config ./kubeadm.conf

在这里插入图片描述

初始化kubernetes环境

#初始化并且启动
$ sudo kubeadm init --config ./kubeadm.conf

结果发现报了如下错误:

root@master:/home/master/working# sudo kubeadm init --config ./kubeadm.conf
[init] Using Kubernetes version: v1.13.1
[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:
        [ERROR NumCPU]: the number of available CPUs 1 is less than the required 2
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`

所以一开始的虚拟机CPU的处理器数量要选择2。我们重新对master和node1和node2进行设置。

更多kubeadm配置文件参数详见

kubeadm config print-defaults

然后我们设置完毕之后重新执行命令

$ sudo kubeadm init --config ./kubeadm.conf

在这里插入图片描述

k8s启动成功输出内容较多,但是记住末尾的内容

Your Kubernetes master has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of machines by running the following on each node
as root:

  kubeadm join 192.168.174.133:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:8476ea088b475863dfa5a8a642ae3bc3db5df32b3b8b5526f777d411397b8bb7

按照官方提示,执行以下操作。

切换到普通的master用户

  1. 执行如下命令
   $ mkdir -p $HOME/.kube
   $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
   $ sudo chown $(id -u):$(id -g) $HOME/.kube/config
  1. 创建系统服务并启动
   # 启动kubelet 设置为开机自启动
   $ sudo systemctl enable kubelet
   # 启动k8s服务程序
   $ sudo systemctl start kubelet

验证kubernetes启动结果

  1. 验证输入,注意显示master状态是NotReady,证明初始化服务器成功
$ kubectl get nodes
NAME     STATUS     ROLES    AGE   VERSION
master   NotReady   master   12m   v1.13.1

在这里插入图片描述

  1. 查看当前k8s集群状态
$ kubectl get cs
NAME                 STATUS    MESSAGE              ERROR
scheduler            Healthy   ok
controller-manager   Healthy   ok
etcd-0               Healthy   {"health": "true"}

在这里插入图片描述

目前只有一个master,还没有node,而且是NotReady状态,那么我们需要将node加入到master管理的集群中来。在加入之前,我们需要先配置k8s集群的内部通信网络,这里采用的是flannel网络。

部署集群内部通信flannel网络

$cd $HOME/working
$sudo wget https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

在这里插入图片描述

编辑这个文件,确保flannel网络是对的,找到net-conf.json标记的内容是否正确。

 net-conf.json: |
    {
      "Network": "10.244.0.0/16",
      "Backend": {
        "Type": "vxlan"
      }

在这里插入图片描述

这个"10.244.0.0/16"和 ./kubeadm.conf中的podsubnet的地址要一致。

应用当前flannel配置文件

master@master:~/working$ sudo kubectl apply -f kube-flannel.yml 

输出结果如下

master@master:~/working$ sudo kubectl apply -f kube-flannel.yml 
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.extensions/kube-flannel-ds-amd64 created
daemonset.extensions/kube-flannel-ds-arm64 created
daemonset.extensions/kube-flannel-ds-arm created
daemonset.extensions/kube-flannel-ds-ppc64le created
daemonset.extensions/kube-flannel-ds-s390x created
master@master:~/working$ 

在这里插入图片描述

安装flannel网络前 执行kubectl get nodes输出结果如下

master@master:~/working$ kubectl get node
NAME     STATUS     ROLES    AGE   VERSION
master   NotReady   master   4m10s   v1.13.1

安装flannel网络后 执行kubectl get nodes输出结果如下

master@master:~/working$ kubectl get node
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   10m   v1.13.1

此时master已经是Ready状态了,表示已经配置成功了,那么我们就需要配置node来加入这个集群。

如果一直还是NotReady状态,可以用如下命令查看pod运行状态

sudo kubectl get pods --all-namespaces

在这里插入图片描述

可以看到集群中有许多的pod的状态不是RUNNING状态,而是Pending、ContainerCreating、ImagePullBackOff之类的没有就绪的状态,但通过这个命令我们可以查看到那些未就绪的pod的名字

然后我们通过如下命令,查看某一特定pod的具体情况

kubectl describe pod <pod name> --namespace=kube-system
kubectl describe pod kube-flannel-ds-amd64-d9rjr --namespace=kube-system

在这里插入图片描述

可以看到某一特定pod的运行状态,命令的输出中就可以看到是某一特定的镜像拉取失败,从这里就可以看到镜像名了,例如镜像名为quay.io/coreos/flannel:v0.11.0-amd64的镜像拉取失败

我们可以通过手动拉取镜像
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

之后重新执行

kubectl apply –f kube-flannel.yml

如果还是下载不下来的话,只能用科学上网抢救一下了。。

在这里插入图片描述

配置Node

确认外部环境

  1. 确认关闭swap
   sudo apt install -y selinux-utils
   sudo swapoff -a
  1. 禁止selinux
    sudo setenforce 0
  1. 确认关闭防火墙
   sudo ufw disable

配置k8s集群的Node主机环境

  1. 启动k8s后台服务
   # 启动kubelet 设置为开机自启动
   $ sudo systemctl enable kubelet
   # 启动k8s服务程序
   $ sudo systemctl start kubelet
  1. 将master机器的/etc/kubernetes/admin.conf传到到node1和node2

    登录master终端

   #将admin.conf传递给node1
    sudo scp /etc/kubernetes/admin.conf [email protected]:/home/master/ 
   #将admin.conf传递给node2
   sudo scp /etc/kubernetes/admin.conf [email protected]:/home/master/ 

在这里插入图片描述

  1. 登录node1终端,创建基础kube配置文件环境
$ mkdir -p $HOME/.kube
$ sudo cp -i $HOME/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
  1. 登录node2终端,创建基础kube配置文件环境
$ mkdir -p $HOME/.kube
$ sudo cp -i $HOME/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
  1. node1node2分别连接master加入master集群。这里用的是kubeadm join指令
$  sudo kubeadm join 192.168.174.133:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:8476ea088b475863dfa5a8a642ae3bc3db5df32b3b8b5526f777d411397b8bb7

这里要注意,使用的hash应该是master主机 kubeadm init成功之后生成的hash码。

在这里插入图片描述

  1. 应用两个node主机分别应用flannel网络

master中的kube-flannel.yml分别传递给两个node节点.

#将kube-flannel.yml传递给node1
sudo scp $HOME/working/kube-flannel.yml [email protected]:/home/master/ 
#将kube-flannel.yml传递给node2
sudo scp $HOME/working/kube-flannel.yml [email protected]:/home/master/ 

分别启动flannel网络

master@node1:~$ kubectl apply -f kube-flannel.yml 
master@node2:~$ kubectl apply -f kube-flannel.yml
  1. 查看node是否已经加入到k8s集群中(需要等一段时间才能ready)
master@node2:~$ kubectl get nodes
NAME     STATUS   ROLES    AGE     VERSION
master   Ready    master   35m     v1.13.1
node1    Ready    <none>   2m23s   v1.13.1
node2    Ready    <none>   40s     v1.13.1

在这里插入图片描述

到这里Kubernetes集群的搭建就完成了。

发布了647 篇原创文章 · 获赞 816 · 访问量 98万+

猜你喜欢

转载自blog.csdn.net/cckevincyh/article/details/98991859