手动搭建kubernetes1.9.3集群

概述

kubernetes是一个全新的基于容器技术的分布式架构领先方案。它是谷歌的秘密武器,一经开源就一鸣惊人,快速地得到社区技术方面的拥抱,现逐步有一统天下容器技术领域的趋势。
kubernetes集群方面的搭建,可以利用kubeadm工具快速安装,但是此技术还处于beta阶段,不适合生产环境使用,为此,生产环境还需利用二进制文件方式安装kubernetes集群。

环境准备

CentOS Linux7 (可以采用VirtualBox在本机上虚拟一个64位的CentOS7)
kubernetes1.9.3
etcd3.2.12以上
docker 和flanneld0.10.0等

单集群环境

  1. 可以采用minikube在Mac上安装单机群环境,但是本文重点不在这里,下次介绍
  2. 采用kubernetes在centOS中搭建单集群。

    1. 关闭CentOS自带的防火墙服务

      systemctl disable firewalld
      systemctl stop firewalld

    2. 安装etcd和kubernetes软件

      yum install -y etcd kubernetes

    3. 按顺序启动所有服务

      systemctl start etcd
      systemctl start docker
      systemctl start kube-apiserver
      systemctl start kube-controller-manager
      systemctl start kube-scheduler
      systemctl start kubelet
      systemctl start kube-proxy

至此,一个单机版的kubernetes集群环境就安装并启动成功了.
3. 搭建多机版集群环境

  1. 初始化环境和系统设置

    yum install -y etables ethtool
    修改主机名和配置IP和域名的绑定工作
    echo “master.k8s” > /etc/hostname
    echo “192.168.56.101 master.k8s”>> /etc/hosts
    echo “192.168.56.102 node1.k8s”>> /etc/hosts
    echo “192.168.56.103 node2.k8s”>> /etc/hosts
    所有节点都要处理

  2. 设置ip6tables 和 iptables

    cat < /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables=1
    net.bridge.bridge-nf-call-iptables=1
    EOF
    sysctl –system

  3. 配置yum源
    cat << EOF > /etc/yum.repos.d/docker.repo
    [dockerrepo]
    name=Docker Repository
    baseurl=https://mirrors.aliyun.com/docker-engine/yum/repo/main/centos/7/
    enabled=1
    gpgcheck=0
    gpgkey=https://yum.dockerproject.org/gpg
    EOF

    cat > /etc/yum.repo.d/kubernetes.repo << EOF
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    EOF

    yum -y install docker kubectl kubeadm kubelet kubernetes-cni
    systemctl enable docker && systemctl start docker
    systemctl enable kubelet && systemctl start kubelet

    mkdir -p /etc/docker # cat > /etc/docker/daemon.json << EOF
    {
    “registry-mirrors”: [“http://docker.mirrors.ustc.edu.cn”],
    “exec-opts”: [“native.cgroupdriver=systemd”]
    } EOF
    systemctl enable docker && systemctl start docker

  4. master和node节点安装

    1. 下载相关镜像

      #! /bin/bash
      images=(
      flannel:v0.9.0
      kube-scheduler-amd64:v1.9.3
      kube-proxy-amd64:v1.9.3
      kube-controller-manager-amd64:v1.9.3
      etcd-amd64:3.1.11
      kubernetes-dashboard-amd64:v1.7.1
      k8s-dns-dnsmasq-nanny-amd64:1.14.7
      k8s-dns-kube-dns-amd64:1.14.7
      k8s-dns-sidecar-amd64:1.14.7
      pause-amd64:3.0
      kube-apiserver-amd64:v1.9.3
      dnsmasq-metrics-amd64:1.0
      kube-discovery-amd64:1.0
      exechealthz-amd64:v1.2.0
      heapster-grafana-amd64:v4.2.0
      heapster-influxdb-amd64:v1.1.1
      heapster-amd64:v1.5.1
      )
      for imageName in ${images[@]}; do
      docker pull registry.cn-hangzhou.aliyuncs.com/google-containers/$imageName
      docker tag registry.cn-hangzhou.aliyuncs.com/google-containers/$imageName gcr.io/google_containers/$imageName
      docker rmi registry.cn-hangzhou.aliyuncs.com/google-containers/$imageName
      done

    2. 运行kubeadm init 安装master
      kubeadm init –kubernetes-version=1.9.3
      运行后直到控制台输出:
      kubeadm join –token 7ff4e1.0cdc17f2554bea9d 192.168.56.101:6443 –discovery-token-ca-cert-hash sha256:960214c0f8dd1ecdb224411352cd5504f829343299e6d58dde7ad6c2635842f7
    3. 执行此命令后会进行kubernetes安装,如果卡在一个步骤不动的话,可通过journalctl -xue | kubelet查看具体的错误。
    4. 执行相关命令
      mkdir -p $HOME/.kube#
      cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      chown \$(id -u):\$(id -g) \$HOME/.kube/config
    5. 安装node,加入集群

      yum install -y docker kubelet kubeadm kubectl kubernetes-cni
      systemctl enable docker && systemctl start docker
      systemctl enable kubelet && systemctl start kubelet

    6. 执行kubeadm join 命令,加入集群

      kubeadm join –token 7ff4e1.0cdc17f2554bea9d 192.168.56.101:6443 –discovery-token-ca-cert-hash sha256:960214c0f8dd1ecdb224411352cd5504f829343299e6d58dde7ad6c2635842f7 –skip-preflight-checks

    7. 安装网络插件

      kubectl get nodes 可以看到状态为NotReady 是因为还没有安装CNI网络插件
      kubectl apply -f https://git.io/weave-kube-1.6

  5. 验证kubernetes集群安装完成
    kubectl get pods –all-namespaces
    如果发现有状态错误的pod,则可以执行kubectl –namespace=kube-system describe pod < pod_name >来查看错误原因,一个常见的原因就是镜像没有下载下来。

至此,通过kubeadm工具就实现了kubernetes集群的快速搭建。如果安装失败,可以执行kubeadm reset 命令重新安装。

后续,还会介绍利用二进制方式安装生产环境kubernetes集群。

阅读更多
换一批

没有更多推荐了,返回首页