网站建设与发布需要什么,wordpress管理员权限获取,广州网页设计培训教程,百度指数的数值代表什么#xff0c;Kubernetes 是一个软件系统#xff0c;使你在数以万计的电脑节点上运行软件时就像所有节点是以单个大节点一样#xff0c; 它将底层基础设施抽象#xff0c;这样做同时简化了应用开发、部署#xff0c;以及对开发和运维团队的管理。Kubernetes集群架构Kubernet… Kubernetes 是一个软件系统使你在数以万计的电脑节点上运行软件时就像所有节点是以单个大节点一样 它将底层基础设施抽象这样做同时简化了应用开发、部署以及对开发和运维团队的管理。Kubernetes集群架构Kubernetes集群由很多节点组成分为两大类主节点 承载Kubernetes控制和管理整个集群系统的控制面板工作节点 运行实际部署的应用控制面板控制集群并使它工作包含多个组件组件单节点或通过副本分别部署到多个主节点以确保高可用Kubernetes Api Server客户端Kubectl、控制面板其他组件和worker节点都需要和它通信Scheduler: 调度应用Controller Manager: 执行集群级别功能如复制组件、持续跟踪工作节点、处理节点失败等etcd可靠的分布式数据库存储能持久化集群配置工作节点运行容器化应用的机器运行、监控、管理应用服务的任务由下组件完成Docker、rtk或其他容器类型Kubelet与API Server通信并管理它所在节点容器Kube-Proxy负责组件之间负载均衡网络流量MiniKube环境 核心概念本处window10Hyper-V搭建minikube本地集群这台虚拟机既作为master又作为workerKubectl从集群外部发起管理和控制。# 因国内极差的网络环境建议使用阿里云的镜像地址
minikube start --image-mirror-countrycn --image-repositoryhttp://registry.aliyuncs.com/google_containers --registry-mirrorhttps://aq32bn7a.mirror.aliyuncs.com
以管理员权限执行CMD命令kubectl: 发送Restful api 控制Kubernetes集群管理器Minikube是一个CLI工具配置、管理(已针对开发流程优化)的单节点Kubernetes集群列举4个核心概念1. APIKubernetes API作为声明式配置方案的基石API文档中定义了API端点、资源kubectl命令行工具可操作API对象对象的序列化对象存储在etcd中各组件也是通过API交互。2. k8s对象Kubernetes对象代表系统中持久化的实体下面的实体都作为对象哪些容器化应用正在运行这些应用程序可用的资源与这些应用程序有关的行为策略重新启动策略、升级和容错Kubernetes对象是期望状态创建对象之后你就通知了K8s你希望集群这样运作。大多数K8s对象由spec和status组成spec[由你]提供资源的特征描述status: [系统自行控制] 描述对象当前状态由K8s系统组件设置和更新K8s控制面板持续管理对象的实际状态去匹配你设定的期望状态当你创建k8s对象 你需要提供对象spec来描述预期状态。当使用k8s API(或者kubectl)在API请求的body包含json信息大多数时给kubectl提供.yaml文件来代替json,kubectl会将yaml文件中信息转换为json再发起API请求。下面的kubia-rs.yaml文件ReplicaSet对象启动3个nodejs应用, [spec]定义了此次ReplicaSet的规格apiVersion: apps/v1
kind: ReplicaSet
metadata:name: kubia-rs
spec:replicas: 3selector:matchLabels:app: kubiatemplate:metadata:labels:app: kubiaspec:containers:- name: kubiaimage: luksa/kubiaports:- containerPort: 8080
# 对于ReplicaSet啰嗦两句新一代的ReplicationController; 通常不会直接创建ReplicaSet而是在创建更高级的Deployment资源时自动创建它们。
3. PodKubernetes Pod是创建/部署k8s对象中最小最简单的单元:由于不能将多个进程聚集在一个单独容器需要另外一种高级结构将容器绑定在一起作为一个单元管理这就是Pod背后根本原理, 一个pod中容器共享相同ip和端口空间。4. Controllerk8s控制器是一个control loop监控集群状态在被需要时或主动请求时更新集群每个控制器都试图将当前集群状态移动到期望状态。在机器人和自动化control loop是一个非终止回路用于调节系统状态例如房间的空调。控制器自身可以执行操作但一般情况下控制器会将引起连锁反应的消息发往api server.Kubernetes内置了一些控制器: ReplicaSet、Deployment、StatefulSets、DaemonSet、Job...# k8s deployment检查容器健康状态、保证容器数量、还具备部署相关的特性 deployment是管理和缩放容器的推荐控制器
kubectl create deployment hello-kubia --iamgeluksa/kubia
这4个概念连起来就是K8s已经定义了API元数据Controller调度K8s系统到指定的预期状态这个预期状态以K8s对象体现在落地形式上以创建/调度Pod来承载应用。 此4个概念还不包含NetWork相关开启Kubernetes之旅创建3实例nodejs应用使用上面的K8s对象定义文件kubia-rs.yaml文件\ kubectl create -f kubia-rs.yaml\ kubectl get pod --show-labelstrue
NAME READY STATUS RESTARTS AGE LABELS
kubia-rs-96ncq 1/1 Running 0 3m40s appkubia
kubia-rs-h5ppz 1/1 Running 0 3m41s appkubia
kubia-rs-x5578 1/1 Running 0 3m40s appkubia
注意Pod控制器中使用标签选择器来指定哪些Pod属于同一组服务也使用同样机制。以上有多个Pod创建服务对后端Pod形成负载均衡[集群内访问]ClusterIP [提供集群外访问]nodeport把service的port 映射到集群节点的一个端口上LoadBalancer负载均衡器会单独分配一个ip地址并监听后端服务的指定端口请求的流量会通过指定的端口转发到后端对应的服务。Ingress (minikube addons先启用ingress智能路由)4种网络方式的yaml代码如下请通过kubectl create -f *file*.yaml命令生成对应的服务(ingress不是服务)LoadBalancer是服务暴露到集群外或者公网上的标准方式Ingress 这个服务类型跟我们前面的三种服务类型不一样它实际上不是一种服务类型而是类似一种集群服务入口的存在它可以基于你配置的不同路径或者子域名把流量路由到对应的后端服务更像是一个“智能路由”服务。访问3 Pod实例的nodejs应用ClusterIP 只能在集群内访问minikube ssh 进入集群或者Hyper-V进入VM后curl 10.100.166.197访问nodePort、Loadbalancer 需要使用minikube获取本地集群urlingress 是复杂网络应用的常规做法(1) hosts文件添加host到IP地址的映射(2) 通过ingress路由访问pod上面输出差异体现了随机Pod(即使连接来自同一个客户端)SessionAffinity亲和力属性(ClientIP)可让特定客户端所有请求都指向一个Pod。旅行总结本文从K8s全局架构讲起力求先在你头脑中构筑宏观思维导图提出核心概念帮助全流程理解通过一个常见的多实例nodejs应用来实践k8s核心功能。https://github.com/zaozaoniao/k8s-example.git使用Docker-Compose搭建高可用redis哨兵集群谁说docker-compose不能水平扩展容器、服务多实例基于docker-compose的Gitlab CI/CD实践排坑指南实例解读Docker Swarm关注我们更多干货及潮流技术请关注Dotnet Plus公众号▲▲“阅读全文体验更佳”