zoukankan      html  css  js  c++  java
  • 部署 k8s Cluster(上)- 每天5分钟玩转 Docker 容器技术(118)

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

    591.png

    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-https
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
    deb http://apt.kubernetes.io/ kubernetes-xenial main
    EOF
    apt-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。

    初始化过程如下:

    592.png

    ① 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 - ubuntu
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo 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

  • 相关阅读:
    Ubuntu打开终端的方法三种
    javascript 获取随机数
    HTML5中类jQuery选择器querySelector的使用
    PHP stream_context_create()作用和用法分析
    一些常用的api接口、
    怎么样学好C++
    指针访问与数组访问的效率分析
    架构师
    Java 之 StringTokenizer
    类型转换操作符static_cast、const_cast、dynamic_cast、reinterpret_cast
  • 原文地址:https://www.cnblogs.com/CloudMan6/p/8269620.html
Copyright © 2011-2022 走看看