Python中国社区  »  docker

部署 k8s Cluster(上)- 每天5分钟玩转 Docker 容器技术(118)

CloudMan • 4 天前 • 10 次点击  

第118篇

部署 k8s Cluster(上)

我们将部署三个节点的 Kubernetes Cluster。

k8s-master 是 Master,k8s-node1 和 k8s-node2 是 Node。

所有节点的操作系统均为 Ubuntu 16.04,当然其他 Linux 也是可以的。

官方安装文档可以参考 https://kubernetes.io/docs/setup/independent/install-kubeadm/

注意:Kubernetes 几乎所有的安装组件和 Docker 镜像都放在 goolge 自己的网站上,这对国内的同学可能是个不小的障碍。建议是:网络障碍都必须想办法克服,不然连 Kubernetes 的门都进不了。

安装 Docker

所有节点都需要安装 Docker。

apt-get update && apt-get install docker.io

安装 kubelet、kubeadm 和 kubectl

在所有节点上安装 kubelet、kubeadm 和 kubectl。

kubelet 运行在 Cluster 所有节点上,负责启动 Pod 和容器。

kubeadm 用于初始化 Cluster。

kubectl 是 Kubernetes 命令行工具。通过 kubectl 可以部署和管理应用,查看各种资源,创建、删除和更新各种组件。

apt-get update && apt-get install -y apt-transport-httpscurl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -cat </etc/apt/sources.list.d/kubernetes.listdeb http://apt.kubernetes.io/ kubernetes-xenial mainEOFapt-get updateapt-get install -y kubelet kubeadm kubectl

用 kubeadm 创建 Cluster

完整的官方文档可以参考 https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/

初始化 Master

在 Master 上执行如下命令:

kubeadm init --apiserver-advertise-address 192.168.56.105 --pod-network-cidr=10.244.0.0/16

--apiserver-advertise-address 指明用 Master 的哪个 interface 与 Cluster 的其他节点通信。如果 Master 有多个 interface,建议明确指定,如果不指定,kubeadm 会自动选择有默认网关的 interface。

--pod-network-cidr 指定 Pod 网络的范围。Kubernetes 支持多种网络方案,而且不同网络方案对 --pod-network-cidr 有自己的要求,这里设置为 10.244.0.0/16 是因为我们将使用 flannel 网络方案,必须设置成这个 CIDR。在后面的实践中我们会切换到其他网络方案,比如 Canal。

初始化过程如下:

① kubeadm 执行初始化前的检查。

② 生成 token 和证书。

③ 生成 KubeConfig 文件,kubelet 需要这个文件与 Master 通信。

④ 安装 Master 组件,会从 goolge 的 Registry 下载组件的 Docker 镜像,这一步可能会花一些时间,主要取决于网络质量。

⑤ 安装附加组件 kube-proxy 和 kube-dns。

⑥ Kubernetes Master 初始化成功。

⑦ 提示如何配置 kubectl,后面会实践。

⑧ 提示如何安装 Pod 网络,后面会实践。

⑨ 提示如何注册其他节点到 Cluster,后面会实践。

配置 kubectl

kubectl 是管理 Kubernetes Cluster 的命令行工具,前面我们已经在所有的节点安装了 kubectl。Master 初始化完成后需要做一些配置工作,然后 kubectl 就能使用了。

依照 kubeadm init 输出的第 ⑦ 步提示,推荐用 Linux 普通用户执行 kubectl(root 会有一些问题)。

我们为 ubuntu 用户配置 kubectl:

su - ubuntumkdir -p $HOME/.kubesudo 
cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo
chown $(id -u):$(id -g) $HOME/.kube/config

为了使用更便捷,启用 kubectl 命令的自动补全功能。

echo "source > ~/.bashrc

这样 ubuntu 用户就可以使用 kubectl 了。

下节我们将安装 Pod 网络并添加 k8s-node1 和 k8s-node2,完成集群部署。

书籍:

1.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html(点击“阅读原文”直达)


2.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/BtgCtvsP8Q
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/5277
 
10 次点击  
分享到微博
分享
社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
WEB开发
linux   NoSql   DATABASE   Jquery   Bootstrap   NGINX   js   其他Web框架   Git   peewee   web工具   bottle   zookeeper   IE   MongoDB   MQ   tornado   Redis  
机器学习
机器学习算法  
Python88.com
公告   社区推广   反馈