k8s诞生于2014年,google出品,如今已经是0202年了,站在岸上学不会游泳,还不搭建个k8s集群来玩玩吗?

机器准备

  • 三台位于国外的服务器
(1)k8s的相关组件官方镜像在国外,国外的服务器能防止下载的时候被block。国内的服务器可以考虑国内的
镜像,网上有相关教程。
(2)一台作为集群的master,另外两台作为node。
(3)用作master的机器cpu核数>=2核,这是k8s对硬件上的硬性规定。
(4)服务器的操作系统这里使用的是ubuntu 16.04 x64版本,其它系统未实验过。

软件版本

  • ubuntu 16.04 x64
  • docker 18.09.7
  • k8s 1.17.3
(1)docker和k8s组件的版本都是安装时默认安装的版本。

前期工作

  • 关闭swap内存
非必选操作。关闭swap是k8s出于性能上的考虑。
(1)修改下面文件
vi /etc/fstab
(2)使用#号注释掉文件内容第二行,注释后如下
UUID=e2048966-750b-4795-a9a2-7b477d6681bf /   ext4    errors=remount-ro 0    1
# /dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
(3)reboot命令重启服务器
(4)top命令查看是否生效
  • 修改主机名字
非必选操作。给主机起个利于分辨的名字,后面使用起来方便。
(1)将master机器的host修改为k8s-master,node的机器host名字修改为k8s-node1和k8s-node2。
hostnamectl set-hostname host-name
(2)执行下面指令使生效
/bin/bash

正式搭建k8s集群

  • 安装docker(master,node上操作)
(1)执行下面命令
apt-get update && apt-get install docker.io
(2)安装完成后,可以通过下面命令查看docker信息
docker info
  • 安装k8s的三个必备组件(master,node上操作)
(1)分别执行下面命令
apt-get update && apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
(2)分别通过执行kubelet kubeadm kubectl可以验证是否安装成功
  • 修改kubelet或者docker使用的cgroup驱动(master,node上操作)
docker默认使用的是cgroup驱动是cgroupfs,而k8s使用的systemd。虽然k8s推荐使用的是systemd,但是貌似网上说有坑,所以这里我选择修改k8s为cgroupfs驱动。
(1)修改/etc/systemd/system/kubelet.service.d/10-kubeadm.conf的文件
vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

(2)在文件中添加增加--cgroup-driver=cgroupfs参数,找到下面那行,末尾添加即可
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --cgroup-driver=cgroupfs"

(3)重启kubelet
systemctl daemon-reload
systemctl restart kubelet
  • 用kubeadm组件初始化cluster(master上操作)
(1)执行下面命令,xxxxxxxxx部分为master机器的固定ip,用来和node机器通信用。集群的组网我选择flannel方式,所以后面固定是--pod-network-cidr=10.244.0.0/16。
kubeadm init --apiserver-advertise-address xxxxxxxxx --pod-network-cidr=10.244.0.0/16
(2)上面命令执行完后会出现一串信息,找到类似下面的信息并保存,后面注册node到master使用。
kubeadm join xxxxxxxx:6443 --token xihr3k.9ivh8jm1c5zysyg3 --discovery-token-ca-cert-hash sha256:ab1590a3ee63c72d9f57f44caf9a459a97fad6f6d31966738e494a1824c74e64
  • master机器上创建普通用户(master操作)
这个是为了下一步配置kubectl使用。
(1)创建用户,指定/bin/bash作为默认shell
useradd -r -m -s /bin/bash xxx
(2)设置密码
passwd xxx
(3)添加sudo权限
usermod -G sudo username


tips:
(1)切换为root用户命令
su
(2)切换为某个普通用户命令
su username
  • 配置kubectl(master操作)
(1)切换到上一步创建的普通用户
su username
(2)执行下面命令
sudo mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
(3)添加kubectl提示功能
sudo echo "source <(kubectl completion bash)" >> ~/.bashrc
  • 安装pod网络(master操作)
(1)之心部署flannel网络的命令
sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 
  • 注册node到master(node操作)
(1)找到kubeadm初始化master时保存的命令,分别在node上执行
kubeadm join xxxxxxxx:6443 --token xihr3k.9ivh8jm1c5zysyg3 --discovery-token-ca-cert-hash sha256:ab1590a3ee63c72d9f57f44caf9a459a97fad6f6d31966738e494a1824c74e64 
  • 查看集群的所有机器(master操作)
(1)使用之前创建的普通用户执行下面指令,看到有三台机器,说明成功了!!!
kubectl get nodes

5d05bfbc-d611-eb11-8da9-e4434bdf6706.png

小结

如果你成功搭建了k8s集群,恭喜你,可以愉快的玩耍了!
如果你还在继续折腾,在解决搭建过程遇到的问题,别灰心,just one more try!

从本文

(1)在搭建的过程中,发现修改了不少配置文件,实际使用的时候最好有backup思想,有backup,没在怕。

reference:

(1)https://kubernetes.io/
(2)《每天5分钟玩转kubernetes》

各位看官如果觉得本文对你有帮助,不妨点个赞和关注!!!

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