使用kubeadm

环境

节点类型

IP地址

CPU

内存

硬盘

Master

192.168.145.100

1

512MB

20GB

Node1

192.168.145.101

1

512MB

20GB

Node2

192.168.145.102

1

512MB

20GB

所有节点的操作系统为Ubuntu16.04

部署

准备预先环境

  1. 关闭swap;

    swapoff -a
  2. /etc/fstab中的关于swap的记录删掉;

  3. 关闭防火墙(Ubuntu中默认没有防火墙,可以不敲);

    systemctl stop firewalld
    systemctl disable firewalld
  4. 禁用selinux(Ubuntu中默认没有开selinux,可以不敲);

    vim /etc/sysconfig/selinux

安装Docker

  1. 此处参考配置Docker官方配置文档即可;

  2. 为Docker添加镜像加速器以及使用systemd作为cgroupdriver:

    可以使用docker info命令验证是否配置成功

  3. 使配置生效;

安装kubectl,kubelet,kubeadm

官方文档:https://kubernetes.io/docs/setup/independent/install-kubeadm/

https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/

  1. 安装相关必须的软件;

  2. 使用国内的k8s源安装三个软件:

    注意替换BA07F4FB为你执行时显示出的NO_PUBKEY的后八位

  3. 下载相关软件:

配置Master

  1. 初始化Master;

    --pod-network-cidr是指配置节点中的Pod可用IP地址,为内部IP,由于这里使用flannel实现内部网络,因此选用该网段地址作为内部地址;

    --apiserver-advertise-address为Master的IP地址;

    --ignore-preflight-errors是因为此处的Master只有1个CPU,而k8s默认要求最少的CPU数为2,为了让其不报错,添加该参数;

  2. 很遗憾,由于镜像被墙了,所以会有如下错误:

    这些错误都是镜像拉取错误,所以我们需要根据这些信息,去国内的网站上手动pull这些镜像,然后修改其tag。

  3. 从阿里云拉取这些镜像,然后逐个重新打tag:

    注意版本号要与上面错误提示中的镜像版本号一致

  4. 重新初始化Master节点:

    会出现以下提示,提示下一步需要配置使常规用户也能使用,配置Pod的网络:

  5. 配置使常规用户也能使用(在常规用户下使用以下命令):

    同时由于安装是在root下安装的,因此在root下需使用以下命令,使用该命令可以解决报无法访问8080接口的问题:

    为了使用自动补全功能,添加以下语句:

  6. 配置Pod网络:

    根据提示,可以使用kubectl apply -f [podnetwork].yaml命令配置网络,网络类型有多种,可以参考该网站:https://kubernetes.io/docs/concepts/cluster-administration/addons/

    这里使用的是flannel格式,因此相关的yaml文件可以从此处查看:https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml

    将该文件保存至/root/目录下,然后通过以下命令配置网络:

  7. (额外的)默认情况下,Master节点是不能够创建Pod的,因此如果是单机环境的话,需要执行以下命令解除限制:

配置Node节点

  1. 加入Node(使用root用户)

  2. 在Master上检查运行状况:

    我们发现每个Node节点的kube-proxy以及kube-flannel-ds-amd64都没有成功,我们可以使用如下命令去查看该pod的详细信息日志:

    在底部我们会发现是因为该节点上没有k8s.gcr.io/pause:3.1k8s.gcr.io/kube-proxy:v1.14.1quay.io/coreos/flannel:v0.11.0-amd64这三个镜像,因此我们根据之前在Master上pull镜像的操作,为两个Node节点也pull该镜像即可。

    使用以下命令手动pull并且tag即可:

  3. 再次确认状态,可以发现都是Ready了:

清除(Tear down)

清除整个集群

以下操作在Master以及所有的Node上都执行!!!

  1. 执行reset命令:

  2. 清除iptables规则:

  3. 重置IPVS表(IPVS=IP Virtual Server,实现了传输层的负载均衡):

清除指定Node

  1. 在Master上执行以下命令从集群中删除Node:

  2. 在需要被删除的Node中执行reset命令:

  3. 在需要被删除的Node中清除iptables规则:

  4. 在需要被删除的Node中重置IPVS表:

Last updated

Was this helpful?