Docker & kubernetes(k8s) 集群搭建

您所在的位置:网站首页 北大什么什么学院 Docker & kubernetes(k8s) 集群搭建

Docker & kubernetes(k8s) 集群搭建

2023-09-10 18:26| 来源: 网络整理| 查看: 265

文章目录 kubernetes介绍:kubernetes组件:kubernetes安装:kubernetes集群搭建:1.管理节点初始化2. 开启kubelet服务,加入集群3.创建普通用户,进行集群管理4. 网络配置 可视化插件网页登陆:

kubernetes介绍:

kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。

K8s的中文社区网站:正不正规不确定,但是写的内容可以参考 http://docs.kubernetes.org.cn/

kubernetes组件:

在这里插入图片描述

•Kubernetes 组件:   Kubernetes Master控制组件,调度管理整个系统(集群),包含如下组件:   1.Kubernetes API Server     作为Kubernetes系统的入口,其封装了核心对象的增删改查操作,以RESTful API接口方式提供给外部客户和内部组件调用。维护的REST对象持久化到Etcd中存储。   2.Kubernetes Scheduler     为新建立的Pod进行节点(node)选择(即分配机器),负责集群的资源调度。组件抽离,可以方便替换成其他调度器。   3.Kubernetes Controller     负责执行各种控制器,目前已经提供了很多控制器来保证Kubernetes的正常运行。   4. Replication Controller     管理维护Replication Controller,关联Replication Controller和Pod,保证Replication Controller定义的副本数量与实际运行Pod数量一致。   5. Node Controller     管理维护Node,定期检查Node的健康状态,标识出(失效|未失效)的Node节点。   6. Namespace Controller     管理维护Namespace,定期清理无效的Namespace,包括Namesapce下的API对象,比如Pod、Service等。   7. Service Controller     管理维护Service,提供负载以及服务代理。   8.EndPoints Controller     管理维护Endpoints,关联Service和Pod,创建Endpoints为Service的后端,当Pod发生变化时,实时更新Endpoints。   9. Service Account Controller     管理维护Service Account,为每个Namespace创建默认的Service Account,同时为Service Account创建Service Account Secret。   10. Persistent Volume Controller     管理维护Persistent Volume和Persistent Volume Claim,为新的Persistent Volume Claim分配Persistent Volume进行绑定,为释放的Persistent Volume执行清理回收。   11. Daemon Set Controller     管理维护Daemon Set,负责创建Daemon Pod,保证指定的Node上正常的运行Daemon Pod。   12. Deployment Controller     管理维护Deployment,关联Deployment和Replication Controller,保证运行指定数量的Pod。当Deployment更新时,控制实现Replication Controller和 Pod的更新。   13.Job Controller     管理维护Job,为Jod创建一次性任务Pod,保证完成Job指定完成的任务数目   14. Pod Autoscaler Controller     实现Pod的自动伸缩,定时获取监控数据,进行策略匹配,当满足条件时执行Pod的伸缩动作。

•Kubernetes Node运行节点,运行管理业务容器,包含如下组件:   1.Kubelet     负责管控容器,Kubelet会从Kubernetes API Server接收Pod的创建请求,启动和停止容器,监控容器运行状态并汇报给Kubernetes API Server。   2.Kubernetes Proxy     负责为Pod创建代理服务,Kubernetes Proxy会从Kubernetes API Server获取所有的Service信息,并根据Service的信息创建代理服务,实现Service到Pod的请求路由和转发,从而实现Kubernetes层级的虚拟转发网络。   3.Docker     Node上需要运行容器服务

kubernetes安装:

软件包: https://mirrors.aliyun.com/kubernetes/yum/repos/

软件下载可以指定yum源为上面这个目录,然后yum install -y kubeadm,kubelet,kubectl

默认下载的软件是最新版本,这里因为会有依赖性,而且我又已经找好了1.15.0版本的解决依赖性的包,所以我下载时加了版本,指定下载1.15.0版本的软件。 在这里插入图片描述 镜像: 在这里插入图片描述

