1.1. 公有云中的Kubernetes

截止2019年2月,大多数公有云已经提供了容器Kubernetes的产品服务,对于使用公有云的用户来说,最佳实践是直接购买公有云产品,而非自己部署Kubernetes集群,主要是因为公有云已经将网络和存储与Kubernetes集成好了,解决了生产应用的难题。

1.1.1. 阿里云中的Kubernetes

国内阿里云提供了容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级 Kubernetes 容器化应用的全生命周期管理。容器服务 Kubernetes 版简化集群的搭建和扩容等工作,整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳的 Kubernetes 容器化应用运行环境。

阿里云Kubernetes模式

容器服务Kubernetes版包含了经典Dedicated Kubernetes以及Serverless两种形态,方便您按需选择。

  • 经典Dedicated Kubernetes模式:您可以对集群基础设施和容器应用进行更细粒度的控制,比如选择宿主机实例规格和操作系统,指定Kubernetes 版本、自定义 Kubernetes 特性开关设置等。阿里云 Kubernetes 服务负责为集群创建底层云资源,升级等自动化运维操作。而您需要规划、维护、升级服务器集群,手动或自动在集群中添加或删除服务器。

  • Serverless 模式:您无需创建底层虚拟化资源,可以利用 Kubernetes 命令指明应用容器镜像、CPU 和内存要求以及对外服务方式,直接启动。

阿里云Kubernetes产品架构

C:\\Users\\jason\\Desktop\\15447553537457_zh-CN.png

阿里云Kubernetes创建

默认情况下可以在阿里云中自行创建5个集群,每个集群最多可以添加 40 个节点。如需更高配额,需要提交工单申请。

阿里云将网络、存储、安全等方面已经进行了深度集成,在创建Kubernetes集群时,阿里云容器服务提供两种网络插件:Terway和Flannel:

  • Flannel:使用的是简单稳定的社区的Flannel CNI插件,配合阿里云的VPC的高速网络,能给集群高性能和稳定的容器网络体验,但功能偏简单,支持的特性少,例如:不支持基于Kubernetes标准的Network Policy。

  • Terway:是阿里云容器服务自研的网络插件,功能上完全兼容Flannel,支持将阿里云的弹性网卡分配给容器,支持基于Kubernetes标准的NetworkPolicy来定义容器间的访问策略,支持对单个容器做带宽的限流。对于不需要使用Network Policy的用户,可以选择Flannel,其他情况建议选择Terway。了解更多Terway网络插件的相关内容,请参见Terway网络插件。

最终阿里云会使用kubeadm帮你创建一个指定版本的Kubernetes集群。

1.1.2. 私有云中的Kubernetes

内网部署Kubernetes

很多企业需要内网部署Kubernetes但是内网又无法访问外网,就需要本地化部署,无忘了本地话部署主要包括两个方面,一个是软件仓库的准备,一个是Kubernetes镜像的准备。

  1. 准备内网YUM仓库(略)
  2. 准备Docker Registry(请参考Harbor章节)
  3. 下载并提交镜像到Harbor中,然后将Harbor的镜像部署直接COPY到生产环境中

下载脚本如下,请根据需求自行修改:

[root@linux-node1 ~]# vim k8s-images.sh
#!/bin/bash

# EVN
ALIYUN_REG="registry.aliyuncs.com/google_containers"
FLANNEL_REG="quay-mirror.qiniu.com/coreos"
LOCAL_REG="192.168.56.11/kubernetes"
K8S_VER=v1.15.5
PAUSE_VER=3.1
ETCD_VER=3.3.10
COREDNS_VER=1.3.1
FLANNEL_VER=v0.11.0-amd64

# Kubernetes Docker Images
IMAGES=(
  kube-proxy:${K8S_VER}
  kube-scheduler:${K8S_VER}
  kube-controller-manager:${K8S_VER}
  kube-apiserver:${K8S_VER}
  pause:${PAUSE_VER}
  etcd-amd64:${ETCD_VER}
  coredns:${COREDNS_VER}
)

for IMAGE in ${IMAGES[@]}
do
  docker pull ${ALIYUN_REG}/${IMAGE}
  docker tag ${ALIYUN_REG}/${IMAGE} ${LOCAL_REG}/${IMAGE}
  #docker push ${LOCAL_REG}/${IMAGES}
done

# Flannel

docker pull ${FLANNEL_REG}/flannel:${FLANNEL_VER}
docker tag ${FLANNEL_REG}/flannel:${FLANNEL_VER} ${LOCAL_REG}/flannel:${FLANNEL_VER}
Copyright © 赵班长@新运维社区 2019 all right reserved,powered by Gitbook该文件修订时间: 2024-06-18 22:25:30

results matching ""

    No results matching ""