K8 结构

作者: wangxiaoxi | 来源:发表于2018-11-11 21:01 被阅读0次

在openshift容器平台,k8 在container, hosts, deployment 机制, 运维和容器规模上管理容器化应用。这个container runtime打包, 启动和运行容器化应用。一个k8集群包含了1到多个masters和一组nodes.

你可以为你的master配置HA(high availability)去保证这个集群不会宕机

openshift 3.11基于K8 1.10和Docker 1.13

这里对该结构的一些核心观念进行讲解:

master: 指包含控制面板组件的host或者hosts, 包含API server, controller manager server和etcd。master管理在K8 cluster的nodes并且调度pods在哪些pod上运行。

让我们认识以下这些组件

API server(K8 API server)为pods, services和replication controller提供数据的认证和配置。

它也给nodes分配pods, 对pod 信息和service配置进行同步。

etcd 保存了master的状态,同时, 其他组件会关注etcd的变化,根据调整到etcd所预期的状态。etcd可以配置HA(high availability), 通常部署为2n+1的结队服务。

Controller Manager Server 关注etcd变化去调整objects的replication controllers

HA proxy optional, 实时配置HA masters在API master中作负载均衡。在安装集群的过程中可用该方法动态的配置HA proxy. 相应的,你自然也可以预先配置你的load balancer

注意 etcd, API server, controller manager 组件都是静态的pods. kubelet操作这些pods.

openshift-sdn 和openvswitch作为一个DaemonSet运行而非一个systemd服务

尽管control plane components作为静态pods运行,master host依旧从/etc/origin/master/master-config.yaml文件中读取配置。

master nodes上的kubelet自动的为每个control plane static pods在API server上创建镜像pods,从而使得其在集群众他们可见。

static pods的清单默认被openshift-ansible installer安装在master host中的/etc/origin/node/pods目录。

在这些pod上有以下path voluemes defined:

/etc/origin/master 含有所有的证书,配置文件和admin.kuberconfig文件

/var/lib/origin包含volumes和potential core dumps of the binary

/etc/origin/cloudprovider包含云运行上提供的专门的配置(AWS,Azure, etc)

/usr/libexec/kubernetes/kubelet-plugins包含额外的第三方volume plug-ins

/etc/origin/kubelet-plugins包含用于system containers的额外的第三方voluem plug-ins

你可以在静态pods上作的操作是非常有限的。例如你可以登陆API server,查看这些pod。但是你却不能删掉他们。

且更改这些静态pod的配置,通常也是通过更改master的配置,并通过重启master级别的服务来实现的。例如以下操作:

master-restart API去重启master API

master-restart controllers去重启master controllers.

master-restart etcd去重启etcd

Viewing Master Service Logs

去查看这些静态pod日志,可以使用以下命令:

master-logs api/controllers/etcd

Nodes

Node为containers提供了实时运行的环境。在K8集群中每一个node都必须被master管理的一些服务。Node还必须有另外一些服务去运行pods, 包括container runtime, a kubelet和a service proxy. Openshift Container Platfrom从cloud provider, physical systems和vitual systems中船舰nodes. K8和node objects进行交互。Master用node objects中的信息基于health checks去验证nodes。不能通过health checks的node是被忽略的。master在确定node可用之前会一直检测nodes. 针对node的状态和管理,详情还可见Kubernetes documentation

Adminstrators 可以在Openshift Container Platform instance中用CLI去管理nodes. 启动node servers定义配置和security options,可以用 dedicated node configuration files.

让我们来看一下node上的那几个服务:

Kubelet

每个node都有一个kubelet,用以更新和这个node绑定在一起的container manifest(用于描述一个pod的YAML文件)。Kubelet用了一些列的manifests去保证这些容器都是运行状态。而验证的方法和简单的Health check类型,周期性的探测文件或者请求来探测一个服务的状态。

Service Proxy

每个node都会运行一个简单的network proxy,用以反射在这个node上的服务的API。这就允许node 可以穿过一些后端去传输简单的TCP和UDP的数据包。

Node Object Definition

The following is an example node object definition in Kubernetes:

apiVersion:v1

kind:Node 

metadata:

    creationTimestamp:null

    labels:kubernetes.io/hostname:node1.example.com

    name:node1.example.com 

spec:

    externalID:node1.example.com

    status:nodeInfo:boot

    ID:""

container

    RuntimeVersion:""

    kernelVersion:""

    kubeProxyVersion:""

    kubeletVersion:""

    machineID:""

    osImage:""

    systemUUID:""

apiVersion定义了所用的API version。Kind:node定义其资源类型为node。

metadata.labels列出了给这个node贴的标签。

metadata.name是这个nodeobject的名字。当你运行‘oc get noes’时会看到这个名字

Spec.exterID定义node可以访问的domain name. 默认metadata.name设置为空。

Node Bootstrapping(Node 引导程序)

node的配置是被master引导的,也就是说 nodes 从master上pull 下来事先定义好的配置和证书。这样做的好处是:

1. 减少了nodes的不同

2. node启动很快

3. 配置集中有助于整个cluster都集中在预期的状态。

当node服务被启动后,在其加入cluster之前,node会确认/etc/origin/node/node.kubeconfig文件和其他node配置文件是否存在。如果他们不存在,则node会pull,然后加入cluster;有则直接加入。

ConfigMaps用于保存在集群中node的配置,其定义与/etc/origin/node/node-config.yaml。

更多关于ConfigMaps可参见Defining Node Groups and Host Mappings

相关文章

  • K8 结构

    在openshift容器平台,k8 在container, hosts, deployment 机制, 运维和容器...

  • K8致新球友的一封信

    你好,欢迎来到K8打球,成为K8的客户。 所谓良好的沟通,来自真诚的介绍。我叫余浩,80后。喜欢的朋友可以叫一声“...

  • 使用kubeadm快速搭建单机kubernetes 1.13集群

    kubeadm可谓是快速搭建k8集群的神器,想当年有多少人倒在k8集群搭建的这道坎上,我自己去年也是通过二进制方式...

  • K8与顾客的故事(续集)

    这是一位K8新球友的故事。 我正在打球,手机收到一条微信。信息里面说到,我每次来K8打球,在路上的时间需要40分钟...

  • 铃木GSXR600 K8 小R 整车原装 前后抛光轮圈 稀有!

    铃木GSXR600 K8 小R 整车原装 前后抛光轮圈 稀有!碣石意义机车

  • jenkins-kubernetes-plugin 介绍

    Jenkins Plugin在一个k8 cluster中运行动态的agents. 基于Scaling Docker...

  • k8安装

    版本:1.10.4 参考官方:https://kubernetes.io/docs/tasks/tools/ins...

  • K9.9/15《断舍离》

    在K8营的时候用了很短的时间把《断舍离》这本书看了一遍,发现很多细节要整理一下。

  • 没有名号,何以走江湖!

    没有响当当的名号,何以走江湖。k8侠客的名号…… 1,全能小子: 汪志昆 2,神奇哥: 张胜旗 3,塞尔比: ...

  • k8 故障合集

    本文旨在记录笔者k8在使用中的遇到问题及如何解决的,待慢慢积累,会不定时更新。 1.节点为NotReady 环境介...

网友评论

      本文标题:K8 结构

      本文链接:https://www.haomeiwen.com/subject/buenxqtx.html