咱们将部署三个节点的 Kubernetes Cluster。html
k8s-master 是 Master,k8s-node1 和 k8s-node2 是 Node。node
全部节点的操做系统均为 Ubuntu 16.04,固然其余 Linux 也是能够的。docker
官方安装文档能够参考 https://kubernetes.io/docs/setup/independent/install-kubeadm/ubuntu
注意:Kubernetes 几乎全部的安装组件和 Docker 镜像都放在 goolge 本身的网站上,这对国内的同窗多是个不小的障碍。建议是:网络障碍都必须想办法克服,否则连 Kubernetes 的门都进不了。api
全部节点都须要安装 Docker。bash
apt-get update && apt-get install docker.io
在全部节点上安装 kubelet、kubeadm 和 kubectl。网络
kubelet 运行在 Cluster 全部节点上,负责启动 Pod 和容器。curl
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 <<EOF >/etc/apt/sources.list.d/kubernetes.listdeb http://apt.kubernetes.io/ kubernetes-xenial mainEOFapt-get updateapt-get install -y kubelet kubeadm kubectl
完整的官方文档能够参考 https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/
在 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 是管理 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 <(kubectl completion bash)" >> ~/.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