zoukankan      html  css  js  c++  java
  • kubernetes集群搭建

    一、Docker安装( 所有节点 )

      安装kubernete首先需要安装docker。

      1、Docker 自动化脚本安装,Docker版本17.03,所有的节点都要安装Docker

    curl https://releases.rancher.com/install-docker/17.03.sh | sh
    

        Docker 查看是否安装成功

    root@yyyyy-k8s-test-xxxxx:~# docker -v
    Docker version 17.03.2-ce, build f5ec1e2

      2、Docker是需要创建用户的

       Docker 命令使用 Unix socket 与 Docker 引擎通讯。只有 root 用户和 Docker 组的用户才可以访问 Docker 引擎的Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,需要使用 Docker 的用户加入 Docker用户组。

    # 创建用户
    useradd -G docker -m kubeusr
    
    # 手动添加 docker 组给 kubeusr(将已有的user加入到docker组中)
    usermod -a -G docker kubeusr 

      

    二、K8s安装前期准备( 所有节点 )

      1、关闭selinux

       安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统,很多 Linux 系统管理员嫌麻烦都把 SELinux 关闭了。在使用了 SELinux 的操作系统中,某个资源是否拥有对应用户的权限(读、写、执行)决定一个资源是否能被访问。

    # 关闭 selinux
    setenforce 0   

       2、关闭防火墙

    systemctl stop iptables
    systemctl disable iptables
    systemctl stop firewalld
    systemctl disable firewalld
    

      我的本地没有iptablefirewilld,所以这四条命令可以跳过。

       3、关闭 swap

        swap是硬盘上的一块空间,当内存不足时,可以将内存空间中的一部分数据交换到swap空间中,以达到释放内存空间的目的。硬盘的速度比内存慢太多太多了。因此swap只是对内存的一种补充,是在内存不足时对内存的扩充,但是不能代替内存使用。

        kubernetes的想法是将实例紧密包装到尽可能接近100%。 所有的部署应该与CPU /内存限制固定在一起。 所以如果调度程序发送一个pod到一台机器,它不应该使用交换。 设计者不想交换,因为它会减慢速度。关闭swap主要是为了性能考虑。

    # 暂时关闭
    swapoff -a 
    # 永久关闭
    sed -i '/ swap / s/^(.*)$/#1/g' /etc/fstab
    

      4、开启iptable转发

       k8s pod之间和servise之间是按照iptable的条目进行转发的。

    # 开启 iptable 转发
    sysctl net.bridge.bridge-nf-call-iptables=1
    cat /proc/sys/net/bridge/bridge-nf-call-iptables
    

    三、安装K8s( 所有节点   版本 10.04 )

       1、安装

    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add && 
    echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | tee /etc/apt/sources.list.d/kubernetes.list && 
    apt-get update -q && 
    apt-get install -qy kubelet=1.10.4-00 kubectl=1.10.4-00 kubeadm=1.10.4-00 kubernetes-cni
    

        其中 https://packages.cloud.google.com/apt/doc/apt-key.gpg 是k8s的工具包 

    四、初始化K8s( 主节点

       1、安装完成后,初始化k8s

        初始化这个主节点 k8s 的时候,需要一个 kubeadm-init-args.conf 文件,将这个文件在本地创建,文件内容如下,文件的格式,空格啥的别写错了不然的话可能运行不成功的:

    apiVersion: kubeadm.k8s.io/v1alpha1
    kind: MasterConfiguration
    apiServerExtraArgs:
      allow-privileged: "true"
      service-node-port-range: 80-32767
    networking:
      podSubnet: 10.244.0.0/16
    

        到 kubeadm-init-args.conf 文件路径下,运行初始化命令:

    kubeadm init --config kubeadm-init-args.conf
    

        这个命令可能需要挺长一段时间来运行,五分多钟把~,运行成功后或生成一个token, 这个tocken,一定要记下来!之后有用的。

       2、复制 k8s 配置文件到 kubeusr 用户

    # 复制 k8s 配置文件到 kubeusr 用户
    mkdir /home/kubeusr/.kube && 
    cp /etc/kubernetes/admin.conf /home/kubeusr/.kube/config && 
    chown -R kubeusr:kubeusr /home/kubeusr/.kube
    

        3、切换到 kubeuser 用户

    # 切换到 kubeuser 用户
    su - kubeusr
    

        4、安装 flannel 网络插件

        FlannelCoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址。

    # 安装 flannel 网络插件
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml
    

         5、 join 节点(在node节点上执行下列命令)

        这个步骤就用到了初始化k8s成功后生成的最后一句话,下面是我的生成做例子:

    kubeadm join 9.42.16.52:6443 --token 5pxlrx.onghjohfdys4j060 --discovery-token-ca-cert-hash sha256:5a77ad4dbae75df14e17325f166ae91fdc60ea21ebbe9ffdb77db4250283d2e3
    

    五、最后的测试

      自此,kubernetes的搭建过程算是完成了,那么我们来看一下,是不是搭建成功了!

      在master 分支下执行下面的命令:

    kubectl get nodes
    

      如果成功的话,最后的结果应该是这个样子的:

  • 相关阅读:
    Log4Net 全方位跟踪程序运行
    ASP.NET MVC 3和Razor中的@helper 语法
    C# 4.0四大新特性代码示例与解读
    程序员必读
    重学算法(1)--遍历二叉树
    重学算法-目录
    Epplus使用技巧
    JQuery 获取URL中传递的参数
    Epplus 使用案例
    .net调用存储过程详解(转载)
  • 原文地址:https://www.cnblogs.com/Lyh1997/p/10187904.html
Copyright © 2011-2022 走看看