安装K8S
继续踩坑
一、K8S集群部署-环境准备
国内安装k8s的四种途径
1.使用kubeadmin通过离线镜像安装,主流的,国内无法直连谷歌的中央仓库,至少华为、七牛云、青云是这么用的
2.使用阿里云平台的k8s服务,挺贵的,有些创业公司在用,仅仅是在用哦
3.yum官方仓库安装,能用,但是很老,如果仅仅是科普的话,作为入门了解还是可以玩玩的,有些应届生就是这么干的
4.二进制包安装(kubeasz),经常逛博客、github的同仁估计是玩过,反正我没玩过,单位的前辈说慎用,不安全,bug还贼多。
实验的机器资源
本地虚拟机,每台虚拟机设置静态IP,这是常规操作,已经是一种魔怔了
CentOS 7 Master*1
Master:192.168.149.120
CentOS 7 Node*2
Slave1:192.168.149.121
Slave2:192.168.149.122
三个虚拟机的配置是一致的,4G内存、2个CPU。K8S必须是多核的,单核是不行的。具体的可以参看官网文档。
1.设置主机名与时区
timedatectl set-timezone Asia/Shanghai #三点节点都需要执行,时区统一
hostnamectl set-hostname master #主节点执行
hostnamectl set-hostname salve1 #slave1节点执行
hostnamectl set-hostname slave2 #slave2节点执行
2.进行网络配置,添加hosts网络主机配置,三台虚拟机都要配置
vim /etc/hosts
192.168.149.120 master
192.168.149.121 slave1
192.168.149.122 slave2
经过如上的设置,三个节点能相互ping通,这一步非常关键,这一步一定要仔细检查,否则后面都是白搭。
3.关闭防火墙,三台虚拟机都要设置,生产环境跳过这一步,极度危险
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl disable firewalld
systemctl stop firewalld
二、安装Kubeadm快速部署工具
1.在三个节点上安装docker
systemctl start docker
systemctl enable docker
2.确保从cgroup均在同一个从groupfs
docker info | grep cgroup
如果不是groupfs,则需要执行下列语句
cat << EOF > /etc/docker/daemon.json { "exec-opts":["native.cgroupdriver=cgroupfs"] } EOF
systemctl daemon-reload && systemctl restart docker
3.安装kubeadm
cd /usr/local/k8s-install/k8s-package
解压文件kube114-rpm.tar.gz
cd kube114-rpm
yum localinstall -y *.rpm
4.关闭交换区
4.1、swapoff -a
4.2、vim /etc/fstab
#swap一行注释
5.配置网桥
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
6. 通过镜像安装k8s
cd /usr/local/k8s-install/k8s-package
docker load -i k8s-114-images.tar.gz #加载本地镜像文件
docker load -i flannel-dashboard.tar.gz
查看安装之后的镜像
红色方框外的镜像是我另外安装的,剩下的镜像就是咱们k8s的了。
三、重新启动k8s服务
Kubeadm/kubelet/kubectl区别
kubeadm是k8s集群快速构建工具
kubelet运行在所有节点上,负责启动POD和容器,以系统服务形式出现
kubectl是k8s命令行工具,提供指令
启动节点命令
启动节点的k8s服务
systemctl start kubelet
设置开机启动
systemctl enable kubelet
四、利用Kubeadm构建集群
1.master主服务器配置
kubeadm init --kubernetes-version=v1.14.1 --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes
NotReady说明有服务没准备好
kubectl get pod --all-namespaces
发现一个现象,即coredns进程一直启动不起来,百度之后,需要安装flannel网络组件。pod彼此之间是天然隔离的,需要他们自己通信,就必须要安装该网络组件
kubectl create -f kube-flannel.yml
现在发现所有底层进程全部启动成功了。
截止到现在,也只是说明master节点启动成功了,但是k8s可是集群了,集群的slave节点还需要继续设置哦
在master节点执行操作
kubeadm token list
TOKEN | TTL | EXPIRES | USAGES | DESCRIPTION | EXTRA GROUPS |
6isnjg.51wiscyhw5i3o2u1 | 23h | 2021-01-26T11:00:19+08:00 | authentication,signing | The default bootstrap token generated by 'kubeadm init'. | system:bootstrappers:kubeadm:default-node-token |
在两个从节点上执行如下指令,即可将从节点加入到该集群中
kubeadm join 192.168.137.120:6443 --token 6isnjg.51wiscyhw5i3o2u1 --discovery-token-unsafe-skip-ca-verification
集群总算启动成功了。
五、开启Web UI Dashboard
---------------------------------------------------
作者:杨兮臣
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用闲暇时间,把自己毕生所学整理一下,感谢行业的技术大咖