侧边栏壁纸
  • 累计撰写 123 篇文章
  • 累计创建 48 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

k8s集群之-搭建

田小晖
2020-05-31 / 0 评论 / 0 点赞 / 407 阅读 / 0 字 / 正在检测是否收录...

k8s集群之-搭建

Kubernetes官网

1.前置要求

  • 3台Linux 搭建1个master节点和2个node节点
  • 每台机器 2 GB 或更多的运行内存(少了可能起不来)
  • 每台机器2CPU或以上
  • 集群中的所有机器的网络彼此均能相互(能ping通)连接(公网和内网都可以)
  • 节点之中不可以有重复的主机名、MAC 地址或 product_uuid
  • 开启机器上的某些端口
  • 禁用交换分区

2.设置linux环境

  • 关闭防火墙(开发时 生产环境请自定义规则)

    systemctl stop firewalld
    systemctl disable firewalld
    
  • 关闭selinux

    #全局禁用
    sed -i 's/enforcing/disabled/' /etc/selinux/config
    #禁用当前会话
    setenforce 0
    
  • 关闭swap 内存交换

    #关闭当前
    swapoff -a
    #全局禁用 
    vim /etc/fstab
    #将带有swap的注释掉 wq保存
    #/dev/mapper/centos-swap swap    swap    defaults        0 0
    #验证 swap必须全为0  -m:兆单位 -g:吉单位
    free -m
    
  • 设置主机名 不能是localhost

    #查看主机名
    hostname
    #设置主机名
    hostnamectl set-hostname 新主机名
    
  • 添加主机名与IP的对应关系

    vim /etc/hosts
    
    172.16.10.67 k8s-node1
    172.16.10.68 k8s-node2
    172.16.10.69 k8s-node3
    

3.安装

  • 卸载之前的docker(所有节点)

    sudo yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine
    
  • 安装docker的前置依赖(所有节点)

    yum install -y yum-utils device-mapper-persistent-data lvm2
    
  • 设置docker的yun源(所有节点)

    sudo yum-config-manager \
    --add-repo \
    http://download.docker.com/linux/centos/docker-ce.repo
    
  • 安装docker以及docker-ci(所有节点)

    sudo yum install -y docker-ce docker-ce-di containerd.io
    
  • 配置docker加速(所有节点)

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://akqgo94r.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
  • 设置开机启动(所有节点)

    systemctl enable docker
    
  • 添加阿里yum源(所有节点)

    cat > /etc/yum.repos.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
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
    htsts://mirrors.aliyun.com/kubemnetes/yum/doc/rpm-package-key.gpg
    EOF
    
  • 安装kubeadm、kubelet、kubectl(所有节点)

    #查看yum源  可以检测上一步配置的正确性
    yum list|grep kube
    #安装
    yum install -y kubelet-1.17.3 kubeadm-1.17.3 kubectl-1.17.3
    #启动kubelet和设置开机启动
    systemctl enable kubelet
    systemctl start kubelet
    
  • 设置kubeadm、kubelet、kubectl镜像(只在master执行)

    • 添加master_images.sh文件 赋予可执行权限
    #!/bin/bash
    
    images=(
    	kube-apiserver:v1.17.3
        	kube-proxy:v1.17.3
    	kube-controller-manager:v1.17.3
    	kube-scheduler:v1.17.3
    	coredns:1.6.5
    	etcd:3.4.3-0
        pause:3.1
    )
    
    for imageName in ${images[@]} ; do
        docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
    done
    
    • 执行master_images.sh (只在master执行)
    ./master_images.sh
    
  • 初始化master apiserver-advertise-address地址是你自己master的地址(只在master执行)

    kubeadm init \
    --apiserver-advertise-address=172.16.10.67 \
    --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
    --kubernetes-version v1.17.3 \
    --service-cidr=10.96.0.0/16 \
    --pod-network-cidr=10.244.0.0/16
    
    • 错误解决

      [preflight] Running pre-flight checks [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/ error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1 [preflight] If you know what you are doing, you can make a check non-fatal with–ignore-preflight-errors=…To see the stack trace of this error execute with --v=5 or higher

      echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
      

    image-20200531160553780

  • 开始使用之前先按照提示执行几个命令(只在master执行)

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  • 安装网络插件(flannel)(只在master执行)

    • 获取kube-flannel.yml 文件

      wget http://oss.tianch.xyz/k8s/kube-flannel.yml
      
    • apply配置文件

      kubectl apply -f kube-flannel.yml
      
    • 查看pods 都要Running才行

      kubectl get pods --all-namespaces
      

      image-20200531161740778

  • 查看主节点状态

    kubectl get nodes
    

    image-20200531163000466

  • master节点Ready了 让其它节点加入

    kubeadm join 172.16.10.67:6443 --token idjrsn.y0g0ji2sbde1ev3r \
        --discovery-token-ca-cert-hash sha256:4204390176617c66a8b40f665a63bfc520a0ae031181006fbfd8b2c182653f6b
    

    image-20200531163330307

    • token过期解决 ttl 0为永不过期

      kubeadm token create --ttl 0 --print-join-command
      
  • 监控pod进度

    watch kubectl get pod -n kube-system -o wide
    

    全部Ready就安装完成了

    image-20200531164251378

博主关闭了所有页面的评论