• kubeadm安装K8S,大陆网络


    架构: 安装单台master做kubernetes控制平面,添加节点到控制平面

                一个master节点,两个node节点

    1.集群环境介绍

    IP 节点信息
    10.2.83.181 k8s-master
    10.2.83.183 k8s-node1
    10.2.83.182 k8s-node2

     

     

    2.系统优化

    2.1 安装新内核

    原内核信息:

     #升级到新版,升级方式如下:

    wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-5.4.183-1.el7.elrepo.x86_64.rpm
    wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.183-1.el7.elrepo.x86_64.rpm

    yum -y install kernel-lt-5.4.183-1.el7.elrepo.x86_64.rpm
    yum -y install kernel-lt-devel-5.4.183-1.el7.elrepo.x86_64.rpm

     

    #调整默认内核启动

    grub2-set-default "CentOS Linux (5.4.183-1.el7.elrepo.x86_64) 7 (Core)"

    #检查是否修改正确并重启系统

    grub2-editenv list

    reboot

    2.2 开启IPVS支持

    创建/etc/sysconfig/modules/ipvs.modules文件,内容如下:

    #!/bin/bash
    ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack"
    for kernel_module in ${ipvs_modules}; do
    /sbin/modinfo -F filename ${kernel_module} > /dev/null 2>&1
    if [ $? -eq 0 ]; then
    /sbin/modprobe ${kernel_module}
    fi
    done

    最后,执行如下命令使配置生效:

    chmod 755 /etc/sysconfig/modules/ipvs.modules
    sh /etc/sysconfig/modules/ipvs.modules
     lsmod | grep ip_vs

     

     

     

     2.3 关闭防火墙和selinux和swap

    systemctl stop firewalld && systemctl disable firewalld
    setenforce 0
    sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

    接着,还需要关闭系统的交换分区,执行如下命令:

    swapoff -a
    cp /etc/fstab /etc/fstab.bak
    cat /etc/fstab.bak | grep -v swap > /etc/fstab

    然后,还需要修改iptables设置,在/etc/sysctl.conf中添加如下内容:

    vm.swappiness = 0
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward = 1
    net.bridge.bridge-nf-call-ip6tables = 1

    最后,执行如下命令,以使设置生效:

    sysctl -p

    2.4 主机名本地解析配置

     

     

     

     以上系统优化三个节点都需要执行。

    3. 安装K8S

    3.1 安装docker环境(三个节点操作)

    # 卸载docker
    yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine


    #添加阿里云docker yum源,官方的虽然慢点但是还可以接受                  
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    #安装必要依赖
    yum install -y yum-utils \
    device-mapper-persistent-data \
    lvm2
    ##默认安装最新版
    yum install docker-ce docker-ce-cli containerd.io -y
    systemctl start docker
    systemctl enable docker

    #配置docker镜像使用阿里云加速器,需要注册阿里云账号,也可以用DaoCloud的
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
    }
    EOF
    PS:加速器配置
    进入aliyun
    搜索docker镜像加速器--注册后生成加速器信息在服务器进行配置
    
    

     

     

    sudo systemctl daemon-reload
    sudo systemctl restart docker

     

    3.2 安装kubeadm,kubelet,kubectl

    #添加阿里云kubernetes源
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

    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

    yum -y install kubeadm kubectl kubelet

     安装完之后需要设置开机自启否则可能会报错

    systemctl daemon-reload && systemctl enable kubelet

    3.3 初始化集群(master节点)

    在没有开通FQ网络的执行命令:

    kubeadm init --kubernetes-version=1.23.4 --apiserver-advertise-address=10.2.83.181 --image-repository registry.aliyuncs.com/google_containers --service-cidr=172.100.0.0/16 --pod-network-cidr=172.110.0.0/16 --ignore-preflight-errors=all

    可能报错:

    failed with error: Get “http://localhost:10248/healthz“

    解决:修改/etc/docker/daemon.json  替换原来的docker加速器为native.cgroupdriver=systemd

    [root@k8s-master ~]# vim /etc/docker/daemon.json

    {
    "exec-opts": ["native.cgroupdriver=systemd"]
    }

    重启docker

    systemctl restart docker

    systemctl  start kubelet

    在确保kubelet状态为running的时候在初始化可以成功,安装成功会有successfully!

    
    

    开通FQ网络:

    kubeadm init --kubernetes-version=1.23.4 --apiserver-advertise-address=10.2.83.181 --service-cidr=172.100.0.0/16 --pod-network-cidr=172.110.0.0/16 --ignore-preflight-errors=all

     初始化完成后确认:

    查看pod所属的命名空间

    kubectl get pod --all-namespaces 

    runnding的状态是正常的,但是此时可能有一些的pending的状态,原因是没有安装网络组件flannel,安装方法:

    https://github.com/flannel-io/flannel 

    kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml 

    安装完之后再查看状态发现都是running状态就是正常的

    kubectl get pod --all-namespaces 

    3.4 其他节点需要安装

    docker 、kubeadm,kubelet,kubect同master节点,docker需要启动,其他服务无需启动

    3.5 其他节点加入集群

    kubeadm token create --print-join-command  //查看node节点join的命令

    其他节点执行该命令后在master节点执行:

    [root@k8s-master ~]# kubectl get nodes  //查看状态为ready就是正常的
    NAME STATUS ROLES AGE VERSION
    k8s-master Ready control-plane,master 23h v1.23.4
    k8s-node1 Ready <none> 114m v1.23.4
    k8s-node2 Ready <none> 112m v1.23.4

    此时就完成了K8S的初步部署。

    K8S的相关命令:

    https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get 

    https://www.cnblogs.com/testzcy/p/13025897.html

  • 相关阅读:
    仿佛看到了曾经在电子厂的自己
    TP5 condition 多个条件如何写
    电子数据时代我该如何保存我的数据?
    Shell脚本查询磁盘数量
    缺少维生素?
    html5的页面在IOS中,按钮 变成圆角怎么办?
    生物信息数据分析准则
    用variant的数据来推导基因表达 | Imputation of Expression Using PrediXcan
    Rare-Variant Association Analysis | 罕见变异的关联分析
    英语语法
  • 原文地址:https://www.cnblogs.com/liuxiuxiu/p/16007509.html
Copyright © 2020-2023  润新知