目录
一、Kubernetes简介
kubernetes,简称 K8s,是用 8 代替 8 个字符“ubernete”而成的缩写。是一个开源 的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的 应用简单并且高效(powerful),Kubernetes 提供了应用部署,规划,更新,维护的一种机制。
在Docker 作为高级容器引擎快速发展的同时,在Google内部,容器技术已经应用了很多年,Borg系统运行管理着成千上万的容器应用。
Kubernetes项目来源于Borg,可以说是集结了Borg设计思想的精华,并且吸收了Borg系统中的经验和教训。
Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合,将最终的应用服务交给用户。Kubernetes的好处:
- 隐藏资源管理和错误处理,用户仅需要关注应用的开发。
- 服务高可用、高可靠。
- 可将负载运行在由成千上万的机器联合而成的集群中。
Kubernetes的核心组件:
核心组件名称 | 含义 |
etcd | 保存了整个集群的状态,一般把所有的集群信息都存放到etcd当中,etcd不属于Kubernetes的某一个部分,而是单独集群部署的,apiserver是它唯一的入口,可以直接访问etcd。 |
apiServer | 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制 |
Controller Manager | 是一个控制器,负责维护集群的状态,比如Pod的故障检测、自动扩展、滚动更新等 |
Scheduler | 负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上 |
Kubelet | 负责维护容器的生命周期,apiserver创建Pod,Scheduler将Pod调度到符合要求的Node节点上,该节点上的Kubelet就会去运行Pod以及Docker,Pod的存储以及网络都是Kubelet进行管理的 |
Container runtime | 负责镜像管理以及Pod和容器的真正运行(CRI) |
Kube-proxy | 负责为Service提供cluster内部的服务发现和负载均衡 |
Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分布式的存储系统。
二、Kubernetes部署
注意:需要关闭节点的selinux和iptables防火墙,所有节点部署docker引擎。
官网地址:Kubernetes 文档 | Kubernetes
部署参考文档:安装 kubeadm | Kubernetes
清除之前的设置:
[root@server2 ~]# docker stack rm web
[root@server2 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
[root@server2 ~]# docker swarm leave --force
[root@server2 ~]# cd /etc/systemd/system/docker.service.d/
[root@server2 docker.service.d]# rm -fr 10-machine.conf
[root@server2 docker.service.d]# ls
[root@server2 docker.service.d]# systemctl daemon-reload
[root@server2 docker.service.d]# systemctl restart docker
[root@server4 ~]# docker swarm leave
Node left the swarm.
禁用每个节点交换分区
[root@server2 ~]# swapoff -a
[root@server2 ~]# vim /etc/fstab
配置docker
[root@server2 ~]# cd /etc/docker/
[root@server2 docker]# ls
ca.pem certs.d daemon.json key.json plugins server-key.pem server.pem
[root@server2 docker]# vim daemon.json
[root@server2 docker]# systemctl daemon-reload
[root@server2 docker]# systemctl restart docker
[root@server2 docker]# docker info
每个节点都需要开启docker
[root@server2 docker]# cd /etc/docker/
[root@server2 docker]# ls
ca.pem certs.d daemon.json key.json plugins server-key.pem server.pem
[root@server2 docker]# rm -f *.pem
[root@server2 docker]# ls
certs.d daemon.json key.json plugins
[root@server2 docker]# systemctl enable docker.socket
[root@server2 docker]# systemctl enable docker.service
[root@server2 docker]# systemctl stop docker.socket
[root@server2 docker]# systemctl stop docker
[root@server2 docker]# systemctl start docker.socket
[root@server2 docker]# systemctl start docker.service
[root@server2 docker]# docker info
[root@server2 docker]# scp daemon.json server3:/etc/docker/
[root@server2 docker]# scp daemon.json server4:/etc/docker/
同理,在server3中进行相同的操作:
[root@server3 ~]# cd /etc/docker/
[root@server3 docker]# ls
ca.pem certs.d daemon.json key.json server-key.pem server.pem
[root@server3 docker]# rm -f *.pem
[root@server3 docker]# ls
certs.d daemon.json key.json
[root@server3 docker]# cd /etc/sysctl.d/
[root@server3 sysctl.d]# ls
99-sysctl.conf docker.conf
[root@server3 sysctl.d]# scp docker.conf server4:/etc/sysctl.d/
[root@server4 ~]# cd /etc/sysctl.d/
[root@server4 sysctl.d]# ls
99-sysctl.conf docker.conf
[root@server4 sysctl.d]# sysctl --system
镜像配置
kubernetes镜像-kubernetes下载地址-kubernetes安装教程-阿里巴巴开源镜像站
[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]# scp k8s.repo server3:/etc/yum.repos.d/
[root@server2 yum.repos.d]# scp k8s.repo server4:/etc/yum.repos.d/
安装部署软件kubeadm
[root@server2 yum.repos.d]# yum install -y kubeadm kubelet kubectl ##每个节点都安装
[root@server2 yum.repos.d]# systemctl enable --now kubelet
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.
[root@server2 yum.repos.d]# ssh-keygen
[root@