使用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
部署
准备预先环境
关闭swap;
swapoff -a将
/etc/fstab中的关于swap的记录删掉;关闭防火墙(Ubuntu中默认没有防火墙,可以不敲);
systemctl stop firewalld systemctl disable firewalld禁用selinux(Ubuntu中默认没有开selinux,可以不敲);
vim /etc/sysconfig/selinux
安装Docker
此处参考配置Docker官方配置文档即可;
为Docker添加镜像加速器以及使用systemd作为cgroupdriver:
可以使用
docker info命令验证是否配置成功使配置生效;
安装kubectl,kubelet,kubeadm
官方文档:https://kubernetes.io/docs/setup/independent/install-kubeadm/
https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/
安装相关必须的软件;
使用国内的k8s源安装三个软件:
注意替换
BA07F4FB为你执行时显示出的NO_PUBKEY的后八位下载相关软件:
配置Master
初始化Master;
--pod-network-cidr是指配置节点中的Pod可用IP地址,为内部IP,由于这里使用flannel实现内部网络,因此选用该网段地址作为内部地址;--apiserver-advertise-address为Master的IP地址;--ignore-preflight-errors是因为此处的Master只有1个CPU,而k8s默认要求最少的CPU数为2,为了让其不报错,添加该参数;很遗憾,由于镜像被墙了,所以会有如下错误:
这些错误都是镜像拉取错误,所以我们需要根据这些信息,去国内的网站上手动pull这些镜像,然后修改其tag。
从阿里云拉取这些镜像,然后逐个重新打tag:
注意版本号要与上面错误提示中的镜像版本号一致
重新初始化Master节点:
会出现以下提示,提示下一步需要配置使常规用户也能使用,配置Pod的网络:
配置使常规用户也能使用(在常规用户下使用以下命令):
同时由于安装是在root下安装的,因此在root下需使用以下命令,使用该命令可以解决报无法访问8080接口的问题:
为了使用自动补全功能,添加以下语句:
配置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/目录下,然后通过以下命令配置网络:(额外的)默认情况下,Master节点是不能够创建Pod的,因此如果是单机环境的话,需要执行以下命令解除限制:
配置Node节点
加入Node(使用root用户)
在Master上检查运行状况:
我们发现每个Node节点的
kube-proxy以及kube-flannel-ds-amd64都没有成功,我们可以使用如下命令去查看该pod的详细信息日志:在底部我们会发现是因为该节点上没有
k8s.gcr.io/pause:3.1、k8s.gcr.io/kube-proxy:v1.14.1和quay.io/coreos/flannel:v0.11.0-amd64这三个镜像,因此我们根据之前在Master上pull镜像的操作,为两个Node节点也pull该镜像即可。使用以下命令手动pull并且tag即可:
再次确认状态,可以发现都是Ready了:
清除(Tear down)
清除整个集群
以下操作在Master以及所有的Node上都执行!!!
执行reset命令:
清除iptables规则:
重置IPVS表(IPVS=IP Virtual Server,实现了传输层的负载均衡):
清除指定Node
在Master上执行以下命令从集群中删除Node:
在需要被删除的Node中执行reset命令:
在需要被删除的Node中清除iptables规则:
在需要被删除的Node中重置IPVS表:
Last updated
Was this helpful?