【kubernetes】集群的 kubeadm 安装及 部署 harbor 仓库

目录

一、环境部署 

二、部署K8S集群

1、所有节点设备安装docker

2、所有节点安装kubeadm,kubelet和kubectl

3、查看初始化镜像并执行脚本加载镜像文件

4、初始化 kubeadm

4.1、方法一(yaml配置文件完成初始化)

5、设定 kubectl

6、设定 集群健康

7、所有节点部署网络插件 flannel

8、node 节点 加入集群

9、在 master 节点查看节点状态

10、测试

10.1、测试 pod 资源创建

10.2、暴露端口提供服务

10.3、浏览器测试访问

10.4、扩展为3个副本

三、部署 Dashboard

1、什么是 Dashboard

2、安装 Dashboard

3、使用输出的token登录Dashboard

四、部署 Harbor 私有仓库

1、安装docker

 2、所有 node 节点都修改 docker 配置文件,加上私有仓库配置

3、安装 Harbor

3.1、安装 docker-compose

3.2、修改 harbor 配置文件

3.3、生成证书和私钥文件

3.4、安装 harbor

4、 在本地使用浏览器访问

5、 在一个node节点上登录harbor并上传镜

6、创建三个 nginx pod

7、对内访问

8、对外访问

五、内核参数优化方案


一、环境部署 

服务器主机名IP地址主要软件
master 节点master01172.16.88.77docker、kubeadm、kubelet、kubectl、flannel
node01 节点node01172.16.88.88docker、kubeadm、kubelet、kubectl、flannel
node02 节点node02172.16.88.99docker、kubeadm、kubelet、kubectl、flannel
harbor 节点hub.dh.com172.16.12.15docker、docker-compose、harbor-offline-v1.2.2

(1)所有设备关闭防火墙,清空iptables规则

systemctl disable --now firewalld
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

 (2)所有设备关闭selinux

setenforce 0    #临时关闭
sed -i 's/enforcing/disabled/' /etc/selinux/config   #永久关闭

(3)所有设备关闭swap

swapoff -a    #临时关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab    #永久关闭

(4)修改所有设备的主机名

[root@localhost ~]#hostnamectl set-hostname master
[root@localhost ~]#bash
 
[root@localhost ~]#hostnamectl set-hostname node01
[root@localhost ~]#bash
 
[root@localhost ~]#hostnamectl set-hostname node02
[root@localhost ~]#bash
 
[root@localhost ~]#hostnamectl set-hostname hub.dh.com
[root@localhost ~]#bash

(5) 所有设备修改本地的hosts文件

cat >> /etc/hosts << EOF
172.16.88.77 master
172.16.88.88 node01
172.16.88.99 node02
172.16.88.66 hub.dh.com
EOF

(7)所有设备调整内核参数

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     #重新加载系统的配置参数

 (8)所有设备加载 ip_vs 模块

#加载 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

(9)所有设备实现时间同步

yum install ntpdate -y
ntpdate time.windows.com

大概步骤:

① 在所有节点上安装Docker和kubeadm

② 部署Kubernetes Master
③ 部署容器网络插件
④ 部署 Kubernetes Node,将节点加入Kubernetes集群中
⑤ 部署 Dashboard Web 页面,可视化查看Kubernetes资源
⑥ 部署 Harbor 私有仓库,存放镜像资源

二、部署K8S集群

1、所有节点设备安装docker

master、node01、node02 节点上都需要以下操作

#安装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
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"],   #使用自己的阿里云镜像加速器
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  }
}
EOF

systemctl daemon-reload             #重新加载systemd服务
systemctl restart docker.service    #重启docker服务
systemctl enable docker.service     #开机自启docker服务
 
docker info | grep "Cgroup Driver"     #过滤得到"Cgroup Driver"详细信息
#使用Systemd管理的Cgroup来进行资源控制与管理,因为相对Cgroupfs而言,Systemd限制CPU、内存等资源更加简单和成熟稳定
#日志使用json-file格式类型存储,大小为100M,保存在/var/log/containers目录下,方便ELK等日志系统收集和管理日志

2、所有节点安装kubeadm,kubelet和kubectl

master、node01、node02 节点上都需要以下操作

#定义kubernetes源
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 https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
#安装kubeadm,kubelet和kubectl
yum install -y kubelet-1.20.11 kubeadm-1.20.11 kubectl-1.20.11
#开机自启kubelet
systemctl enable kubelet.service
#K8S通过kubeadm安装出来以后都是以Pod方式存在,即底层是以容器方式运行,所以kubelet必须设置开机自启

