阅读 881

阿里云K8S使用随记

K8S基础概念

  • 通过Kubernetes可以:
    • 快速部署应用
    • 快速扩展应用
    • 无缝对接新的应用功能
    • 节省资源,优化硬件资源的使用

集群组件

Master节点组件

  • kube-apiserver,Kubernetes API,是集群的统一入口,各组件协调者,以RESTful API提供接口服务,所有对象资源的增删改查和监听操作都交给API Server处理后再交给Etcd存储。
  • kube-controller-manager,处理集群中常规后台任务,一个资源对应一个控制器,ControllerManager就是负责管理这些控制器。
  • kube-scheduler,根据调度算法为新创建的Pod选择一个Node节点。
  • etcd,是兼具一致性和高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库。如Pod,Service等对象信息。

Node节点组件

  • kubelet:kubectl是master在node节点上的agent,管理本机运行容器的声明周期,比如创建容器、Pod挂载数据卷、下载secret、获取容器和结点状态等工作,kubelet将每个pod转换成一组容器(向docker发送指令管理docker容器的)。
  • kube-proxy:在node节点上实现pod网络代理,维护网络规则和四层负载均衡工作(管理docker容器的网络)。
  • docker或rocket:容器引擎,运行容器。

Pod

  • 最小部署单元
  • 一个pod可以有一个或者多个容器(容器组)
  • 一组容器的集合
  • 一个pod中的容器共享网络命名空间
Controllers

控制器,控制pod,启动、停止、删除pod

  • ReplicaSet:确保预期的pod副本数数量
  • Deployment:无状态应用部署
  • StatefulSet:有状态应用部署
  • DaemonSet:确保所有node运行同一个pod
  • Job:一次性任务
  • Cronjob:定时任务

Service

  • 将一组pod关联起来,提供一个统一的入口,及时pod地址发生改变,这个统一入口也不会变化,可以保证用户访问不受影响。
  • 定义一组pod的访问策略。
  • Labels选择器,与Name和UID 不同,标签不需要有唯一性。一般来说,我们期望许多对象具有相同的标签。通过标签选择器(Labels Selectors),客户端/用户 能方便辨识出一组对象。标签选择器是kubernetes中核心的组成部分。

容器启动的一个过程

  • 客户端向API Server发送请求,即kubectl → API Server
  • API Server收到请求后,会向scheduler发送指令,即API Server→scheduler
  • scheduler会向后端若干个结点中寻找一个节点(例如节点/node1),即schedule→(寻找node结点)节点/node
  • scheduler寻找到节点后,scheduler会将结果返回API Server 即scheduler→API Server
  • API Server接收到scheduler返回的寻找的结点后,会传递给controller manager 即API Server → controller manager
  • controller manager 会向选定的结点(例如节点/node1)发送指令消息,即controller→kubectl
  • kubectl 收到controller传递过来的信息后,会向本地主机docker发送指令,启动一个容器(即pod),即kubectl→(本地)docker

阿里云容器镜像服务

跑一个自己的Etcd集群做服务注册与发现

  • etcd-0

etcd --name etcd-0 --initial-advertise-peer-urls http://etcd-0:2380 --listen-peer-urls http://0.0.0.0:2380 --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://etcd-0:2379 --initial-cluster etcd-0=http://etcd-0:2380,etcd-1=http://etcd-1:2380,etcd-2=http://etcd-2:2380 --initial-cluster-state new

注意添加Pod标签,后面创建Service通过Selector选择标签 创建Service

  • etcd-1

etcd --name etcd-1 --initial-advertise-peer-urls http://etcd-1:2380 --listen-peer-urls http://0.0.0.0:2380 --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://etcd-1:2379 --initial-cluster etcd-0=http://etcd-0:2380,etcd-1=http://etcd-1:2380,etcd-2=http://etcd-2:2380 --initial-cluster-state new

  • etcd-2

etcd --name etcd-2 --initial-advertise-peer-urls http://etcd-2:2380 --listen-peer-urls http://0.0.0.0:2380 --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://etcd-2:2379 --initial-cluster etcd-0=http://etcd-0:2380,etcd-1=http://etcd-1:2380,etcd-2=http://etcd-2:2380 --initial-cluster-state new

  • 最后效果

最后etcd这个服务可以先随便关联一个Pod然后手动修改yaml中的selector 最后便可以通过etcd这个域名来访问此集群........

文章分类
后端
文章标签