使用 kubeadm 部署 kubernetes

    参考 一节安装 Docker。

    安装 kubelet kubeadm kubectl

    CentOS/Fedora

    1. [kubernetes]
    2. name=Kubernetes
    3. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    4. enabled=1
    5. gpgcheck=1
    6. repo_gpgcheck=1
    7. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    8. EOF
    9. $ sudo yum install -y kubelet kubeadm kubectl

    修改内核的运行参数

    1. $ cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
    2. net.ipv4.ip_forward = 1
    3. net.bridge.bridge-nf-call-ip6tables = 1
    4. EOF
    5. # 应用配置
    6. $ sysctl --system

    修改 kubelet.service

    /etc/systemd/system/kubelet.service.d/10-proxy-ipvs.conf 写入以下内容

    执行以下命令应用配置。

    1. $ sudo systemctl daemon-reload

    部署

    1. --pod-network-cidr 10.244.0.0/16 \
    2. --v 5 \
    3. --ignore-preflight-errors=all
    • --pod-network-cidr 10.244.0.0/16 参数与后续 CNI 插件有关,这里以 flannel 为例,若后续部署其他类型的网络插件请更改此参数。

    node 工作节点

    另一主机 重复 部署 小节以前的步骤,安装配置好 kubelet。根据提示,加入到集群。

    1. $ kubeadm join 192.168.199.100:6443 --token cz81zt.orsy9gm9v649e5lf \

    查看服务

    所有服务启动后,查看本地实际运行的 Docker 容器。这些服务大概分为三类:主节点服务、工作节点服务和其它服务。

    主节点服务

    • apiserver 是整个系统的对外接口,提供 RESTful 方式供客户端和其它组件调用;

    • scheduler 负责对资源进行调度,分配某个 pod 到某个节点上;

    • proxy 为 pod 上的服务提供访问的代理。

    其它服务

    • Etcd 是所有状态的存储数据库;

    /etc/kubernetes/admin.conf 复制到 ~/.kube/config

    执行 $ kubectl get all -A 查看启动的服务。

    由于未部署 CNI 插件,CoreDNS 未正常启动。如何使用 Kubernetes,请参考后续章节。

    部署 CNI

    这里以 flannel 为例进行介绍。

    flannel

    1. $ kubectl get node -o yaml | grep CIDR
    2. # 输出
    3. podCIDR: 10.244.0.0/24
    4. podCIDRs:

    master 节点默认不能运行 pod

    如果用 kubeadm 部署一个单节点集群,默认情况下无法使用,请执行以下命令解除限制

    1. $ kubectl taint nodes --all node-role.kubernetes.io/master-