环境准备: server1:172.25.12.1:manager节点

server2:172.25.12.2:work节点

server3:172.25.12.3:work节点

1.首先在三台节点将docker的部署清理,确保docker环境的纯净:

docker ps #为空 docker ps -a #为空**加粗样式** docker network #只有默认三种网络 docker volume ls #为空 管理节点上 docker service ls #为空 #如果不为空,执行对应的rm指令删除即可。

2.三台节点关闭swap

swapoff -a vim /etc/fstab #注释掉swap自动挂载

3.三台节点将上面的rpm包都yum安装,将tar包镜像docker load -i 镜像名全部导入docker

yum install -y * for i in *.tar; do docker load -i $i ; done #这里注意所在目录,我在rpm包的目录执行第一条指令 #在tar包目录执行的第二条命令 #可以一个一个下载和导包,作者这里图方便

!portainer/agent 这个镜像不是 在这里插入图片描述 4.根据官网说明,关闭iptables的相关状态。【三台节点】

vim /etc/sysctl.d/k8s.conf

在这里插入图片描述

使状态变为如下: 在这里插入图片描述 5.三台节点:开启kubelet

systemctl enable kubelet #开机自动启动 systemctl start kubelet #开启服务

!!注意,这里服务其实是开不起来的,会处于一直自动开启中,但起不来的状态。

!!我docker是开启状态,且纯净,以上都是在docker正常的基础上搭建的环境,下面进入k8s的正式集群搭建

kubernetes集群搭建: 1.管理节点初始化 mkdir -p /etc/systemd/system/docker.service.d 在server1: kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=172.25.12.1 #初始化,添加网络插件,指定网络驱动,并指定管理节点IP

成功会显示下面内容。 注意:如果出现Cgroup警告,可以不理会,警告不会影响实验,更改后会造成cgroup和systemd的两处不匹配,解决不当会使kubelet无法开启。 另外:如果/etc/systemd/system/docker.service.d/下有10-machine.conf这个认证文件,可将其移动到/mnt目录中 在这里插入图片描述

2. 开启kubelet服务,加入集群

三台节点:

systemctl daemon-reload #重新加载daemon systemctl restart docker # 重起docker kubeadm join 172.25.12.1:6443 --token jdipfs.00iop0yfvc34s5tg --discovery-token-ca-cert-hash sha256:d652eaa71b046b83b62de4cb380d3f30fb620474559fedc8c6624cf8aeb4def6 #加入集群,这里要根据初始化成功后的指令执行,注意看上面的一张图 3.创建普通用户,进行集群管理

server1:

useradd kubeadm vim /etc/sudoers #赋予普通用户sudo的执行权限,因为下面要在普通用户下执行指令

在这里插入图片描述

su - kubeadm #切换用户 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 #k可以查看到其他已经加入的节点,但是状态是notreaddy #没有加入到同一网络中

#上面三条指令完全复制粘贴,在管理节点初始化成功后出现的。

!!这里一定要注意所处用户,是普通用户。生成的config文件为集群管理文件,这里我们用普通用户去管理是为了安全。

!!这里如果出现8080报错:就去看看当前用户下的上面mkdir创建的目录中有没有config文件,或者是否所处用户正确。 The connection to the server localhost:8080 was refused - did you specify the right host or port?

4. 网络配置

这里网络使用的是flanner,需要flannel.tar包镜像,以及kube-flannel.yml文件,来部署一个网络。镜像可以在阿里云上搜索拉取,yml文件建议去网上找。

三台节点:

docker load -i flanner.tar #导入镜像

导入完成后: server1:

cp kube-flannel.yml /home/kubeadm/ #将文件发送给普通用户 su - kubeadm #用户切换 kubectl apply -f kube-flannel.yml #加载文件 echo "source


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3