手记

ubuntu18.04 + virtualbox + nat + host-only 搭建 k8s 集群记录

一、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>
0人推荐
随时随地看视频
慕课网APP