• centos7 kubeadm 搭建k8s


    Centos 7 搭建 kubernetes 集群环境

    一、介绍

    本次是centos7 搭建kubernetes1.15.9
    通过kubeadm 的形式搭建
    

    二、准备

    > centos 7 (镜像:centos-7-x86_64-minimal-1908.iso, 镜像下载地址:http://mirrors.ustc.edu.cn/)
    > 虚拟机设置2核 4G内存
    

    三、安装docker

    下载软件源
    # wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
    
    下载指定的docekr-ce的docker (低版本的docker 无法支持高版本的kubernetes)
    # yum -y install docker-ce-18.09.1-3.el7
    
    配置docker的daemon.json
    # vim /etc/docker/daemon.json
    {
     "exec-opts":["native.cgroupdriver=systemd"],
     "registry-mirrors": ["http://hub-mirror.c.163.com"]
    }
    
    开启docker 并设置开机自启动
    # systemctl start docker & systemctl enable docker
    

    四、安装kubectl kubeadm kubelet

    准备kubernetes源
    # cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
    
    下载 kubeadm kubectl kubelet
    # yum -y install kubeadm-1.15.9 kubectl-1.15.9 kubelet-1.15.9
    

    五、安装kubernetes 前的准备工作

    每一个主机都[必须]有不一样的主机名(下面是master,你也可以是node,名字一定要不一样)
    # echo "master" > /etc/hostname
    
    不同节点的ip 对应不用的名字,不硬性要求.名字不一样呀,好记就行.
    # cat >> /etc/hosts <<EOF
    192.168.0.113 k8s-master
    192.168.0.114 k8s-node1
    192.168.0.116 k8s-node2
    EOF
    
    关闭防火墙
    # systemctl stop firewalld & systemctl disable firewalld
    
    关闭分区swap
    # swapoff -a
    
    关闭selinux
    # sed -i 's/enforcing/disabled/' /etc/selinux/config
    # setenforce -0
    
    将桥接的IPv4 流量传递到iptables的链
    # cat > /etc/sysctl.d/k8s.conf <<EOF
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    # sysctl --system
    
    
    开启kubelet
    systemctl start kubelet & systemctl enable kubelet
    
    

    六、安装kubernetes

    选择1.15.9 的版本,指定pod 网络ip的范围,api-server地址其他节点可ping通的ip地址,并使用国内的镜像(国外的下载不下来)
    # kubeadm init --kubernetes-version 1.15.9 
    --pod-network-cidr 10.244.0.0/16 
    --apiserver-advertise-address 192.168.0.119 
    --image-repository registry.aliyuncs.com/google_containers
    
    ------------------------- 到这里没有报错的话基本上也就不错了--------------------
    
    接下来应该有提示进行如下操作
    # mkdir -p $HOME/.kube
    # sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    # sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    
    安装网络插件
    # wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    # sed -i 's/quay.io/coreos/flannel/quay-mirror.qiniu.com/coreos/flannel/' kube-flannel.yml
    # wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml
    kubectl apply -f kube-flannel.yml
    kubectl apply -f kube-flannel-rbac.yml
    

    七、添加节点

    每个主机都先下载好docker,kubectl,kubeadm,kubelet,也就是重复上面三、四、五的步骤(其他节点可以不用kubectl)
    
    
    
    添加节点(这一步会在kubeadm init 完成后会有这个操作,记住就行,24小时失效,没记住可以再生成)
    # kubeadm join <master-ip>:<port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
    

    八、可能遇到的问题

    • 8.1 cordons pod起不起来,通过kubectl describe pods/coredns-XXX -n kube-system 有报错
      pods coredns : network: failed to find plugin "bridge" in path [/opt/cni/bin]]

      这个原因是网络插件没有dridge
      
      > 解决方式 一
      # go get github.com/containernetworking/plugins
      # cd $GOPATH/src/github.com/containernetworking/plugins
      # ./build_linux.sh
      # rm -rf /opt/cni/bin/*
      # cp bin/* /opt/cni/bin
      
      > 解决方式二 (master 主机有的话)
      # scp 命令复制到其他主机上
      
      > 解决方式三
      在kubeadm init 或者kubeadm join 前执行 rm -rf /opt/cni/bin/*
      
      
    • 8.2 其他节点使用kubectl 时

      The connection to the server localhost:8080 was refused - did you specify the right host or port?

      解决
      将master 节点的/etc/kubernetes/admin.conf复制到当前阶段下的 ~/.kube/conf
      
      其实其他的节点可以不需要 kubectl 
      
    • 8.3 不允许运行在master 节点上部署

      单节点创建deployment时报错

      default-scheduler 0/1 nodes are available: 1 node(s) had taints that the pod didn't tolerate

      解决:
      # kubectl taint nodes --all node-role.kubernetes.io/master-
      
  • 相关阅读:
    excel 常用小技巧
    如何以正确的顺序重新安装驱动程序
    kaby LAKE 仅支持 Windows10
    关闭远程计算机CMD命令
    根据IP查主机名
    Charles安装与使用
    常用的算法思想总结
    iOS学习之单例模式
    PHP之简单实现MVC框架
    Objective-C 继承和多态
  • 原文地址:https://www.cnblogs.com/xiaobaiskill/p/13045231.html
Copyright © 2020-2023  润新知