【IBM Cloud k8s验证备忘录】关于Kubernetes集群配置的资料链接集合

为了获取在使用Bluemix的k8s时所需的知识,我创建了必要的链接和摘要集。虽然这主要是为了自己用的。这张图是对Bluemix的k8s手册https://console.bluemix.net/docs/containers/cs_ov.html#cs_ov_architecture 中的图进行了重新分组,去除了与VPN连接和命名空间的关系。

スクリーンショット 2017-09-06 17.07.35.png

大师

kube-apiserver
Kubernetes API 服务器

Kubernetes API服务器验证和配置包括Pod、Service、Replication Controller等api对象的数据。API服务器处理REST操作,并为所有其他组件相互交互的集群共享状态提供前端。
https://kubernetes.io/docs/admin/kube-apiserver/

Kubernetes控制器管理器

‘Kubernetes控制器管理器’是一个内置了核心控制循环的守护程序,包含在Kubernetes中。在机器人工程和自动化应用中,控制循环是一个永不停歇的循环,用于调整系统状态。在Kubernetes中,控制器通过apiserver监视集群的共享状态,并进行控制循环的更改,以使当前状态过渡到所期望的状态。今天,随Kubernetes一起发布的控制器示例包括复制控制器、端点控制器、命名空间控制器和服务账户控制器。
https://kubernetes.io/docs/admin/kube-controller-manager/

调度器

Kubernetes调度程序是一个“策略丰富的”,“拓扑感知的”,“工作负载特定的”功能,它对可用性、性能和容量有重大影响。调度程序包括单独和集合的资源需求,服务质量需求,硬件和软件策略限制,亲和性和非亲和性规定,数据本地性,互相工作负载的干扰,截止日期等。根据需要,“工作负载特定的需求”通过API进行公开。

etcd –> 分布式键值存储系统

etcd是一种对分布式系统最重要数据具有高可靠性的键值存储工具。
– 简洁:提供用户自定义的清晰API(gRPC)
– 安全:通过可选的客户端证书认证实现自动TLS
– 快速:每秒支持10,000次基准测试
– 可靠性:使用Raft协议进行适当的分布式复制

etcd是用Go语言编写的,使用Raft共识算法来管理高可用性的复制日志。
https://github.com/coreos/etcd

关于 Raft,请参阅 https://gist.github.com/sile/ad435262c17eb79f133d

开放式VPN服务器

IBM Bluemix的Kubernetes实施采用了开放源码软件(OSS)的VPN服务器。k8s的控制平面由IBM管理,而被称为工作节点的部分则是用户的虚拟服务器。由于这个IBM管理的控制平面和用户的虚拟服务器无法互相连接Private LAN,因此为了安全通信,它们需要通过Public LAN进行通信。因此,控制平面部署了OpenVPN服务器,而工作节点部署了OpenVPN客户端。
https://www.openvpn.jp/introduction/

工人(在谷歌中被称为Node)

kubelet(一个选项)

Kubelet是在每个节点上运行的重要的”节点代理”。Kubelet在”PodSpec的语境”中起作用。

PodSpec是一个描述Pod的YAML或JSON对象。 kubelet接收由各种机制(主要是通过apiserver)提供的一系列PodSpec,并确保这些PodSpec中描述的容器处于运行且健康的状态。 kubelet不管理由Kubernetes未创建的容器。

有三种方法可以向Kubelet提供容器清单,除了从apiserver获取PodSpec之外。

    • File:コマンドラインでフラグとして渡されるパス。このパスの下にあるファイルは定期的に更新されます。監視期間はデフォルトで20秒で、フラグを使用して設定できます。

 

    • HTTPエンドポイント:コマンドラインでパラメータとして渡されるHTTPエンドポイント。このエンドポイントは20秒ごとにチェックされます(フラグでも設定可能)。

 

    HTTPサーバ:kubeletはHTTPをリッスンし、新しいマニフェストを送信する簡単なAPI(現時点では未指定)にも応答することができます。