3、查看初始化镜像并执行脚本加载镜像文件

(1)查看初始化需要的镜像

[root@master ~]#kubeadm config images list

(2)在 master 节点上传 v1.20.11.zip 压缩包至 /opt 目录

[root@master ~]#unzip v1.20.11.zip -d /opt/k8s
[root@master ~]#cd /opt/k8s/v1.20.11
#循环遍历当前目录下所有以 ".tar" 结尾的文件,并将它们作为镜像加载到 Docker 中
[root@master v1.20.11]#for i in $(ls *.tar); do docker load -i $i; done
#for i in $(ls *.tar); 对当前目录下所有以 ".tar" 结尾的文件执行循环操作
#do docker load -i $i; 对每个符合条件的文件执行 docker load 命令,从文件中加载镜像到 Docker 引擎中

(3)复制镜像和脚本到 node 节点,并在 node 节点上执行脚本加载镜像文件

[root@master ~]#scp -r /opt/k8s root@node01:/opt
[root@master ~]#scp -r /opt/k8s root@node02:/opt

#在 node01 节点上执行脚本加载镜像文件
[root@node01 ~]#cd /opt/k8s/v1.20.11/
[root@node01 v1.20.11]#for i in $(ls *.tar); do docker load -i $i; done
 
#在 node02 节点上执行脚本加载镜像文件
[root@node02 ~]#cd /opt/k8s/v1.20.11/
[root@node02 v1.20.11]#for i in $(ls *.tar); do docker load -i $i; done

4、初始化 kubeadm

在 master 节点上完成初始化 kubeadm

4.1、方法一(yaml配置文件完成初始化)

#将 kubeadm 工具的初始化默认配置输出到指定的文件 /opt/kubeadm-config.yaml 中
[root@master ~]#kubeadm config print init-defaults > /opt/kubeadm-config.yaml
#kubeadm config print init-defaults  运行 kubeadm 命令来打印初始化集群时的默认配置。
#>  将命令的标准输出重定向到文件。
#/opt/kubeadm-config.yaml  指定输出的文件路径为 /opt/kubeadm-config.yaml,即将默认配置写入该文件中。
[root@master ~]#cd /opt/
[root@master opt]#vim kubeadm-config.yaml
……
localAPIEndpoint:
  advertiseAddress: 172.16.88.77         #第12行,指定master节点的IP地址
  bindPort: 6443
……
kubernetesVersion: v1.20.11				 #第34行,指定kubernetes版本号
networking:
  dnsDomain: cluster.local
  podSubnet: "10.244.0.0/16"	#第37行,指定pod网段,10.244.0.0/16用于匹配flannel默认网段
  serviceSubnet: 10.96.0.0/16		 #第38行,指定service网段
scheduler: {}
 
#末尾再添加以下内容
--- 
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs									#把默认的kube-proxy调度方式改为ipvs模式

#使用指定的配置文件来初始化 Kubernetes 集群,并在此过程中将输出保存到屏幕和日志文件中
[root@master opt]#kubeadm init --config=kubeadm-config.yaml --upload-certs | tee kubeadm-init.log
#kubeadm init  运行 kubeadm 工具来初始化一个 Kubernetes 集群
#--config=kubeadm-config.yaml  使用名为 kubeadm-config.yaml 的配置文件进行初始化
#--experimental-upload-certs 参数可以在后续执行加入节点时自动分发证书文件,K8S V1.16版本开始替换为 --upload-certs
#| tee kubeadm-init.log  将命令的标准输出同时输出到屏幕上并写入文件 kubeadm-init.log 中

#查看 kubeadm-init 日志
[root@master opt]#less kubeadm-init.log

#查看kubernetes配置文件目录
[root@master opt]#ls /etc/kubernetes/
 
#查看存放ca等证书和密码的目录
[root@master opt]#ls /etc/kubernetes/pki        

5、设定 kubectl

kubectl需经由API server认证及授权后方能执行相应的管理操作,kubeadm 部署的集群为其生成了一个具有管理员权限的认证配置文件 /etc/kubernetes/admin.conf,它可由 kubectl 通过默认的 “$HOME/.kube/config” 的路径进行加载

