1. Kubernetes
1. 是什么:分布式系统管理框架
- 当容器太多时,急需一个大规模容器编排系统,对所有的容器进行管理,K8s就是对一整个分布式系统的所有容器进行管理,对整个分布式系统的所有容器进行管理
- 服务发现和负载均衡:对所有的容器进行统一编排和处理,Kubernetes可以对所有的容器服务进行注册发现,其会对某个服务的请求进行负载均衡
- 存储编排:对所有的容器服务的存储进行统一管理
- 自动部署和回滚:将部分的容器服务直接回滚到之前的版本
- 自动完成装箱计算:Kubernetes允许指定每个容器所需的CPU和内存
- 自我修复:Kubernetes会对重启失败、停止允许的容器进行自我修复,自动恢复到结束之前的配置
- Kubernetes的特性
2. 架构
-
Kubernetes一般都是集群模式,多个master节点和多个WorkNode节点
-
Kubernetes Cluster = Nmaster + Nworknode,即N个master结点和N个工作节点
-
-
集群中每个组件都是通过 api-server 进行通信,每个结点都必须有一个 kubelet 进行结点的控制,每个结点通过 kube-proxy 进行通信,由kubelet对该节点进行配置,由kubeadm在主节点中对主节点进行配置,kubectl是命令行工具,对服务器中的kubenetes进行配置
3. Kubernetes创建集群
- 为每台机器安装Docker
- 为每个机器安装 Kubelet、Kubectl(K8S的命令行)、Kubeadm(快速搭建K8S集群),三大件不需要Docker,其他组件均需要Docker
- 选择一台机器在Kubadm中输入 kubadm init 来初始化为master节点
- 由master节点的kubelet自动去下载安装master核心组件 scheduler、kube-proxy、etcd、api-server、controller-manager
- 对于非master节点通过在kubadm中输入 kubadm join 来加入master节点,此时就变为WorkNode,然后由该节点的kubelet去安装kube-proxy
4. 创建三台云服务器
- 创建三台云服务器实例
- 为每个服务器配置公网IP,且设置一个VPC私有网络,使得所有的服务器都放到一个VPC下,此时可以通过私网IP进行访问,速度快且不收费,只有同一个VPC私有网络下的服务器才可以通过私网IP进行互相访问,此时很快且不收费
- 只有同一个VPC下的机器才可以通过私网IP进行访问
- 且要在创建服务器时指定VPC
- 为每个服务器中都安装Docker环境,且要安装与K8s的环境相匹配的版本
- 使用 systemctl enable docker --now 来启动Docker,此时enable是指开机启动,–now指当前启动
5. Kubernetes创建集群
-
准备预备环境,更改配置
-
安装集群三大件:kubelet、kubeadm、kubectl
- kubelet、、kubeadm、kubectl
- kubelet、、kubeadm、kubectl
-
使用kubeadm引导安装master节点
-
除了Kubenetes三大件,其余的组件都以容器的形式进行运行,要下载镜像然后运行
-
下载好组件的镜像后要先初始化主节点master,使用kubeadm init来初始化,只在主节点中进行初始化,但要先在所有节点中指出当前的主节点,然后只在主节点中初始化,此时kubeadm会自动对master节点进行配置
-
根据master节点的提示继续后面的操作,进行配置后,然后加入新的master节点,加入新的WorkNode节点(24小时内有效,超时可以申请令牌)
-
当使用kubectl get pods -A 查看部署的所有pos时出现了核心组件,则说明主master节点安装完成
-
-
向集群中加入WorkNode
-
根据创建master节点完成后返回的操作提示来join工作节点WorkNode,该提示中的命令是24小时之内有效的,如果超过24小时就不可以使用该命令加入新的节点了
-
通过在master节点中 kubeadm token create --print-join-command 来获取新的加入WorkNode节点的令牌
-
然后在master节点中使用kubectl get nodes来查看集群中的所有节点,必须在master节点才可以查看
-
必须等所有pod都安装成功并Running后才可以看到nodes,可以使用 watch -n 1 kubectl get pod -A:来每s监控一次是否部署成功
-
-
Kubenetes集群自我修复能力测试
- 当集群宕机后重启,会自动恢复之前的配置
-
Kubenetes命令
- kubectl get nodes:查看集群所有节点
- kubectl apply -f xxx.yaml:根据配置文件,给集群创建资源
- kubectl get pods -A:查看集群部署了哪些应用(在Docker里面通过docker ps 查看所有正在运行的容器,在Kubunetes中叫 pod)