• 【云原生】K8S二进制搭建一


    一、环境部署

    集群IP组件
    k8s集群master01192.168.243.100kube-apiserver kube-controller-manager kube-scheduler etcd
    k8s集群master02192.168.243.104
    k8s集群node01192.168.243.102kubelet kube-proxy docker
    k8s集群node02192.168.243.103
    etcd集群节点1192.168.243.100etcd
    etcd集群节点2192.168.243.102
    etcd集群节点3192.168.243.103

    1.1操作系统初始化

    #关闭防火墙
    systemctl stop firewalld
    systemctl disable firewalld
    iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
    
    #关闭selinux
    setenforce 0
    sed -i 's/enforcing/disabled/' /etc/selinux/config
    
    #关闭swap
    swapoff -a
    sed -ri 's/.*swap.*/#&/' /etc/fstab 
    
    #根据规划设置主机名
    hostnamectl set-hostname master01
    hostnamectl set-hostname node01
    hostnamectl set-hostname node02
    
    #在master添加hosts
    cat >> /etc/hosts << EOF
    192.168.80.10 master01
    192.168.80.11 node01
    192.168.80.12 node02
    EOF
    
    #调整内核参数
    cat > /etc/sysctl.d/k8s.conf << EOF
    #开启网桥模式,可将网桥的流量传递给iptables链
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    #关闭ipv6协议
    net.ipv6.conf.all.disable_ipv6=1
    net.ipv4.ip_forward=1
    EOF
    
    sysctl --system
    
    #时间同步
    yum install ntpdate -y
    ntpdate time.windows.com
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    二、部署etcd集群

    • etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd是go语言编写的。

    etcd 作为服务发现系统,有以下的特点:
    简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单
    安全:支持SSL证书验证
    快速:单实例支持每秒2k+读操作
    可靠:采用raft算法,实现分布式系统数据的可用性和一致性

    • etcd 目前默认使用2379端口提供HTTP API服务, 2380端口和peer通信(这两个端口已经被IANA(互联网数字分配机构)官方预留给etcd)。 即etcd默认使用2379端口对外为客户端提供通讯,使用端口2380来进行服务器间内部通讯。
    • etcd 在生产环境中一般推荐集群方式部署。由于etcd 的leader选举机制,要求至少为3台或以上的奇数台。

    2.1 准备签发证书环境

    • CFSSL 是 CloudFlare 公司开源的一款 PKI/TLS 工具。 CFSSL 包含一个命令行工具和一个用于签名、验证和捆绑 TLS 证书的 HTTP API 服务。使用Go语言编写。
    • CFSSL 使用配置文件生成证书,因此自签之前,需要生成它识别的 json 格式的配置文件CFSSL 提供了方便的命令行生成配置文件。
    • CFSSL 用来为 etcd 提供 TLS 证书,它支持签三种类型的证书:
      1、client 证书,服务端连接客户端时携带的证书,用于客户端验证服务端身份,如 kube-apiserver 访问 etcd;
      2、server 证书,客户端连接服务端时携带的证书,用于服务端验证客户端身份,如 etcd 对外提供服务;
      3、peer 证书,相互之间连接时使用的证书,如 etcd 节点之间进行验证和通信。
      这里全部都使用同一套证书认证。

    在 master01 节点上操作

    准备cfssl证书生成工具

    wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/local/bin/cfssl
    wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/local/bin/cfssljson
    wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -O /usr/local/bin/cfssl-certinfo
    
    chmod +x /usr/local/bin/cfssl*
    
    • 1
    • 2
    • 3
    • 4
    • 5

    cfssl:证书签发的工具命令
    cfssljson:将 cfssl 生成的证书(json格式)变为文件承载式证书
    cfssl-certinfo:验证证书的信息
    cfssl-certinfo -cert <证书名称> #查看证书的信息

    在这里插入图片描述
    生成Etcd证书

    mkdir /opt/k8s
    cd /opt/k8s/
    
    #上传 etcd-cert.sh 和 etcd.sh 到 /opt/k8s/ 目录中
    chmod +x etcd-cert.sh etcd.sh
    
    #创建用于生成CA证书、etcd 服务器证书以及私钥的目录
    mkdir /opt/k8s/etcd-cert
    mv etcd-cert.sh etcd-cert/
    cd /opt/k8s/etcd-cert/
    ./etcd-cert.sh			#生成CA证书、etcd 服务器证书以及私钥
    
    ls
    ca-config.json  ca-csr.json  ca.pem        server.csr       server-key.pem
    ca.csr          ca-key.pem   etcd-cert.sh  server-csr.json  server.pem
    
    #上传 etcd-v3.4.9-linux-amd64.tar.gz 到 /opt/k8s 目录中,启动etcd服务
    cd /opt/k8s/
    tar zxvf etcd-v3.4.9-linux-amd64.tar.gz
    ls etcd-v3.4.9-linux-amd64
    Documentation  etcd  etcdctl  README-etcdctl.md  README.md  READMEv2-etcdctl.md
    ------------------------------------------------------------------------------------------
    etcd就是etcd 服务的启动命令,后面可跟各种启动参数
    etcdctl主要为etcd 服务提供了命令行操作
    ------------------------------------------------------------------------------------------
    
    #创建用于存放 etcd 配置文件,命令文件,证书的目录
    mkdir -p /opt/etcd/{cfg,bin,ssl}
    
    cd /opt/k8s/etcd-v3.4.9-linux-amd64/
    mv etcd etcdctl /opt/etcd/bin/
    cp /opt/k8s/etcd-cert/*.pem /opt/etcd/ssl/
    
    cd /opt/k8s/
    ./etcd.sh etcd01 192.168.80.10 etcd02=https://192.168.80.11:2380,etcd03=https://192.168.80.12:2380
    #进入卡住状态等待其他节点加入,这里需要三台etcd服务同时启动,如果只启动其中一台后,服务会卡在那里,直到集群中所有etcd节点都已启动,可忽略这个情况
    
    #可另外打开一个窗口查看etcd进程是否正常
    ps -ef | grep etcd
    
    #把etcd相关证书文件、命令文件和服务管理文件全部拷贝到另外两个etcd集群节点
    scp -r /opt/etcd/ root@192.168.80.11:/opt/
    scp -r /opt/etcd/ root@192.168.80.12:/opt/
    scp /usr/lib/systemd/system/etcd.service root@192.168.80.11:/usr/lib/systemd/system/
    scp /usr/lib/systemd/system/etcd.service root@192.168.80.12:/usr/lib/systemd/system/
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在 node01与02 节点上操作

    vim /opt/etcd/cfg/etcd
    #[Member]
    ETCD_NAME="etcd02"											#修改
    ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
    ETCD_LISTEN_PEER_URLS="https://192.168.80.11:2380"			#修改
    ETCD_LISTEN_CLIENT_URLS="https://192.168.80.11:2379"		#修改
    
    #[Clustering]
    ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.80.11:2380"		#修改
    ETCD_ADVERTISE_CLIENT_URLS="https://192.168.80.11:2379"				#修改
    ETCD_INITIAL_CLUSTER="etcd01=https://192.168.80.10:2380,etcd02=https://192.168.80.11:2380,etcd03=https://192.168.80.12:2380"
    ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
    ETCD_INITIAL_CLUSTER_STATE="new"
    
    #启动etcd服务
    systemctl start etcd
    systemctl enable etcd
    systemctl status etcd
    
    //在 node02 节点上操作
    vim /opt/etcd/cfg/etcd
    #[Member]
    ETCD_NAME="etcd03"											#修改
    ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
    ETCD_LISTEN_PEER_URLS="https://192.168.80.12:2380"			#修改
    ETCD_LISTEN_CLIENT_URLS="https://192.168.80.12:2379"		#修改
    
    #[Clustering]
    ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.80.12:2380"		#修改
    ETCD_ADVERTISE_CLIENT_URLS="https://192.168.80.12:2379"				#修改
    ETCD_INITIAL_CLUSTER="etcd01=https://192.168.80.10:2380,etcd02=https://192.168.80.11:2380,etcd03=https://192.168.80.12:2380"
    ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
    ETCD_INITIAL_CLUSTER_STATE="new"
    
    #启动etcd服务
    systemctl start etcd
    systemctl enable etcd
    systemctl status etcd
    
    #检查etcd群集状态
    ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.80.10:2379,https://192.168.80.11:2379,https://192.168.80.12:2379" endpoint health --write-out=table
    
    ------------------------------------------------------------------------------------------
    --cert-file:识别HTTPS端使用SSL证书文件
    --key-file:使用此SSL密钥文件标识HTTPS客户端
    --ca-file:使用此CA证书验证启用https的服务器的证书
    --endpoints:集群中以逗号分隔的机器地址列表
    cluster-health:检查etcd集群的运行状况
    ------------------------------------------------------------------------------------------
    
    #查看etcd集群成员列表
    ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.80.10:2379,https://192.168.80.11:2379,https://192.168.80.12:2379" --write-out=table member list
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54

    在这里插入图片描述

    在这里插入图片描述

    三、部署docker引擎

    /所有 node 节点部署docker引擎
    yum install -y yum-utils device-mapper-persistent-data lvm2 
    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
    yum install -y docker-ce docker-ce-cli containerd.io
    
    systemctl start docker.service
    systemctl enable docker.service 
    
    vim /etc/docker/daemon.json
    {
      "registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"],
      "exec-opts": ["native.cgroupdriver=systemd"],
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "500m", "max-file": "3"
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在这里插入图片描述
    在这里插入图片描述

    四、部署 Master 组件

    4.1在 master01 节点上操

    #上传 master.zip 和 k8s-cert.sh 到 /opt/k8s 目录中,解压 master.zip 压缩包
    cd /opt/k8s/
    unzip master.zip
    chmod +x *.sh
    
    #创建kubernetes工作目录
    mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs}
    
    #创建用于生成CA证书、相关组件的证书和私钥的目录
    mkdir /opt/k8s/k8s-cert
    mv /opt/k8s/k8s-cert.sh /opt/k8s/k8s-cert
    cd /opt/k8s/k8s-cert/
    ./k8s-cert.sh				#生成CA证书、相关组件的证书和私钥
    
    ls *pem
    admin-key.pem  apiserver-key.pem  ca-key.pem  kube-proxy-key.pem  
    admin.pem      apiserver.pem      ca.pem      kube-proxy.pem
    
    #复制CA证书、apiserver相关证书和私钥到 kubernetes工作目录的 ssl 子目录中
    cp ca*pem apiserver*pem /opt/kubernetes/ssl/
    
    #上传 kubernetes-server-linux-amd64.tar.gz 到 /opt/k8s/ 目录中,解压 kubernetes 压缩包
    cd /opt/k8s/
    tar zxvf kubernetes-server-linux-amd64.tar.gz
    
    #复制master组件的关键命令文件到 kubernetes工作目录的 bin 子目录中
    cd /opt/k8s/kubernetes/server/bin
    cp kube-apiserver kubectl kube-controller-manager kube-scheduler /opt/kubernetes/bin/
    ln -s /opt/kubernetes/bin/* /usr/local/bin/
    
    #创建 bootstrap token 认证文件,apiserver 启动时会调用,然后就相当于在集群内创建了一个这个用户,接下来就可以用 RBAC 给他授权
    cd /opt/k8s/
    vim token.sh
    #!/bin/bash
    #获取随机数前16个字节内容,以十六进制格式输出,并删除其中空格
    BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ')
    #生成 token.csv 文件,按照 Token序列号,用户名,UID,用户组 的格式生成
    cat > /opt/kubernetes/cfg/token.csv <<EOF
    ${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap"
    EOF
    
    chmod +x token.sh
    ./token.sh
    
    cat /opt/kubernetes/cfg/token.csv
    
    #二进制文件、token、证书都准备好后,开启 apiserver 服务
    cd /opt/k8s/
    ./apiserver.sh 192.168.80.10 https://192.168.80.10:2379,https://192.168.80.11:2379,https://192.168.80.12:2379
    
    #检查进程是否启动成功
    ps aux | grep kube-apiserver
    
    netstat -natp | grep 6443   #安全端口6443用于接收HTTPS请求,用于基于Token文件或客户端证书等认证
    
    
    #启动 scheduler 服务
    cd /opt/k8s/
    ./scheduler.sh
    ps aux | grep kube-scheduler
    
    #启动 controller-manager 服务
    ./controller-manager.sh
    ps aux | grep kube-controller-manager
    
    #生成kubectl连接集群的kubeconfig文件
    ./admin.sh
    
    #绑定默认cluster-admin管理员集群角色,授权kubectl访问集群
    kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous
    
    #通过kubectl工具查看当前集群组件状态
    kubectl get cs
    NAME                 STATUS    MESSAGE             ERROR
    controller-manager   Healthy   ok                  
    scheduler            Healthy   ok                  
    etcd-2               Healthy   {"health":"true"}   
    etcd-1               Healthy   {"health":"true"}   
    etcd-0               Healthy   {"health":"true"}  
    
    #查看版本信息
    kubectl version
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    五、部署Worker Node组件

    在所有 node 节点上操作

    #创建kubernetes工作目录
    mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs}
    
    #上传 node.zip 到 /opt 目录中,解压 node.zip 压缩包,获得kubelet.sh、proxy.sh
    cd /opt/
    unzip node.zip
    chmod +x kubelet.sh proxy.sh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    在 master01 节点上操作

    #把 kubelet、kube-proxy 拷贝到 node 节点
    cd /opt/k8s/kubernetes/server/bin
    scp kubelet kube-proxy root@192.168.80.11:/opt/kubernetes/bin/
    scp kubelet kube-proxy root@192.168.80.12:/opt/kubernetes/bin/
    
    #上传kubeconfig.sh文件到/opt/k8s/kubeconfig目录中,生成kubelet初次加入集群引导kubeconfig文件和kube-proxy.kubeconfig文件
    #kubeconfig 文件包含集群参数(CA 证书、API Server 地址),客户端参数(上面生成的证书和私钥),集群 context 上下文参数(集群名称、用户名)。Kubenetes 组件(如 kubelet、kube-proxy)通过启动时指定不同的 kubeconfig 文件可以切换到不同的集群,连接到 apiserver。
    mkdir /opt/k8s/kubeconfig
    
    cd /opt/k8s/kubeconfig
    chmod +x kubeconfig.sh
    ./kubeconfig.sh 192.168.80.10 /opt/k8s/k8s-cert/
    
    #把配置文件 bootstrap.kubeconfig、kube-proxy.kubeconfig 拷贝到 node 节点
    scp bootstrap.kubeconfig kube-proxy.kubeconfig root@192.168.80.11:/opt/kubernetes/cfg/
    scp bootstrap.kubeconfig kube-proxy.kubeconfig root@192.168.80.12:/opt/kubernetes/cfg/
    
    #RBAC授权,使用户 kubelet-bootstrap 能够有权限发起 CSR 请求证书
    kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • kubelet 采用 TLS Bootstrapping 机制,自动完成到 kube-apiserver 的注册,在 node 节点量较大或者后期自动扩容时非常有用。
      Master apiserver 启用 TLS 认证后,node 节点 kubelet 组件想要加入集群,必须使用CA签发的有效证书才能与 apiserver 通信,当 node 节点很多时,签署证书是一件很繁琐的事情。因此 Kubernetes 引入了 TLS bootstraping 机制来自动颁发客户端证书,kubelet 会以一个低权限用户自动向 apiserver 申请证书,kubelet 的证书由 apiserver 动态签署。
    • kubelet 首次启动通过加载 bootstrap.kubeconfig 中的用户 Token 和 apiserver CA 证书发起首次 CSR 请求,这个 Token 被预先内置在 apiserver 节点的 token.csv 中,其身份为 kubelet-bootstrap 用户和 system:kubelet-bootstrap 用户组;想要首次 CSR 请求能成功(即不会被 apiserver 401 拒绝),则需要先创建一个 ClusterRoleBinding,将 kubelet-bootstrap 用户和 system:node-bootstrapper 内置 ClusterRole 绑定(通过 kubectl get clusterroles 可查询),使其能够发起 CSR 认证请求。
    • TLS bootstrapping 时的证书实际是由 kube-controller-manager 组件来签署的,也就是说证书有效期是 kube-controller-manager 组件控制的;kube-controller-manager 组件提供了一个 --experimental-cluster-signing-duration 参数来设置签署的证书有效时间;默认为 8760h0m0s,将其改为 87600h0m0s,即 10 年后再进行 TLS bootstrapping 签署证书即可。
    • 也就是说 kubelet 首次访问 API Server 时,是使用 token 做认证,通过后,Controller Manager 会为 kubelet 生成一个证书,以后的访问都是用证书做认证了。

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在 node01 节点上操作

    #启动 kubelet 服务
    cd /opt/
    ./kubelet.sh 192.168.80.11
    ps aux | grep kubelet
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    在 master01 节点上操作,通过 CSR 请求

    #检查到 node01 节点的 kubelet 发起的 CSR 请求,Pending 表示等待集群给该节点签发证书
    kubectl get csr
    NAME                                                   AGE  SIGNERNAME                                    REQUESTOR           CONDITION
    node-csr-duiobEzQ0R93HsULoS9NT9JaQylMmid_nBF3Ei3NtFE   12s  kubernetes.io/kube-apiserver-client-kubelet   kubelet-bootstrap   Pending
    
    #通过 CSR 请求
    kubectl certificate approve node-csr-duiobEzQ0R93HsULoS9NT9JaQylMmid_nBF3Ei3NtFE
    
    #Approved,Issued 表示已授权 CSR 请求并签发证书
    kubectl get csr
    NAME                                                   AGE  SIGNERNAME                                    REQUESTOR           CONDITION
    node-csr-duiobEzQ0R93HsULoS9NT9JaQylMmid_nBF3Ei3NtFE   2m5s kubernetes.io/kube-apiserver-client-kubelet   kubelet-bootstrap   Approved,Issued
    
    #查看节点,由于网络插件还没有部署,节点会没有准备就绪 NotReady
    kubectl get node
    NAME            STATUS     ROLES    AGE    VERSION
    192.168.80.11   NotReady   <none>   108s   v1.20.11
    
    #master自动发现node节点
    kubectl create clusterrolebinding node-autoapprove-bootstrap --clusterrole=system:certificates.k8s.io:certificatesigningrequests:nodeclient --user=kubelet-bootstrap 
    
    kubectl create clusterrolebinding node-autoapprove-certificate-rotation --clusterrole=system:certificates.k8s.io:certificatesigningrequests:selfnodeclient --user=kubelet-bootstrap
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    在这里插入图片描述
    在这里插入图片描述

    在 node01 节点上操作

    #加载 ip_vs 模块
    for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done
    
    #启动proxy服务
    cd /opt/
    ./proxy.sh 192.168.80.11
    ps aux | grep kube-proxy
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

  • 相关阅读:
    适合弱电行业用的项目管理系统,找企智汇项目管理系统!
    MySQL(存储过程,store procedure)——存储过程的前世今生 & MySQL存储过程体验 & MybatisPlus中使用存储过程
    什么是智能合约安全审计
    防御第六次作业-防火墙综合实验(av、url过滤、dns过滤)
    断言,类型守卫,联合声明
    【kali-信息收集】(1.6)服务的指纹识别:Nmap、Amap
    pthead 亲和性设置详解 pthread_attr_setaffinity_np pthread_setaffinity_np
    使用 github 的 Action 功能实现 Microsoft office E5 订阅自动续订
    C陷阱与缺陷 第6章 预处理器 6.3 宏并不是语句
    【必看】自动化测试:selenium(环境部署和元素定位)
  • 原文地址:https://blog.csdn.net/wang_dian1/article/details/132064531