[root@master ~]#mkdir -p $HOME/.kube
[root@master ~]#cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
#将文件 $HOME/.kube/config 的所有权更改为当前用户及其用户组
[root@master ~]#chown $(id -u):$(id -g) $HOME/.kube/config
#$(id -u) 会返回当前用户的用户 ID,而 $(id -g) 会返回当前用户的用户组 ID

6、设定 集群健康

如果 kubectl get cs 发现集群不健康,需更改以下两个文件

[root@master ~]#vim /etc/kubernetes/manifests/kube-scheduler.yaml
# 修改如下内容
把--bind-address=127.0.0.1变成--bind-address=172.16.88.77  #修改成k8s的控制节点master01的ip
把httpGet:字段下的hosts由127.0.0.1变成172.16.88.77(有两处)
#- --port=0                    # 搜索port=0,把这一行注释掉
 
[root@master ~]#vim /etc/kubernetes/manifests/kube-controller-manager.yaml
# 修改如下内容
把--bind-address=127.0.0.1变成--bind-address=172.16.88.77  #修改成k8s的控制节点master01的ip
把httpGet:字段下的hosts由127.0.0.1变成172.16.88.77(有两处)
#- --port=0                    # 搜索port=0,把这一行注释掉
 
[root@master ~]#systemctl restart kubelet   #重启 kubelet 服务

 修改完两个配置文件,重启 kubelet 服务后,再次查看集群状态,就是Healthy

7、所有节点部署网络插件 flannel

master、node01、node02 节点上都需要以下操作

#所有节点上传flannel镜像 flannel.tar 到 /opt 目录,master节点上传 kube-flannel.yml 文件
[root@master ~]#cd /opt
[root@master opt]#unzip kuadmin.zip   #解压
 
#加载 Docker 镜像到 Docker 引擎中
[root@master opt]#docker load -i flannel-cni-v1.2.0.tar 
[root@master opt]#docker load -i flannel-v0.22.2.tar 

#核对 当前 docker 镜像库中的 flannel-cni-plugin和flannel 版本
[root@master opt]#grep image kube-flannel.yml
[root@master opt]#docker images

#在 master 节点创建 flannel 资源
[root@master opt]#kubectl apply -f kube-flannel.yml 

8、node 节点 加入集群

在 node 节点上执行 kubeadm join 命令加入群集

#在master节点上查看kubeadm join的命令
[root@master opt]#cat kubeadm-init.log


#在所有node节点上执行
kubeadm join 172.16.88.77:6443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:3e9ac19dadf7a7e6db09b9de8d3eca6be59346d137c83c3a6e322f6ea446b490

9、在 master 节点查看节点状态

#获取kubernetes集群中node节点信息
[root@master opt]#kubectl get nodes
 
#获取Kubernetes集群中kube-system命名空间下的所有Pods的信息
[root@master opt]#kubectl get pods -n kube-system

#获取位于kube-flannel命名空间中的所有Pods的信息
[root@master ~]#kubectl get pod -n kube-flannel
#获取位于kube-flannel命名空间中的所有Pods的详细信息
[root@master ~]#kubectl get pod -n kube-flannel -owide

10、测试

在 master 服务器上操作

10.1、测试 pod 资源创建

#在集群中创建一个名为"nginx"的部署,并使用Nginx镜像作为部署的容器
[root@master ~]#kubectl create deployment nginx --image=nginx
#获取当前命名空间中所有Pods的详细信息
[root@master ~]#kubectl get pods -o wide

10.2、暴露端口提供服务

#将名为"nginx"的部署创建为一个NodePort类型的服务,并将其暴露在集群的节点上,以便可以通过节点的IP地址和指定的端口访问该服务
[root@master ~]#kubectl expose deployment nginx --port=80 --type=NodePort
#获取当前命名空间中所有服务(Service)的信息
[root@master ~]#kubectl get svc

10.3、浏览器测试访问

http://node节点或master节点:30123  
即 http://172.16.88.88:31200 或 http://172.16.88.99:31200 或 http://172.16.88.77:31200

10.4、扩展为3个副本

#用于扩展名为 "nginx" 的 Deployment 实例的副本数量到 3
[root@master opt]#kubectl scale deployment nginx --replicas=3
[root@master opt]#kubectl get pods -o wide

三、部署 Dashboard

1、什么是 Dashboard

Dashboard(仪表板)是基于Web的Kubernetes用户界面

