Kubernetes是google团队发起的开源项目,是管理跨多个主机的容器,为管理者提供基本的部署,维护以及应用伸缩。
具有以下优点:
1.易学:轻量级,简单,便于理解。
2.便携:支持多种云平台
3.可扩展:模块化,可任意组合
4.自修复:自动重调度,自动重启,自动复制
1.Kubernetes部署
1.1systemd
关闭节点的selinux和iptables防火墙 所有节点部署docker引擎 server2 3 4相同部署
[root@server2 ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://reg.westos.org"],
"exec-opts":["native.cgroupdriver=systemd"]
}
[root@server2 ~]# systemctl reload docker
[root@server2 ~]# cd /etc/systemd/system/docker.service.d/
[root@server2 docker.service.d]# ls
10-machine.conf
[root@server2 docker.service.d]# rm -f 10-machine.conf
[root@server2 docker.service.d]# ls
[root@server2 docker.service.d]# cd
[root@server2 ~]# systemctl daemon-reload
[root@server2 ~]# systemctl reload docker
[root@server2 ~]# yum remove docker-ce
[root@server2 ~]# yum install -y docker-ce
[root@server2 ~]# systemctl restart docker
[root@server2 ~# docker info
查看到Cgroup Driver变为systemd 
1.2禁用swap分区
server2 3 4同时执行以下命令
[root@server2 ~]# swapoff -a
[root@server2 ~]# vim /etc/fstab
#/dev/mapper/rhel-swap swap swap defaults 0 0
注释掉/etc/fstab 文件中的swap定义
1.3安装部署软件kubeadm
server2 3 4 同时执行以下命令,安装并启用kubectl
[root@server2 ~]# cd /etc/yum.repos.d/
[root@server2 yum.repos.d]# vim k8s.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
[root@server2 yum.repos.d]# yum install -y kubelet kubeadm kubectl
[root@server2 yum.repos.d]# systemctl enable --now kubelet
[root@server2 yum.repos.d]# systemctl enable docker.service
1.4拉取镜像
上传需要的镜像至仓库中 因本地已有所需镜像tar包,直接加载即可
[root@server2 ~]# docker load -i k8s-1.21.3.tar
[root@server2 ~]# docker images | grep ^reg.westos.org/k8s | awk '{system("docker push "$1":"$2"")}' #上传至k8s仓库
[root@server2 ~]# docker tag quay.io/coreos/flannel:v0.14.0 reg.westos.org/library/flannel:v0.14.0
[root@server2 ~]# docker push reg.westos.org/flannel:v0.14.0 #上传至library仓库


1.5初始化集群
初始化集群后注意信息提示,最好复制一份,待会会使用到加入集群的命令。
[root@server2 ~]# kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.westos.org/k8s
#--pod-network-cidr=10.244.0.0/16使用flannel网络组件时必须添加
 
[root@server2 ~]# vim .bash_profile
export KUBECONFIG=/etc/kubernetes/admin.conf
[root@server2 ~]# source .bash_profile
1.6安装flanne网络组件
配置kubectl命令补齐功能
[root@server2 ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc
[root@server2 ~]# kubectl get pod --namespace kube-system

安装flanne网络组件
[root@server2 ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
或者
[root@server2 ~]# kubectl apply -f kube-flannel.yml #注意修改镜像所处仓库信息
[root@server2 ~]# docker images
 
1.7各节点加入集群
加入命令见1.5初始化集群末尾
[root@server3 ~]# kubeadm join 172.25.14.2:6443 --token *****
[root@server4 ~]# kubeadm join 172.25.14.2:6443 --token *****

 server2查看,各节点均为ready,个镜像均为running,集群搭建成功
[root@server2 ~]# kubectl get nodes
[root@server2 ~]# kubectl get pod --namespace kube-system

|