zoukankan      html  css  js  c++  java
  • centos7国内部署kubernets1.20.7步骤

    1. 本地环境

    3台虚拟机 centos7.9 ,部署kubernetes1.20.7

    1.1 查看本机centos版本信息

    cat /etc/redhat-release

    1.2 查看docker版本,本地是20.10.6

    docker version

    1.3 因为k8s是根据主机名来查找主机的,因此需要设置3台虚机的hostname不相同

    修改主机名
    vi /etc/hostname
    
    3台主机分别修改为master1/node1/node2
    
    修改域名解析hosts
    vi /etc/hosts
    
    在文件中追加如下配置,需要根据实际情况修改ip地址
    10.0.0.30    master1
    10.0.0.31   node1
    10.0.0.32   node2

    cat >> /etc/hosts << EOF
    10.0.0.30 master1
    10.0.0.31 node1
    10.0.0.32 node2
    EOF

    1.4 修改selinx

    # 将 SELinux 设置为 permissive 模式(相当于将其禁用)

    setenforce 0
    sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

    1.5 关闭swap

    # 当前临时关闭虚拟内存

    swapoff -a

    # 修改/etc/fstab文件

    vi /etc/fstab

    注释掉swap的自动挂载,wq保存。

    #/dev/mapper/centos-swap swap swap defaults 0 0

    1.6 关闭防火墙

    systemctl stop firewalld
    systemctl disable firewalld
    chkconfig firewalld off

    1.7 配置iptables

    确保 br_netfilter 模块被加载。这一操作可以通过运行

     lsmod | grep br_netfilter 来完成。

    为了让你的 Linux 节点上的 iptables 能够正确地查看桥接流量,你需要确保在你的 sysctl 配置中将 net.bridge.bridge-nf-call-iptables 设置为 1。

    cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
    br_netfilter
    EOF
    
    cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    sudo sysctl --system

    2 在3台虚机上安装 kubeadm、kubectl、kubelet

    2.1 使用阿里云镜像加速国内安装

    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=1
    repo_gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF

    2.2 查看可以安装的版本

    yum list -y kubeadm --showduplicates
    

     2.3 安装

    yum install -y kubelet-1.20.7-0 kubeadm-1.20.7-0 kubectl-1.20.7-0 --disableexcludes=kubernetes
    
    启动
    systemctl start kubelet
    开机启动
    systemctl enable kubelet

    3 在master虚机中执行以下命令初始化master,使用kubeadm初始化master

    3.1 查看所需镜像及版本

    kubeadm config images list #可以查看部署服务所需要用的镜像以及版本信息。

    3.2 初始化master

    kubeadm init 
      --kubernetes-version=v1.20.7 
      --pod-network-cidr=10.20.0.0/16 
      --image-repository registry.aliyuncs.com/google_containers 
      --apiserver-advertise-address 10.0.0.30 
      --v=6
    
    参数说明:
    kubernetes-version:要安装的版本
    pod-network-cidr:负载容器的子网网段
    image-repository:指定镜像仓库(由于从阿里云拉镜像,解决了k8s.gcr.io镜像拉不下来的问题)
    apiserver-advertise-address:节点绑定的服务器ip(多网卡可以用这个参数指定ip)
    v=6:这个参数我还没具体查文档,用法是初始化过程显示详细内容,部署过程如果有问题看详细信息很多时候能找到问题所在

    当显示 successfully 表示安装成功

    3.3 按照提示开始启动

    mkdir -p $HOME/.kube
    cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    chown $(id -u):$(id -g) $HOME/.kube/config

    3.4 安装网络

    calico

    kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

    或者 flannel

    mkdir -p /opt/yaml/k8s

    获取部署flannel的yaml文件
    https://github.com/flannel-io/flannel/blob/master/Documentation/kube-flannel.yml
    到/opt/yaml/k8s 目录中

    # 将quay.io换成quay.mirrors.ustc.edu.cn(中科大)的镜像

    sed -i 's#quay.io/coreos/flannel#quay.mirrors.ustc.edu.cn/coreos/flannel#' /opt/yaml/k8s/kube-flannel.yml

    部署网络

    # 部署flannel
    kubectl apply -f /opt/yaml/k8s/kube-flannel.yml

    此时查看节点信息

    kubectl get nodes

    可以看到 master 已经ready

    3.5 node节点加入集群,在node1/node2中执行

    kubeadm join 10.0.0.30:6443 --token e4bs8w.jvxmhysk8alc1zuv 
        --discovery-token-ca-cert-hash sha256:4270b15c29b428387cfb76c747053be05965c84a448d69af87c8997bbb12fe31

    此时查看节点信息,已经全部ready

    kubectl get nodes

    4 token相关操作

    可以在master节点上通过 kubeadm token list 得到token,默认24小时后过期。

    token过期后,新节点要加入该集群,需要在master节点上用下面的命令重新生成token。

    kubeadm token create
    kubeadm token create --print-join-command

    5 集群卸载

    集群重置
    kubeadm reset
    
    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
    yum clean all
    yum remove kube*

    参考资料:

    https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

    https://www.cnblogs.com/straycats/p/14322995.html

    学习过程中,难免出错。如果您在阅读过程中遇到不太明白,或者有疑问。欢迎指正...联系邮箱crazyCodeLove@163.com

    如果觉得有用,想赞助一下请移步赞助页面:赞助一下

  • 相关阅读:
    Codeforces 424C(异或)
    CodeForces
    Codeforces 424A (思维题)
    HDU 1197 Specialized Four-Digit Numbers
    ZOJ 2301 Color the Ball 线段树(区间更新+离散化)
    HDU 1106 排序
    Codefroces 831B Keyboard Layouts
    POJ 1082 Calendar Game
    HDU 多校联合 6045
    HDU 5976 Detachment
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/14878184.html
Copyright © 2011-2022 走看看