一、virtualbox 新建至少两个 安装 ubuntu server 16.04.3 的虚拟机(一个master节点,一个node节点)
虚拟机分配资源2核2G(最低1核2G)
二、设置virtualbox [主机网络管理器]
三、设置每台虚拟机的网卡
卡1 :nat网用于连接外网
卡2:host-only 用于内网节点访问,以及宿主机和虚拟机交互
四、.每台虚拟机设置 第二张网卡的 静态地址
$ nano /etc/network/interfaces // ubuntu 是这个文件
# Host only
auto enp0s8 #
iface enp0s8 inet static # 设置静态ip
address 192.168.56.101 # ip 你不要超过DHCP服务器的地址范围就可以了,比如我设置成 192.168.56.101
设置完 虚拟机静态 ip 后,重启network$ /etc/init.d/networking restart
关闭 swap 虚拟内存
$ swapoff -a // 临时关闭
# 想要永久关闭 swap 虚拟内存,需要编辑 /etc/fstab 文件,将 swap 那一行注释调
$ free -m // 查看 swap 是否关闭
五、每台虚拟机下载 docker
下载 docker(可以使用阿里云源加速下载)
$ sudo usermod -a -G docker username // 非root用户设置一下docker的 用户组
可以随便选择一台虚拟机创建本地镜像仓库 (这里我们假设是 192.168.56.101 )
$ docker pull registry
$ docker run --restart always -p 5000:5000 -v /root/images_registry:/var/lib/registry -d registry
设置每台虚拟机的 /etc/docker/daemon.json
{
"insecure-registries":[
"http://192.168.56.101:5000", // 本地镜像仓库地址
],
"registry-mirrors":[
"http://f1361db2.m.daocloud.io", // 国内加速
"http://docker.mirrors.ustc.edu.cn/" // 国内加速
]
}
然后重启 docker
六、每台虚拟机下载 kubernetes
$ apt-get install kubelet kubeadm kubectl -y // 下载 kubelet kubeadm kubectl(可以使用阿里云源加速下载)
$ kubeadm config images list // 查看 k8s 搭建所依赖的 docker 镜像,终端列出的所有镜像在没有上梯子前提下很难下载,可以自己自己百度替换方式
在安装好 k8s 搭建所依赖的 docker 镜像后
我们可以选一台虚拟机作为 master 节点 ,并且只需要在master 节点安装网络插件 flannel;
假设我们使用 192.168.56.101
这台虚拟机作为master节点
在 /etc/sysctl.conf 文件尾部集上
net.bridge.bridge-nf-call-iptables = 1
然后
$ sysctl -p
初始化集群
$ kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.56.101
虚拟机配置 1核2G 时需要加上 --ignore-preflight-errors=NumCPU
$ kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.56.101 --ignore-preflight-errors=NumCPU
等待初始化之后终端会有一些提示命令告诉我们后续步骤
// 这是在master节点执行的
$ mkdir .kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
配置初始化网络插件
// 下载 flannel yml 文件
$ wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
// 修改 配置
$ nano kube-flannel.yml // 添加上 iface= enp0s8
$ kubectl apply -f kube-flannel.yml
// 最后在node节点执行在 kubeadm init 阶段 终端提示的 join 命令,类似下方的样子
kubeadm join 192.168.31.55:6443 --token d3rzsv.ay7cohax9u5at43s --discovery-token-ca-cert-hash sha256:962925e34bc13d796f3bb6be65d2ffa6cdcd56c14a517982c583daa5ab81210d
七、查看集群状态
$ kubectl get nodes // 查看node
$ kubectl get pod --all-namespaces // 查看pod
$ kubectl get svc --all-namespaces //查看service
成功了,status 都是 ready ?
========================================================================================
节点重置:
master 重新初始化 或 node 重新join后
$ systemctl daemon-reload
$ systemctl restart docker
错误排查
如果集群中的 node 出现 NotReady 说明有问题
1.查看没有 running 的 pod
kubectl get pod --all-namespaces
2.查看不正常 pod 的详情
kubectl describe pod <NAME> -n <NAMESPACE>