• 第三章 k8s cluster环境创建



    1  用如下方法安装指定版本的docker,但是我的环境会报错

    # 安装rpm
    apt install rpm
    
    # 下载 RPM 包, docker 17.03.2 版本
    wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm -O /tmp/docker/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
    wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm -O /tmp/docker/docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm
    # 测试安装
    rpm -Uvh --test /tmp/docker/*.rpm
    # 安装 Docker
    rpm -Uvh /tmp/docker/*.rpm

    上面的方法我没能安装成功, 用如下的方法安装docker,没有指定版本,导致后面会有一点问题

    apt-get update && apt-get install docker.io

    2 创建 docker user

    # 创建用户
    useradd -G docker -m kubeusr
    # 手动添加 docker 组给 kubeusr
    usermod -a -G docker kubeusr

    3  k8s prepare(所有节点)

    # 关闭 selinux(临时关闭,不需要重启机器)
    setenforce 0
    # 手动修改 selinux 配置文件,设置永久关闭(需要重启动机器)
    vi /etc/selinux/config (我没有这个文件,所以就是临时关闭,如果重启机器后,还要运行临时关闭的命令)
    SELINUX=enforcing改为SELINUX=disabled
    systemctl stop iptables systemctl disable iptables systemctl stop firewalld systemctl disable firewalld # 关闭 swap # 暂时关闭 swapoff
    -a # 永久关闭 sed -i '/ swap / s/^(.*)$/#1/g' /etc/fstab # 开启 iptable 转发 sysctl net.bridge.bridge-nf-call-iptables=1 cat /proc/sys/net/bridge/bridge-nf-call-iptables

    4:安装 K8S(所有节点)

    kubelet: 运行在Cluster所有节点上,负责启动Pod和容器。

    kubeadm: 初始化Cluster。

    kubectl: 是K8S的命令行工具。可以部署和管理应用,查看各种资源,创建、删除、和更新各种组件。

    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

    5: 初始化 k8s(主节点)

    kubeadm init --config kubeadm-init-args.conf
    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
    (这个命令执行完后,会有token , 和hash sha等,需要保存下来,记住)
    # 复制 k8s 配置文件到 kubeusr 用户
    mkdir /home/kubeusr/.kube && 
    cp /etc/kubernetes/admin.conf /home/kubeusr/.kube/config && 
    chown -R kubeusr:kubeusr /home/kubeusr/.kube
    
    # 切换到 kubeuser 用户
    su - kubeusr
    # 安装 flannel 网络插件(为了能让K8s Cluster工作,必须安装Pod网络,否则Pod之间无法通信)
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml
    
    # join 节点(在node节点上执行下列命令
    # 在master上执行kubeadmtoken list 可以查看token
    kubeadm join
    9.42.9.178:6443 --token nmnhs0.ab7ehtvg9hhh3ngb --discovery-token-ca-cert-hash sha256:77541f60164a662d008f256391dbbba6bdbdd516d5711a44e1ab4276899431ec

    注意: 因为docker版本我没有装17.0.3的版本,而是安装了一个新的版本,所以执行join的时候,会报错,需要
     --ignore-preflight-errors=CRI

    6 最后集群构建完毕

     kubectl get pods --all-namespaces      

     kubectl get pods -n default

    注意:

                    如果想重新初始化集群,使用kubeadm reset, 会把kubeadm init和kubeadm  join都会被撤销,因为token, sha等认证信息都变化了,需要重新init ,

                     重新join。

                   一开始k8s的版本装错了,需要全卸载载重新装: apt-get remove kubelet kubeadm kubectl kubernetes-cni

  • 相关阅读:
    Codeforces 1009F Dominant Indices
    C++之++运算符重载问题
    Codeforces 1010D Mars rover
    这是一个开始
    MoreEffectiveC++Item35(异常)(条款9-15)
    C++隐式类类型转化
    MoreEffectiveC++Item35(操作符)(条款5-8)
    MoreEffectiveC++Item35(基础议题)(条款1-4)
    php+mysql网站无限级栏目分类-递归获取树形结构函数
    JavaScript简易动画
  • 原文地址:https://www.cnblogs.com/liufei1983/p/10183922.html
Copyright © 2020-2023  润新知