Kubernetes 是 Google 团队发起并维护的基于 Docker 的开源容器集群管理系统,它不仅支持常见的云平台,而且支持内部数据中心,是一种可自动实施 Linux 容器操作的开源平台。

这次搭建完全参考大牛的这两篇博客:http://blog.yumaojun.net/2018/01/18/kubernetes-binary-install/http://blog.yumaojun.net/2018/01/27/kubernetes-binary-install-2/写的很详细,基本没有坑,但需要注意以下几点。

注意事项

  1. 部署之前最好准备一套私有仓库,用于存放docker镜像

  2. 前期环境准备的时候,给每台机器设计主机名,并更换,不要用默认主机名。

  3. 永久关闭系统的交换分区,不然kubelet启动会失败

    echo 'vm.swappiness=0' >> /etc/sysctl.conf
    sysctl -p
    
  4. 部署node节点的kubelet服务时,配置参数除了添加--allow_privileged=true,还要加上--network-plugin=cni,后期会用到。这里还要注意关闭swap。

  5. 部署calico插件时,按照原博主提供修改的calico.yaml文件,安装会报错。注意是etcd字符集的问题。解决方案如下,直接传入处理好的key。

    export ETCD_KEY=`cat /etc/kubernetes/pki/kubernetes-key.pem | base64 | tr -d '\n'`
    export ETCD_CERT=`cat /etc/kubernetes/pki/kubernetes.pem | base64 | tr -d '\n'`
    export ETCD_CA=`cat /etc/kubernetes/pki/ca.pem | base64 | tr -d '\n'`
    sed -i "s@.*etcd-cert:.*@\ \ etcd-cert:\ ${ETCD_CERT}@gi" calico.yaml
    sed -i "s@.*etcd-key:.*@\ \ etcd-key:\ ${ETCD_KEY}@gi" calico.yaml
    sed -i "s@.*etcd-ca:.*@\ \ etcd-ca:\ ${ETCD_CA}@gi" calico.yaml
    
  6. 部署CoreDNS插件时,修改coredns.yaml模板下面的三个变量:

    CLUSTER_DOMAIN: 10.254.0.2 
    REVERSE_CIDRS: cluster.local
    CLUSTER_DNS_IP: 10.254.0.2
    
  7. 部署Dashborad插件时,修改kubernetes-dashboard.yaml模板,加入端口映射配置,不然无法在外部访问。

    spec:
      type: NodePort
      ports:
        - port: 443
          targetPort: 8443
          nodePort: 32101