PodSpec规范可以在以下网址找到:https://kubernetes.io/docs/api-reference/v1.6/#pod-v1-core

Kubernetes代理

Kubernetes的网络代理在每个节点上运行。它可以反映在每个节点上定义的Kubernetes API服务,并且可以进行简单的TCP、UDP流转发,或者进行轮询TCP、整个后端集群的UDP转发。服务集群的IP和端口当前是通过与Docker-link兼容的环境变量指定的服务代理所开放的端口进行发现的。有一种可选的插件可以提供集群DNS给这些集群IP。要配置代理,需要使用apiserver API来创建服务。

附加组件

网页用户界面 (仪表板)

Dashboard是基于Web的Kubernetes用户界面。通过使用Dashboard,可以将容器化应用部署到Kubernetes集群中,并对容器化应用进行故障排除,还可以管理集群本身及其相关资源。使用Dashboard可以查看集群中运行的应用程序的概述,创建或修改各个Kubernetes资源(如部署、作业、守护进程集等)。例如,可以扩展部署,启动”滚动更新”,重新启动Pod,或使用部署向导部署新应用程序。

仪表盘还会显示有关Kubernetes资源在集群中的状态以及可能发生的错误信息。

“Kueb-dns” could be paraphrased in Chinese as “科布DNS” (Kē bù DNS).

提供的(但强烈推荐的)选项之一是集群附加组件DNS服务器。 DNS服务器会监视Kubernetes API中的新服务,并为每个服务创建一系列的DNS记录。如果在整个集群中启用了DNS,所有的Pod都可以自动进行服务名称解析。

例如,如果Kubernetes命名空间中存在名为”my-ns”的服务”my-service”,将创建”my-service.my-ns”的DNS记录。仅需进行名为”my-service”的命名空间”my-ns”的名称搜索,即可找到位于”my-ns”命名空间中的Pod。而位于其他命名空间中的Pod则需要将其名称修饰为”my-service.my-ns”。这些名称搜索的结果是集群IP。

Kubernetes的Calico

Calico使得在整个云端环境中实现Kubernetes集群的网络和网络策略成为可能。Calico可以在所有主要的公共云服务提供商和私有云环境中运行。

Calico提供高效网络,通过纯粹的IP网络结构,其经受了战斗测试的策略引擎可实施面向高级意图的网络策略。Calico与Kubernetes提供安全的云原生平台,可以扩展基础设施以支持成千上万的工作负载。
https://docs.projectcalico.org/v2.0/getting-started/kubernetes/

IBM Bluemix容器服务工作节点的网络策略。

Kubernetes集群会使用名为Calico的网络插件进行设置。默认的网络策略将被设置以保护每个工作节点的公共网络接口。当有特定的安全要求时,可以使用Calico和Kubernetes的本地功能进一步配置集群的网络策略。这些网络策略指定允许或阻止进出集群内部容器的网络流量。

您可以选择使用Calico或Kubernetes的本地功能来创建适用于您的集群的网络策略。您可以首先使用Kubernetes的网络策略,但如果需要更强大的功能,请使用Calico的网络策略。

卡莉科策略控制器

策略控制器主要由环境变量来配置。如果将策略控制器作为Kubernetes的Pod运行,则在Pod清单的env部分进行配置。
https://docs.projectcalico.org/v2.0/reference/policy-controller/configuration

卡利科IP地址管理

IPAM是IP地址管理的缩写,指的是管理特定范围的IP地址。它允许用户在创建容器时指定特定的IP地址。
https://docs.projectcalico.org/v2.0/getting-started/docker/tutorials/ipam

中国根据calico-cni提供了一种选择。

Calico CNI插件的配置通过标准的CNI来完成。
Container Networking Interface规范请参考https://github.com/containernetworking/cni/blob/master/SPEC.md#network-configuration。

卡利科节点

calico-node容器主要由环境变量配置。

堆状

Heapster使得容器集群监控和性能分析成为可能。Heapster目前原生支持Kubernetes和CoreOS。Heapster与Kubernetes版本v1.0.6及更高版本兼容。

bannerAds