zoukankan      html  css  js  c++  java
  • [转] CentOS7 用 kubeadm 快速安装 Kubernetes v1.13.4 最新教程

    【转 + 编辑】【From】 https://www.jianshu.com/p/4d61f18bc62d  , https://www.jianshu.com/p/5ff6e26d1912

    时间是2019年3月18日。测试安装的Centos版本是 7.4.1708 ,k8s 以及 kubeadm 版本为 1.13.4 ,docker 版本为 18.06 ,Flannel 版本为 0.11.0。

    过程主要参考以上文章,但结合实测情况,做了一些修改或者编辑。以下第一步的安装脚本可以直接用 root 整个执行,无需FQ,但依赖第三方仓库。

    第一步: 安装 K8S 和 kubeadm (所有节点)

    ### 关闭 selinux
    setenforce 0 #实时动态关闭 selinux
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config #禁止重启后自动开启
    
    ### 关闭交换分区 swapoff
    -a #实时动态关闭交换分区 sed -i '/ swap / s/^/#/' /etc/fstab #禁止重启后自动开启
    ### 网络配置文件
    cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 vm.swappiness=0 EOF modprobe br_netfilter #执行该命令 如果不执行就会在应用k8s.conf时出现加载错误 sysctl -p /etc/sysctl.d/k8s.conf #应用配置文件
    ### 配置资源地址
    yum install -y wget #安装wget命令行 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #配置yum源 yum makecache #更新缓存 yum install -y yum-utils device-mapper-persistent-data lvm2 #安装yum扩展工具 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #配置docker下载的地址
    ### 安装Docker yum list docker-ce --showduplicates|sort -r #展示版本列表 #yum install –y docker-ce #默认安装最新版,也可以指定版本下载
    yum install -y docker-ce-18.06.3.ce-3.el7 systemctl start docker #启动docker systemctl enable docker #将docker加入到开机启动 docker version #查看docker启动情况 和版本信息

    ### 配置docker国内镜像

    mkdir -p /etc/docker

    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": ["https://registry.docker-cn.com"]
    }
    EOF

    service docker restart

    ### 配置k8s资源的下载地址
    cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF ### 安装 kubelet kubeadm kubectl yum install -y kubelet kubeadm kubectl systemctl enable kubelet.service #开机启动
    ### 修改10
    -kubeadm.conf 文件 docker info | grep -i cgroup #查看 Cgroup Driver: cgroupfs 有可能你的与这个不一样是System 这个地方决定 下面的cgroup-driver 值 一定要保证这两个地方相同 # vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf #编辑文件 # Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs" # Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true --fail-swap-on=false" # 在编辑文件中添加上面内容 注意一定要保证-cgroup-driver=cgroupfs的值与docker哪里查询出来的一样 ### 查看需要安装的k8s必须镜像与 安装镜像 kubeadm config images list #可以查看所需安装的镜像文件 kubeadm config images list |sed -e 's/^/docker pull /g' -e 's#k8s.gcr.io#docker.io/mirrorgooglecontainers#g' |sh -x docker images |grep mirrorgooglecontainers |awk '{print "docker tag ",$1":"$2,$1":"$2}' |sed -e 's#mirrorgooglecontainers#k8s.gcr.io#2' |sh -x docker images |grep mirrorgooglecontainers |awk '{print "docker rmi ", $1":"$2}' |sh -x COREDNS_VER=`docker images | grep coredns | awk '{print $2}'` docker pull coredns/coredns:${COREDNS_VER} docker tag coredns/coredns:${COREDNS_VER} k8s.gcr.io/coredns:${COREDNS_VER} docker rmi coredns/coredns:${COREDNS_VER} #coredns 的版本号要与你查询所需安装镜像的版本号相同,我这里需要的是1.2.6 docker images | grep k8s.gcr.io #查看所有镜像是否都已经pull下来了

    #k8s.gcr.io/kube-proxy v1.13.4 fadcc5d2b066 2 weeks ago 80.3MB
    #k8s.gcr.io/kube-apiserver v1.13.4 fc3801f0fc54 2 weeks ago 181MB
    #k8s.gcr.io/kube-controller-manager v1.13.4 40a817357014 2 weeks ago 146MB
    #k8s.gcr.io/kube-scheduler v1.13.4 dd862b749309 2 weeks ago 79.6MB
    #k8s.gcr.io/coredns 1.2.6 f59dcacceff4 4 months ago 40MB
    #k8s.gcr.io/etcd 3.2.24 3cab8e1b9802 5 months ago 220MB
    #k8s.gcr.io/pause 3.1 da86e6ba6ca1 15 months ago 742kB

    第二步: 初始化 (只在主节点Master上面操作)

    ### 先配置好以下信息
    K8S_VER=v1.13.4
    MASTER_IP=192.168.2.108
    
    #只在Master的主机上面执行 版本信息与你要安装的相同
    kubeadm init --kubernetes-version=${K8S_VER} --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=${MASTER_IP}
    
    # 当出现 类似 如下说明 master 安装成功
    # kubeadm join --token 19f284.da47998c9abb01d3 192.168.1.111:6443 --discovery-token-ca-cert-hash sha256:0fd95a9bc67a7bf0ef42da968a0d55d92e52898ec37c971bd77ee501d845b538
    
    #然后执行 安装成功提示的 命令行  这部分执行你安装成功后的部分 可能每个人的有所不同
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config


    #如果是国内 通过执行yml无法直接下载的话执行下面命令
    docker pull registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64
    docker tag registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64 quay.io/coreos/flannel:v0.10.0-amd64
    docker rmi registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64

    
    

    #安装Flannel

    
    

    mkdir -p ~/k8s/
    cd k8s/
    ll

    
    

    wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

    
    

    kubectl apply -f kube-flannel.yml

    
    

    #安装成功后查看pod
    kubectl get pod -n kube-system


    NAME READY STATUS RESTARTS AGE
    coredns-86c58d9df4-j9g8d 1/1 Running 0 128m
    coredns-86c58d9df4-pg45w 1/1 Running 0 128m
    etcd-k8s1 1/1 Running 0 127m
    kube-apiserver-k8s1 1/1 Running 0 127m
    kube-controller-manager-k8s1 1/1 Running 0 127m
    kube-flannel-ds-amd64-7btlw 1/1 Running 0 91m
    kube-flannel-ds-amd64-9vq42 1/1 Running 0 106m
    kube-flannel-ds-amd64-kdf42 1/1 Running 0 90m
    kube-proxy-dtmfs 1/1 Running 0 128m
    kube-proxy-p76tc 1/1 Running 0 90m
    kube-proxy-xgw28 1/1 Running 0 91m
    kube-scheduler-k8s1 1/1 Running 0 128m

    
    

    #全部Running则表示 成功了

    
    

    #如果发现哪一项的STATUS的状态不是Running,执行如下命令
    kubectl describe pod [这里是复制上面的Name列] -n kube-system

    
    

    #这里会看到具体的错误内容,然后根据提示进行解决。

    第三步: 加入node节点,检查 

    
    

    ### 执行master 安装成功后的 kubeadm join命令 注意是你自己的,下面是举例
    kubeadm join --token 19f284.da47998c9abb01d3 192.168.1.111:6443 --discovery-token-ca-cert-hash sha256:0fd95a9bc67a7bf0ef42da968a0d55d92e52898ec37c971bd77ee501d845b538

    ### 在node节点上加入flannel的镜像,由于正常拉不到,也要绕路
    docker pull registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64
    docker tag registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64 quay.io/coreos/flannel:v0.10.0-amd64
    docker rmi registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64

    
    

    ### 主节点查看命令

    #命令一 

    kubectl get cs #显示内容如下说明Master安装没问题


    NAME STATUS MESSAGE ERROR
    scheduler Healthy ok
    controller-manager Healthy ok
    etcd-0 Healthy {"health": "true"}

    #命令二

    kubectl get pod -n kube-system #查看pod状态 下面只是部分pod内容


    NAME READY STATUS RESTARTS AGE
    coredns-86c58d9df4-j9g8d 1/1 Running 0 128m
    coredns-86c58d9df4-pg45w 1/1 Running 0 128m
    etcd-k8s1 1/1 Running 0 127m
    kube-apiserver-k8s1 1/1 Running 0 127m
    kube-controller-manager-k8s1 1/1 Running 0 127m

    #命令三

    kubectl get node #查看节点状态


    NAME STATUS ROLES AGE VERSION
    k8s1 Ready master 131m v1.13.1
    k8s2 Ready <none> 93m v1.13.1
    k8s3 Ready <none> 93m v1.13.1

    
    

    #如果你添加了节点里面看的话 可能还未初始化,显示的是NoReady多等会儿。

     

    卸载:

    kubectl delete node --all
    kubeadm reset -f
    modprobe -r ipip
    lsmod

    yum remove -y kubelet kubeadm kubectl docker-ce docker-ce-cli
    rm -rf ~/.kube/
    rm -rf /etc/kubernetes/
    rm -rf /etc/systemd/system/kubelet.service.d
    rm -rf /etc/systemd/system/kubelet.service
    rm -rf /usr/bin/kube*
    rm -rf /etc/cni
    rm -rf /opt/cni
    rm -rf /var/lib/etcd
    rm -rf /var/etcd

      

  • 相关阅读:
    7-4
    7-3
    第五章例5-2
    第五章例5-1
    第四章例4-12
    第四章例4-11
    第四章例4-10
    第四章例4-9
    第四章例4-8
    第四章例4-7
  • 原文地址:https://www.cnblogs.com/pekkle/p/10545145.html
Copyright © 2011-2022 走看看