如何学习k8s

学习您应该已经熟悉使用 Kubernetes 集群。建议按照如下入门指南启动一个临时的集群。首先帮您熟悉 CLI(kubectl)和概念(pods,services等)。您的工作站应该已经存在 ‘kubectl’。这是完成其他入门指南后的一个附加安装。如果没有,请遵循 说明。Cloud ProviderKubernetes 的 Cloud Provider 是一个模块,它提供一个管理 TCP 负载均衡,节点(实例)和网络路由的接口。此接口定义在 pkg/cloudprovider/cloud.go。未实现 Cloud Provider 也可以建立自定义集群(例如使用裸机),并不是所有的接口功能都必须实现,这取决于如何在各组件上设置标识。节点您可以使用虚拟机或物理机。虽然可以使用一台机器构建集群,但为了运行所有的例子和测试,至少需要4个节点。许多入门指南对主节点和常规节点进行区分。 这不是绝对必要的。节点需要使用 x86_64 架构运行某些版本的 Linux。在其他操作系统和架构上运行是可行的,但本指南不会协助指导。Apiserver 和 etcd 可以运行在1个核心和 1GB RAM 的机器上,这适用于拥有数十个节点的集群。 更大或更活跃的集群可能受益于更多的核心。其他节点可以配备任何合理的内存和任意数量的内核。它们不需要相同的配置。网络网络连接Kubernetes 有一个独特的 网络模型。Kubernetes 为每个 pod 分配一个 IP 地址。创建集群时,需要为 Kubernetes 分配一段 IP 以用作 pod 的 IP。最简单的方法是为集群中的每个节点分配不同的 IP 段。 pod 中的进程可以访问其他 pod 的 IP 并与之通信。这种连接可以通过两种方式实现:使用 overlay 网络 overlay 网络通过流量封装(例如 vxlan)来屏蔽 pod 网络的底层网络架构。封装会降低性能,但具体多少取决于您的解决方案。不使用 overlay 网络 配置底层网络结构(交换机,路由器等)以熟知 Pod IP 地址。不需要 overlay 的封装,因此可以实现更好的性能。选择哪种方式取决于您的环境和需求。有多种方法来实现上述的某种选项:使用 Kubernetes 调用的网络插件 Kubernetes 支持 CNI 网络插件接口。有许多解决方案为 Kubernetes 提供插件(按字母顺序排列): CalicoFlannelOpen vSwitch (OVS)RomanaWeave您也可以编写自己的插件。将网络插件直接编译进 Kubernetes 可以通过 cloud provider 模块的 “Routes” 接口来实现。Google Compute Engine(GCE)和 AWS 指南使用此方法。为 Kubernetes 配置外部网络 这可以通过手工执行命令或通过一组外部维护的脚本来完成。您不得不自己实现,此功能可以带来额外的灵活性。需要为 Pod IP 选择一个地址范围。请注意,Pod IP 尚不支持 IPv6。多种方法: GCE:每个项目都有自己的 10.0.0.0/8。从该空间为每个 Kubernetes 集群分配子网 /16,多个集群都拥有自己的空间。 每个节点从该网段获取进一步的子网细分。AWS:整个组织使用一个 VPC ,为每个集群划分一个块,或者为不同的集群使用不同的 VPC。为每个节点的 PodIP 分配同一个 CIDR 子网,或者分配单个大型 CIDR,该大型 CIDR 由每个节点上较小的 CIDR 所组成的。 您一共需要 max-pods-per-node * max-number-of-nodes 个 IP。每个节点配置子网 /24,即每台机器支持 254 个 pods,这是常见的配置。如果 IP 不充足,配置 /26(每个机器62个 pod)甚至是 /27(30个 pod)也是足够的。例如,使用 10.10.0.0/16 作为集群范围,支持最多256个节点各自使用 10.10.0.0/24 到 10.10.255.0/24 的 IP 范围。需要使它们路由可达或通过 overlay 连通。Kubernetes 也为每个 service 分配一个 IP。但是,Service IP 无须路由。在流量离开节点前,kube-proxy 负责将 Service IP 转换为 Pod IP。您需要利用 SERVICE_CLUSTER_IP_RANGE 为 service 分配一段 IP。例如,设置 SERVICE_CLUSTER_IP_RANGE=“10.0.0.0/16” 以允许激活 65534 个不同的服务。请注意,您可以增大此范围,但在不中断使用它的 service 和 pod 时,您不能移动该范围(指增大下限或减小上限)。此外,您需要为主节点选择一个静态 IP。称为 MASTER_IP。打开防火墙以允许访问 apiserver 的端口 80 和/或 443。启用 ipv4 转发,net.ipv4.ip_forward = 1网络策略Kubernetes 可以在 Pods 之间使用 网络策略 定义细粒度的网络策略。并非所有网络提供商都支持 Kubernetes NetworkPolicy API,参阅 使用网络策略 获取更多内容。集群命名您应该为集群选择一个名称。为每个集群选择一个简短的名称并在以后的集群使用中将其作为唯一命名。以下几种方式中都会用到集群名称:通过 kubectl 来区分您想要访问的各种集群。有时候您可能想要第二个集群,比如测试新的 Kubernetes 版本,运行在不同地区的 Kubernetes 等。Kubernetes 集群可以创建 cloud provider 资源(例如AWS ELB),并且不同的集群需要区分每个创建的资源。称之为 CLUSTER_NAME。软件的二进制文件您需要以下二进制文件:etcd以下 Container 运行工具之一: dockerrktKubernetes kubeletkube-proxykube-apiserverkube-controller-managerkube-scheduler下载并解压 Kubernetes 二进制文件Kubernetes 发行版包括所有的 Kubernetes 二进制文件以及受支持的 etcd 发行版。 您可以使用 Kubernetes 的发行版(推荐)或按照 开发人员文档 中的说明构建您的 Kubernetes 二进制文件。本指南仅涉及使用 Kubernetes 发行版。下载并解压 最新的发行版。服务器二进制 tar 包不再包含在 Kubernetes 的最终 tar 包中,因此您需要找到并运行 ./kubernetes/cluster/get-kube-binaries.sh 来下载客户端和服务器的二进制文件。 然后找到 ./kubernetes/server/kubernetes-server-linux-amd64.tar.gz 并解压缩。接着在被解压开的目录 ./kubernetes/server/bin 中找到所有必要的二进制文件。选择镜像您将在容器之外运行 docker,kubelet 和 kube-proxy,与运行系统守护进程的方式相同,这些程序需要单独的二进制文件。对于 etcd,kube-apiserver,kube-controller-manager 和 kube-scheduler,我们建议您将其作为容器运行,因此需要构建相应的镜像。获取 Kubernetes 镜像的几种方式:使用谷歌容器仓库(GCR)上托管的镜像: 例如 gcr.io/google_containers/hyperkube:$TAG,其中 TAG 是最新的版本标签,可在 最新版本页面 上找到。确保 T A G 与 您 使 用 的 k u b e l e t 和 k u b e − p r o x y 的 发 行 版 标 签 相 同 。 [ h y p e r k u b e ] ( h t t p s : / / r e l e a s e s . k 8 s . i o / m a s t e r / c m d / h y p e r k u b e ) 是 一 个 包 含 全 部 组 件 的 二 进 制 文 件 。 h y p e r k u b e k u b e l e t . . .   表 示 运 行 k u b e l e t , h y p e r k u b e a p i s e r v e r . . .   表 示 运 行 一 个 a p i s e r v e r , 以 此 类 推 。 构 建 私 有 镜 像 在 使 用 私 有 镜 像 库 时 很 有 用 包 含 诸 如   . / k u b e r n e t e s / s e r v e r / b i n / k u b e − a p i s e r v e r . t a r   之 类 的 文 件 , 可 以 使 用 诸 如   d o c k e r l o a d − i k u b e − a p i s e r v e r . t a r   之 类 的 命 令 将 其 转 换 为 d o c k e r 镜 像 。 您 可 以 使 用 命 令   d o c k e r i m a g e s   验 证 镜 像 是 否 加 载 正 确 的 仓 库 和 标 签 。 使 用 e t c d : 使 用 谷 歌 容 器 仓 库 ( G C R ) 上 托 管 的   g c r . i o / g o o g l e c o n t a i n e r s / e t c d : 2.2.1 使 用   D o c k e r H u b   或   Q u a y . i o   上 托 管 的 镜 像 , 比 如   q u a y . i o / c o r e o s / e t c d : v 2.2.1 。 使 用 操 作 系 统 安 装 源 中 的 e t c d 发 行 版 。 构 建 自 己 的 镜 像 执 行 : c d k u b e r n e t e s / c l u s t e r / i m a g e s / e t c d ; m a k e 我 们 建 议 您 使 用 K u b e r n e t e s 发 行 版 中 提 供 的 e t c d 。 K u b e r n e t e s 程 序 已 经 使 用 此 版 本 的 e t c d 进 行 了 广 泛 的 测 试 , 而 不 是 与 任 何 其 他 版 本 的 e t c d 。 推 荐 的 版 本 号 也 可 以 在   k u b e r n e t e s / c l u s t e r / i m a g e s / e t c d / M a k e f i l e   中 作 为   T A G   的 值 被 找 到 。 该 文 档 的 剩 余 部 分 假 定 镜 像 标 签 已 被 选 定 并 存 储 在 相 应 的 环 境 变 量 中 。 例 子 ( 替 换 最 新 的 标 签 和 适 当 的 仓 库 源 ) : H Y P E R K U B E I M A G E = g c r . i o / g o o g l e c o n t a i n e r s / h y p e r k u b e : TAG 与您使用的 kubelet 和 kube-proxy 的发行版标签相同。[hyperkube](https://releases.k8s.io/ master/cmd/hyperkube)是一个包含全部组件的二进制文件。 hyperkube kubelet ... 表示运行 kubelet,hyperkube apiserver ... 表示运行一个 apiserver,以此类推。构建私有镜像 在使用私有镜像库时很有用包含诸如 ./kubernetes/server/bin/kube-apiserver.tar 之类的文件,可以使用诸如 docker load -i kube-apiserver.tar 之类的命令将其转换为 docker 镜像。您可以使用命令 docker images 验证镜像是否加载正确的仓库和标签。使用 etcd:使用谷歌容器仓库(GCR)上托管的 gcr.io/google_containers/etcd:2.2.1使用 Docker Hub 或 Quay.io 上托管的镜像,比如 quay.io/coreos/etcd:v2.2.1。使用操作系统安装源中的 etcd 发行版。构建自己的镜像 执行:cd kubernetes/cluster/images/etcd; make我们建议您使用 Kubernetes 发行版中提供的 etcd。Kubernetes 程序已经使用此版本的 etcd 进行了广泛的测试,而不是与任何其他版本的 etcd。推荐的版本号也可以在 kubernetes/cluster/images/etcd/Makefile 中作为 TAG 的值被找到。该文档的剩余部分假定镜像标签已被选定并存储在相应的环境变量中。例子(替换最新的标签和适当的仓库源):HYPERKUBE_IMAGE=gcr.io/google_containers/hyperkube: TAG使kubeletkubeproxy[hyperkube]https://releases.k8s.io/master/cmd/hyperkubehyperkubekubelet... kubelethyperkubeapiserver... apiserver使 ./kubernetes/server/bin/kubeapiserver.tar 使 dockerloadikubeapiserver.tar docker使 dockerimages 使etcd使GCR gcr.io/googlecontainers/etcd:2.2.1使 DockerHub  Quay.io  quay.io/coreos/etcd:v2.2.1使etcdcdkubernetes/cluster/images/etcd;ma

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值