• kubeadm 安装k8s


    目录

    安装k8s

    环境准备

    所有节点,关闭防火墙规则,关闭selinux,关闭swap交换(必须关闭swap分区)

     //修改主机名

     //所有节点修改hosts文件

     //调整内核参数

    所有节点安装docker 

    所有节点安装kubeadm,kubelet和kubectl

    定义kubernetes源

    开机自启kubelet

    部署K8S集群

    查看初始化需要的镜像

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

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

     方法二初始化后需要修改 kube-proxy 的 configmap,开启 ipvs

    //设定kubectl 

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

    部署网络插件flannel

    创建 pod 资源

    部署 Dashboard

    安装Harbor私有仓库

     kubeadm内核参数优化方案


    安装k8s

    1. master(2C/4G/cpu核心数要求大于2192.168.158.20 docker、kubeadm、kubelet、kubectl、flannel
    2. node012C/2G) 192.168.158.21 docker、kubeadm、kubelet、kubectl、flannel
    3. node022C/2G) 192.168.158.22 docker、kubeadm、kubelet、kubectl、flannel
    4. Harbor节点(hub.kgc.com) 192.168.158.23 docker、docker-compose、harbor-offline-v1.2.2

    1、在所有节点上安装Docker和kubeadm
    2、部署Kubernetes Master
    3、部署容器网络插件
    4、部署 Kubernetes Node,将节点加入Kubernetes集群中
    5、部署 Dashboard Web 页面,可视化查看Kubernetes资源
    6、部署 Harbor 私有仓库,存放镜像资源

    环境准备

    master、node01、node02操作

    所有节点,关闭防火墙规则,关闭selinux,关闭swap交换(必须关闭swap分区)

    1. systemctl stop firewalld
    2. systemctl disable firewalld
    3. setenforce 0
    4. sed -i 's/enforcing/disabled/' /etc/selinux/config
    5. iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
    6. swapoff -a #交换分区必须要关闭
    7. sed -ri 's/.*swap.*/#&/' /etc/fstab #永久关闭swap分区,&符号在sed命令中代表上次匹配的结果
    8. #加载 ip_vs 模块
    9. 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

     //修改主机名

    1. hostnamectl set-hostname master01
    2. hostnamectl set-hostname node01
    3. hostnamectl set-hostname node02

     //所有节点修改hosts文件

    1. vim /etc/hosts
    2. 192.168.158.20 master01
    3. 192.168.158.21 node01
    4. 192.168.158.22 node02

     //调整内核参数

    1. cat > /etc/sysctl.d/kubernetes.conf << EOF
    2. #开启网桥模式,可将网桥的流量传递给iptables链
    3. net.bridge.bridge-nf-call-ip6tables=1
    4. net.bridge.bridge-nf-call-iptables=1
    5. #关闭ipv6协议
    6. net.ipv6.conf.all.disable_ipv6=1
    7. net.ipv4.ip_forward=1
    8. EOF

    所有节点安装docker 

    1. yum install -y yum-utils device-mapper-persistent-data lvm2
    2. yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    3. yum install -y docker-ce docker-ce-cli containerd.io

    1. #使用Systemd管理的Cgroup来进行资源控制与管理,因为相对Cgroupfs而言,Systemd限制CPU、内存等资源更加简单和成熟稳定。
    2. #日志使用json-file格式类型存储,大小为100M,保存在/var/log/containers目录下,方便ELK等日志系统收集和管理日志。
    3. mkdir /etc/docker
    4. cat > /etc/docker/daemon.json <<EOF
    5. {
    6. "registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"],
    7. "exec-opts": ["native.cgroupdriver=systemd"],
    8. "log-driver": "json-file",
    9. "log-opts": {
    10. "max-size": "100m"
    11. }
    12. }
    13. EOF

    #使用Systemd管理的Cgroup来进行资源控制与管理,因为相对Cgroupfs而言,Systemd限制CPU、内存等资源更加简单和成熟稳定。
    #日志使用json-file格式类型存储,大小为100M,保存在/var/log/containers目录下,方便ELK等日志系统收集和管理日志。

    1. systemctl daemon-reload
    2. systemctl restart docker.service
    3. systemctl enable docker.service
    4. docker info | grep "Cgroup Driver"
    5. Cgroup Driver: systemd

    所有节点安装kubeadm,kubelet和kubectl

    定义kubernetes源

    1. cat > /etc/yum.repos.d/kubernetes.repo << EOF
    2. [kubernetes]
    3. name=Kubernetes
    4. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    5. enabled=1
    6. gpgcheck=0
    7. repo_gpgcheck=0
    8. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    9. EOF

    yum install -y kubelet-1.20.11 kubeadm-1.20.11 kubectl-1.20.11
    

    开机自启kubelet

    1. #开机自启kubelet
    2. systemctl enable kubelet.service
    3. #K8S通过kubeadm安装出来以后都是以Pod方式存在,即底层是以容器方式运行,所以kubelet必须设置开机自启

    部署K8S集群

    查看初始化需要的镜像

    kubeadm config images list

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

    1. unzip v1.20.11.zip -d /opt/k8s
    2. cd /opt/k8s/v1.20.11
    3. for i in $(ls *.tar); do docker load -i $i; done

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

    1. scp -r /opt/k8s root@node01:/opt
    2. scp -r /opt/k8s root@node02:/opt

     node01节点上操作

    1. cd /opt/k8s/v1.20.11
    2. for i in $(ls *.tar); do docker load -i $i; done

     node02节点上操作

    1. cd /opt/k8s/v1.20.11
    2. for i in $(ls *.tar); do docker load -i $i; done

     master 节点上操作此处选用方法二的命令

    1. //初始化kubeadm
    2. 方法一:
    3. kubeadm config print init-defaults > /opt/kubeadm-config.yaml
    4. cd /opt/
    5. vim kubeadm-config.yaml
    6. ......
    7. 11 localAPIEndpoint:
    8. 12 advertiseAddress: 192.168.10.19 #指定master节点的IP地址
    9. 13 bindPort: 6443
    10. ......
    11. 34 kubernetesVersion: v1.20.11 #指定kubernetes版本号
    12. 35 networking:
    13. 36 dnsDomain: cluster.local
    14. 37 podSubnet: "10.244.0.0/16" #指定pod网段,10.244.0.0/16用于匹配flannel默认网段
    15. 38 serviceSubnet: 10.96.0.0/16 #指定service网段
    16. 39 scheduler: {}
    17. #末尾再添加以下内容
    18. ---
    19. apiVersion: kubeproxy.config.k8s.io/v1alpha1
    20. kind: KubeProxyConfiguration
    21. mode: ipvs #把默认的kube-proxy调度方式改为ipvs模式
    22. kubeadm init --config=kubeadm-config.yaml --upload-certs | tee kubeadm-init.log
    23. #--experimental-upload-certs 参数可以在后续执行加入节点时自动分发证书文件,K8S V1.16版本开始替换为 --upload-certs
    24. #tee kubeadm-init.log 用以输出日志
    25. //查看 kubeadm-init 日志
    26. less kubeadm-init.log
    27. //kubernetes配置文件目录
    28. ls /etc/kubernetes/
    29. //存放ca等证书和密码的目录
    30. ls /etc/kubernetes/pki
    1. 我使用方法二
    2. 方法二:
    3. kubeadm init \
    4. --apiserver-advertise-address=192.168.10.19 \
    5. --image-repository registry.aliyuncs.com/google_containers \
    6. --kubernetes-version=v1.20.11 \
    7. --service-cidr=10.96.0.0/16 \
    8. --pod-network-cidr=10.244.0.0/16 \
    9. --token-ttl=0

    初始化集群需使用kubeadm init命令,可以指定具体参数初始化,也可以指定配置文件初始化。
    可选参数:
    --apiserver-advertise-address:apiserver通告给其他组件的IP地址,一般应该为Master节点的用于集群内部通信的IP地址,0.0.0.0表示节点上所有可用地址
    --apiserver-bind-port:apiserver的监听端口,默认是6443
    --cert-dir:通讯的ssl证书文件,默认/etc/kubernetes/pki
    --control-plane-endpoint:控制台平面的共享终端,可以是负载均衡的ip地址或者dns域名,高可用集群时需要添加
    --image-repository:拉取镜像的镜像仓库,默认是k8s.gcr.io
    --kubernetes-version:指定kubernetes版本
    --pod-network-cidr:pod资源的网段,需与pod网络插件的值设置一致。Flannel网络插件的默认为10.244.0.0/16,Calico插件的默认值为192.168.0.0/16;
    --service-cidr:service资源的网段
    --service-dns-domain:service全域名的后缀,默认是cluster.local
    --token-ttl:默认token的有效期为24小时,如果不想过期,可以加上 --token-ttl=0 这个参数 

     方法二初始化后需要修改 kube-proxy 的 configmap,开启 ipvs

    1. echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
    2. source ~/.bash_profile
    3. kubectl edit cm kube-proxy -n=kube-system
    4. 修改mode: ipvs

    //设定kubectl 

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

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

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

    1. vim /etc/kubernetes/manifests/kube-scheduler.yaml
    2. vim /etc/kubernetes/manifests/kube-controller-manager.yaml
    3. # 修改如下内容
    4. 把--bind-address=127.0.0.1变成--bind-address=192.168.10.19 #修改成k8s的控制节点master01的ip
    5. 把httpGet:字段下的hosts由127.0.0.1变成192.168.10.19(有两处)
    6. #- --port=0 # 搜索port=0,把这一行注释掉
    7. systemctl restart kubelet
    8. systemctl enable kubelet

    1. #再次查看健康状态
    2. kubectl get cs

    部署网络插件flannel

    node01操作

    1. 方法一此文使用的是此方法:
    2. #所有节点上传flannel镜像 flannel.tar 到 /opt 目录,master节点上传 kube-flannel.yml 文件
    3. cd /opt
    4. scp kuadmin-flannel.zip node02:/opt/
    5. #解压
    6. unzip kuadmin-flannel.zip
    7. #加载
    8. docker load -i flannel-cni-v1.2.0.tar
    9. docker load -i flannel-v0.22.2.tar
    10. #创建并解压到相关目录
    11. mv cni cni_bak
    12. mkdir cni/bin -p
    13. tar zxvf cni-plugins-linux-amd64-v1.2.0.tgz -C cni/bin
    14. #查看新的文件
    15. ll cni/bin/

    node02操作

    1. cd /opt
    2. unzip kuadmin-flannel.zip
    3. docker load -i flannel-cni-v1.2.0.tar
    4. docker load -i flannel-v0.22.2.tar
    5. mv cni cni_bak
    6. mkdir cni/bin -p
    7. tar zxvf cni-plugins-linux-amd64-v1.2.0.tgz -C cni/bin
    8. #查看新的文件
    9. ll cni/bin/

    scp kube-flannel.yml master01:/opt/
    

    node01和node02节点操作

    1. #执行 kubeadm join 命令加入群集
    2. #复制master中执行过这个命令的kubeadm init \在node节点操作
    3. kubeadm join 192.168.198.11:6443 --token 41u9qh.bku8bq9t8ibxejxs \
    4. --discovery-token-ca-cert-hash sha256:0f128acf6bec78b03810ea3f6cb5c0bb10da0adeb2bc8a1dcffe385a12bb3293

    在master节点操作

    1. #在master节点查看节点状态
    2. kubectl get nodes
    3. #在 master 节点创建 flannel 资源
    4. kubectl apply -f kube-flannel.yml
    5. #再次查看节点状态
    6. kubectl get nodes

    1. kubectl get pods -n kube-system
    2. kubectl get pods -n kube-flannel

    如执行kubectl get pods -n kube-flannel发现有不是running或者查看节点状态 kubectl get
    nodes出现NoReady

    解决方法:查看所有的机器防火墙等是否关闭

    执行:

    删除再次生成

    kubectl delete -f kube-flannel.yml

    kubectl apply -f kube-flannel.yml

    执行后需等待可再次查看状态

    kubectl get pods -n kube-flannel

    创建 pod 资源

    在master节点操作

    1. #创建 pod 资源创建
    2. kubectl create deployment nginx --image=nginx
    3. #查看创建的资源,需等待
    4. kubectl get pods -o wide

    1. #暴露端口提供服务
    2. kubectl expose deployment nginx --port=80 --type=NodePort
    1. kubectl get svc
    2. 或kubectl get service

    1. #测试访问
    2. curl http://node01:32404
    3. 注意此处的端口是kubectl get svc执行出来的nginx端口
    4. http://192.168.198.12:31128/

    1. #扩展pod副本(3个)
    2. kubectl scale deployment nginx --replicas=3
    3. #刷新查看pod,需等待查看
    4. kubectl get pods -o wide

    部署 Dashboard

    master01 节点上操作

    1. #上传dashboard.tar到opt下
    2. scp dashboard.tar node01:/opt
    3. scp dashboard.tar node02:/opt

    node节点上操作

    1. #加载
    2. docker load -i dashboard.tar

    master01 节点上操作

    1. #在 master01 节点上操作
    2. #上传 recommended.yaml 文件到 /opt/k8s 目录中
    3. cd /opt/k8s
    4. vim recommended.yaml
    5. #默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部:
    6. kind: Service
    7. apiVersion: v1
    8. metadata:
    9. labels:
    10. k8s-app: kubernetes-dashboard
    11. name: kubernetes-dashboard
    12. namespace: kubernetes-dashboard
    13. spec:
    14. ports:
    15. - port: 443
    16. targetPort: 8443
    17. nodePort: 30001
    18. type: NodePort
    19. selector:
    20. k8s-app: kubernetes-dashboard
    1. #启动
    2. kubectl apply -f recommended.yaml
    3. #
    1. #创建service account并绑定默认cluster-admin管理员集群角色
    2. kubectl create serviceaccount dashboard-admin -n kube-system
    3. kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
    4. kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
    5. token: eyJhbGciOiJSUzI1NiIsImtpZCI6InZuekF5cFVGVHpjc24xRm05Q2x4aGp0UmRUdGlqMUxSZHVoyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYnBna2MiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvY3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiOTBhYTExYWEtMDRkMy00MTFmMzMyMTQ0Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbnU4g-OFJStZDxjQiicaUh8Ef947W7zuRYWzHXQX7gfQZN75CGhXOGtbzIEbF_UuIjAueb1FV9F3T34aEY3aOLiQ1HD0HMImjkvxHUyNOMFAjShRrSHKQtVkcrBIKtSdSFag5yn3Y4d7H4KVHMGn9Aw26JYCqBgcWeBrm8ebEHFY8LaiqXtJXUcYB23M5rQV4OVHcuPYYfg_iiL7_24Z7HOKGiGTBdbaSQNwJEBJQX-2K6aoZOwe73LATR1WxEigyALoFS7Bf2fLy3FWAAQmj3Bu3kw
    6. #查看创建的所有即有创建的用户dashboard-admin
    7. kubectl -n kube-system get sa

    1. #使用输出的token登录Dashboard
    2. #此处是nodeIP地址
    3. https://192.168.198.12:30001

    空敲this is unsafe (不用空格),回车即可

    选择token输入查到的token登录即可

    安装Harbor私有仓库

    Harbor节点上操作

    1. #修改主机名
    2. hostnamectl set-hostname hub.blue.com
    3. bash
    4. #关闭防火墙规则,关闭selinux,关闭swap交换
    5. systemctl stop firewalld
    6. systemctl disable firewalld
    7. setenforce 0

    所有节点上操作

    1. #所有节点加上主机名映射
    2. echo '192.168.198.14 hub.blue.com' >> /etc/hosts

    Harbor节点上操作

    1. #安装 docker
    2. yum install -y yum-utils device-mapper-persistent-data lvm2
    3. yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    4. yum install -y docker-ce docker-ce-cli containerd.io
    5. mkdir /etc/docker
    6. cat > /etc/docker/daemon.json <<EOF
    7. {
    8. "registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"],
    9. "exec-opts": ["native.cgroupdriver=systemd"],
    10. "log-driver": "json-file",
    11. "log-opts": {
    12. "max-size": "100m"
    13. },
    14. "insecure-registries": ["https://hub.blue.com"]
    15. }
    16. EOF
    1. systemctl start docker
    2. systemctl enable docker

    Harbor节点上操作

    1. #安装 Harbor
    2. #上传 harbor-offline-installer-v1.2.2.tgz 和 docker-compose 文件到 /opt 目录
    3. cd /opt
    4. cp docker-compose /usr/local/bin/
    5. chmod +x /usr/local/bin/docker-compose
    6. tar zxvf harbor-offline-installer-v1.2.2.tgz
    7. cd harbor/
    8. vim harbor.cfg
    9. 5 hostname = hub.blue.com
    10. 9 ui_url_protocol = https
    11. 24 ssl_cert = /data/cert/server.crt
    12. 25 ssl_cert_key = /data/cert/server.key
    13. 59 harbor_admin_password = Harbor12345

    1. #生成证书
    2. mkdir -p /data/cert
    3. cd /data/cert
    4. #生成私钥,2048密码长度数值
    5. openssl genrsa -des3 -out server.key 2048
    6. 输入两遍密码:123456
    7. #生成证书签名请求文件
    8. openssl req -new -key server.key -out server.csr
    9. 输入私钥密码:123456
    10. 输入国家名:CN
    11. 输入省名:NJ
    12. 输入市名:NJ
    13. 输入组织名:BLUE
    14. 输入机构名:BLUE
    15. 输入域名:hub.blue.com
    16. 输入管理员邮箱:admin@blue.com
    17. 其它全部直接回车
    1. #备份私钥
    2. cp server.key server.key.org
    1. #清除私钥密码
    2. openssl rsa -in server.key.org -out server.key
    3. 输入私钥密码:123456
    1. #签名证书,x509证书认证格式,-signkey迁移到server.key
    2. openssl x509 -req -days 1000 -in server.csr -signkey server.key -out server.crt
    3. ls
    4. chmod +x /data/cert/*

    1. cd /opt/harbor/
    2. ./install.sh
    3. docker-compose ps

    1. 在本地使用火狐浏览器访问:https://hub.blue.com
    2. 添加例外 -> 确认安全例外
    3. 用户名:admin
    4. 密码:Harbor12345

    node02节点上操作

    1. #在一个node节点上登录harbor
    2. docker login -u admin -p Harbor12345 https://hub.blue.com

    报错:

    docker login -u admin -p Harbor12345 https://hub.blue.com
    WARNING! Using --password via the CLI is insecure. Use --password-stdin.
    Error response from daemon: Get “https://hub.blue.com/v2/”: tls: failed to verify certificate: x509: certificate relies on legacy Common Name field, use SANs instead

    证书验证失败的问题。这可能是由于 Harbor 的 SSL 证书未正确配置,导致 Docker 无法验证证书的有效性。

    考虑更新 Harbor 的 SSL 证书,确保证书中的 Subject Alternative Names (SANs) 字段正确配置,并包含正确的登录地址和其他必要信息。获取有效的 SSL 证书

    (1)从新获取证书验证

    (2)重新部署Harbor服务器,注意添加node主机、harbor主机名映射

    (3)node 节点都修改 docker 配置文件结束后需要重启

    systemctl daemon-reload
    systemctl restart docker

    1. #上传镜像
    2. #Docker 镜像重命名
    3. docker tag nginx:latest hub.blue.com/library/nginx:v1
    4. docker push hub.blue.com/library/nginx:v1

    master01节点上操作

    1. #在master节点上删除之前创建的nginx资源
    2. kubectl get pods
    3. kubectl delete deployment nginx
    4. kubectl create deployment nginx-deployment --image=hub.blue.com/library/nginx:v1 --port=80 --replicas=3
    5. kubectl expose deployment nginx-deployment --port=30000 --target-port=80
    6. kubectl get svc,pods
    7. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    8. service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 16h
    9. service/nginx NodePort 10.96.213.1 <none> 80:31128/TCP 15h
    10. service/nginx-deployment ClusterIP 10.96.165.162 <none> 30000/TCP 7s
    11. NAME READY STATUS RESTARTS AGE
    12. pod/nginx-deployment-6cff9b4c45-l892b 1/1 Running 0 23s
    13. pod/nginx-deployment-6cff9b4c45-qjc87 1/1 Running 0 23s
    14. pod/nginx-deployment-6cff9b4c45-tcwjx 1/1 Running 0 23s

    1. yum install ipvsadm -y
    2. ipvsadm -Ln

    node节点操作

    curl 10.96.165.162:30000
    

     master01节点操作,对外访问

    1. kubectl edit svc nginx-deployment
    2. #把调度策略改成NodePort,26行
    3. type: NodePort
    1. kubectl get svc
    2. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    3. kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 16h
    4. nginx NodePort 10.96.213.1 <none> 80:31128/TCP 15h
    5. nginx-deployment NodePort 10.96.165.162 <none> 30000:31231/TCP 4m8s
    1. 浏览器访问:
    2. 192.168.198.11:31231
    3. 192.168.198.12:31231
    4. 192.168.198.13:31231

    1. #将cluster-admin角色权限授予用户system:anonymous,设置用户的管理员权限
    2. kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous

     kubeadm内核参数优化方案

    1. cat > /etc/sysctl.d/kubernetes.conf <<EOF
    2. net.bridge.bridge-nf-call-iptables=1
    3. net.bridge.bridge-nf-call-ip6tables=1
    4. net.ipv4.ip_forward=1
    5. net.ipv4.tcp_tw_recycle=0
    6. vm.swappiness=0 #禁止使用 swap 空间,只有当系统内存不足(OOM)时才允许使用它
    7. vm.overcommit_memory=1 #不检查物理内存是否够用
    8. vm.panic_on_oom=0 #开启 OOM
    9. fs.inotify.max_user_instances=8192
    10. fs.inotify.max_user_watches=1048576
    11. fs.file-max=52706963 #指定最大文件句柄数
    12. fs.nr_open=52706963 #仅4.4以上版本支持
    13. net.ipv6.conf.all.disable_ipv6=1
    14. net.netfilter.nf_conntrack_max=2310720
    15. EOF

  • 相关阅读:
    Java8新特性之stream、map和reduce
    机器学习和深度学习领域的算法和模型
    m基于GA遗传优化+SA模拟退火的混合改进算法的多产品多机器生产优化matlab仿真
    运放供电设计
    SpringBoot+Vue+ElementUI实现文件上传
    使用动态住宅代理还能带来哪些好处?
    【mcuclub】数据存储AT24C02
    【前端】搭建 Vite + P5.js 项目
    研发笔记——localstorage实现tabel表格表头自定义
    文件系统(三):嵌入式、计算机系统启动流程与步骤
  • 原文地址:https://blog.csdn.net/m0_71493671/article/details/132713992