可以使用仪表板将容器化应用程序部署到Kubernetes集群,对容器化应用程序进行故障排除,并管理集群本身及其伴随资源

可以使用仪表板来概述群集上运行的应用程序,以及创建或修改单个Kubernetes资源(例如deployment,job,daemonset等)

例如,可以使用部署向导扩展部署,启动滚动更新,重新启动Pod或部署新应用程序。仪表板还提供有关群集中Kubernetes资源状态以及可能发生的任何错误的信息

2、安装 Dashboard

在 master01 节点上操作

#上传 recommended.yaml 文件到 /opt/k8s 目录中
[root@master ~]#cd /opt/k8s
 
#默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部
[root@master k8s]#vim recommended.yaml
……
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30001      #添加
  type: NodePort           #添加
  selector:
    k8s-app: kubernetes-dashboard
……
[root@master k8s]#kubectl apply -f recommended.yaml
#kubectl apply 命令用于创建或更新 Kubernetes 资源对象,-f 参数用于指定要应用的 YAML 文件

#创建 service account 并绑定默认 cluster-admin 管理员集群角色
[root@master k8s]#kubectl create serviceaccount dashboard-admin -n kube-system
[root@master k8s]#kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
 
#获取"kube-system"命名空间中所有Secrets的列表,包括它们的名称、类型等信息
#Secrets通常用于存储敏感数据,如API密钥、密码等
[root@master k8s]#kubectl get secret -n kube-system
 
#"kube-system"命名空间中与"dashboard-admin"相关的Secret的详细信息
[root@master k8s]#kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
#kubectl -n kube-system get secret:这部分命令用于获取"kube-system"命名空间中所有Secret的列表
# | awk '/dashboard-admin/{print \$1}':这部分命令使用awk来过滤出包含"dashboard-admin"的Secret,并输出它们的名称

3、使用输出的token登录Dashboard

浏览器访问:https://NodeIP:30001
 
https://172.16.88.88:30001
https://172.16.88.99:30001

四、部署 Harbor 私有仓库

1、安装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
[root@harbor ~]#mkdir /etc/docker
[root@harbor ~]#cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"], 
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "insecure-registries": ["https://hub.dh.com"]
}
EOF
 
[root@harbor ~]#systemctl start docker
[root@harbor ~]#systemctl enable docker

 2、所有 node 节点都修改 docker 配置文件,加上私有仓库配置

master、node01、node02 节点上都需要以下操作

#所有 node 节点都修改 docker 配置文件,加上私有仓库配置
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "insecure-registries": ["https://hub.dh.com"]
}
EOF
 
systemctl daemon-reload
systemctl restart docker

3、安装 Harbor

3.1、安装 docker-compose

#上传 docker-compose 文件到 /opt 目录
[root@harbor ~]#cd /opt
[root@harbor opt]#cp docker-compose /usr/local/bin/
[root@harbor opt]#chmod +x /usr/local/bin/docker-compose

3.2、修改 harbor 配置文件

#上传 harbor-offline-installer-v1.2.2.tgz 到 /opt 目录下
[root@harbor opt]#tar zxvf harbor-offline-installer-v1.2.2.tgz
[root@harbor opt]#cd harbor/
[root@harbor harbor]#vim harbor.cfg

3.3、生成证书和私钥文件

(1)生成私钥

#创建证书和密钥文件目录
[root@harbor ~]#mkdir -p /data/cert
[root@harbor ~]#cd /data/cert
 
#生成私钥
[root@harbor cert]#openssl genrsa -des3 -out server.key 2048
#输入两遍自定义密码,这里我输的是:123456

(2)生成证书签名请求文件

#生成证书签名请求文件
[root@harbor cert]#openssl req -new -key server.key -out server.csr
输入私钥密码:123456
输入国家名:CN
输入省名:BJ
输入市名:BJ
输入组织名:DH
输入机构名:DH
输入域名:hub.dh.com
输入管理员邮箱:admin@dh.com
其它全部直接回车

(3)备份私钥

#备份私钥
[root@harbor cert]#cp server.key server.key.org

(4) 清除私钥密码

#清除私钥密码
[root@harbor cert]#openssl rsa -in server.key.org -out server.key
输入私钥密码:123456

(5)签名证书

#签名证书
[root@harbor cert]#openssl x509 -req -days 1000 -in server.csr -signkey server.key -out server.crt
[root@harbor cert]#chmod +x /data/cert/*

3.4、安装 harbor

[root@harbor ~]#cd /opt/harbor/
[root@harbor harbor]#./install.sh

4、 在本地使用浏览器访问

Linux端:
#客户端配置本地的/etc/hosts文件
cat >> /etc/hosts << EOF
172.16.88.66 hub.dh.com
EOF
 
Windows端:
#修改本地的hosts文件,路径:C:\Windows\System32\drivers\hosts
172.16.88.66 hub.dh.com
客户端浏览器访问:https://hub.dh.com

5、 在一个node节点上登录harbor并上传镜

(1)登录 harbor 仓库

[root@node01 ~]#docker login -u admin -p Harbor12345 https://hub.dh.com

(2)上传镜像

#下载 nginx 镜像到本地docker中
[root@node01 ~]#docker pull nginx
#为该镜像添加新的标签
[root@node01 ~]#docker tag nginx:latest hub.dh.com/library/nginx:v1
#查看本地镜像
[root@node01 ~]#docker images
#上传至harbor仓库
[root@node01 ~]#docker push hub.dh.com/library/nginx:v1

6、创建三个 nginx pod

(1)先在master节点上删除之前创建的nginx资源

[root@master ~]#kubectl delete deployment nginx    #删除 nginx 资源
#获取当前命名空间中所有Pods的详细信息
[root@master ~]#kubectl get pods -o wide

(2)再使用 hub.dh.com/library/nginx:v1(harbor仓库中的镜像) 镜像创建三个nginx pod 

#在 Kubernetes 集群中创建一个名为 "nginx-deployment" 的部署,使用指定的镜像、端口和副本数量为3
[root@master ~]#kubectl create deployment nginx-deployment --image=hub.dh.com/library/nginx:v1 --port=80 --replicas=3
#将名为 "nginx-deployment" 的部署(deployment)暴露为一个 Kubernetes 服务(service)
[root@master ~]#kubectl expose deployment nginx-deployment --port=30000 --target-port=80
 
#获取当前命名空间中所有 Pods 和 service 的详细信息
[root@master ~]#kubectl get pod,svc -o wide

(3)安装 ipvs

[root@master ~]#yum install ipvsadm -y
[root@master ~]#ipvsadm -Ln

7、对内访问

k8s集群内部服务器可访问:

8、对外访问

[root@master ~]#kubectl edit svc nginx-deployment
type: NodePort             #第26行,把调度策略改成NodePort

#获取当前命名空间中所有服务(Service)的信息
[root@master ~]#kubectl get svc

浏览器访问:http://masterIP:32412 或 http://nodeIP:32412
 
如:172.16.88.77:30667、172.16.88.88:30667、172.16.88.99:30667

#将cluster-admin角色权限授予用户system:anonymous
kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous

五、内核参数优化方案

cat > /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1    
#用于开启 Linux 桥接模块对 iptables 的调用。这对于在 Kubernetes 集群中使用网络插件(如 Calico)时是必需的
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
#这将 IPv4 的数据包转发功能设置为启用状态。当 Linux 主机用作路由器或者网络网关时,这是必需的。
net.ipv4.tcp_tw_recycle=0
#这个参数用于控制 TIME-WAIT 状态的 TCP 连接是否可以被重用。设置为 0 表示禁用 TCP TIME-WAIT 快速回收机制
vm.swappiness=0					
#禁止使用 swap 空间,只有当系统内存不足(OOM)时才允许使用它
vm.overcommit_memory=1			
#不检查物理内存是否够用,这个参数用于控制内存过度分配策略。设置为 1 表示关闭内存过度分配检查
vm.panic_on_oom=0				
#开启 OOM,这个参数用于控制当系统发生内存耗尽(OOM)时是否立即崩溃。设置为 0 表示不启用 OOM 紧急崩溃
fs.inotify.max_user_instances=8192
#用于配置 inotify 子系统的最大实例数。inotify 用于监视文件系统事件
fs.inotify.max_user_watches=1048576
#用于配置 inotify 子系统的最大监视数。inotify 用于监视文件系统事件
fs.file-max=52706963			
#指定最大文件句柄数
fs.nr_open=52706963				
#仅4.4以上版本支持
net.ipv6.conf.all.disable_ipv6=1   
#这个参数用于禁用 IPv6
net.netfilter.nf_conntrack_max=2310720   
# 这个参数用于配置 netfilter 连接跟踪表的最大大小
EOF
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值