K8S:kubeadm搭建K8S+Harbor 私有仓库

文章目录

  • 一.部署规划
    • 1.主机规划
    • 2.部署流程
  • 二.kubeadm搭建K8S
    • 1.环境准备
    • 2.安装docker
    • 3. 安装kubeadm,kubelet和kubectl
    • 4.部署K8S集群
      • (1)初始化
      • (2)部署网络插件flannel
      • (3)创建 pod 资源
    • 5.部署 Dashboard
    • 6.安装Harbor私有仓库
    • 7.kubeadm内核参数优化方案

一.部署规划

1.主机规划

主机名及主机大小主机ip安装软件
master(2C/4G,cpu核心数要求大于2)192.168.198.11docker、kubeadm、kubelet、kubectl、flannel
node01(2C/2G)192.168.198.12docker、kubeadm、kubelet、kubectl、flannel
node02(2C/2G)192.168.198.13docker、kubeadm、kubelet、kubectl、flannel
Harbor节点(hub.blue.com)192.168.198.14docker、docker-compose、harbor-offline-v1.2.2

2.部署流程

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

相关安装包在资源的K8S:kubeadm搭建K8S+Harbor 私有仓库中

二.kubeadm搭建K8S

1.环境准备

master、node01、node02操作

#所有节点,关闭防火墙规则,关闭selinux,关闭swap交换
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
#交换分区必须要关闭
swapoff -a	
#永久关闭swap分区,&符号在sed命令中代表上次匹配的结果
sed -ri 's/.*swap.*/#&/' /etc/fstab		
#加载 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
#修改主机名
hostnamectl set-hostname master01
hostnamectl set-hostname node01
hostnamectl set-hostname node02bash
#所有节点修改hosts文件
vim /etc/hosts
192.168.198.11 master01
192.168.198.12 node01
192.168.198.13 node02
#调整内核参数
cat > /etc/sysctl.d/kubernetes.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  

2.安装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
#使用Systemd管理的Cgroup来进行资源控制与管理,因为相对Cgroupfs而言,Systemd限制CPU、内存等资源更加简单和成熟稳定。
#日志使用json-file格式类型存储,大小为100M,保存在/var/log/containers目录下,方便ELK等日志系统收集和管理日志。
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"}
}
EOF
systemctl daemon-reload
systemctl restart docker.service
systemctl enable docker.service 
docker info | grep "Cgroup Driver"
#返回值
Cgroup Driver: systemd

3. 安装kubeadm,kubelet和kubectl

所有节点

#定义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
yum install -y kubelet-1.20.11 kubeadm-1.20.11 kubectl-1.20.11
#开机自启kubelet
systemctl enable kubelet.service
#K8S通过kubeadm安装出来以后都是以Pod方式存在,即底层是以容器方式运行,所以kubelet必须设置开机自启

4.部署K8S集群

(1)初始化

所有节点

#查看初始化需要的镜像
kubeadm config images list

master 节点上操作

#在 master 节点上传 v1.20.11.zip 压缩包至 /opt 目录
cd /opt/
unzip v1.20.11.zip -d /opt/k8s
cd /opt/k8s/v1.20.11
for i in $(ls *.tar); do docker load -i $i; done
#复制镜像和脚本到 node 节点,并在 node 节点上执行脚本加载镜像文件
scp -r /opt/k8s root@node01:/opt
scp -r /opt/k8s root@node02:/opt

node01节点上操作

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

node02节点上操作

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

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

#初始化kubeadm,有两种方式方法二命令和方法一配置文件,此处选用方法二的命令
方法一:
kubeadm config print init-defaults > /opt/kubeadm-config.yamlcd /opt/
vim kubeadm-config.yaml
......
11 localAPIEndpoint:
12   advertiseAddress: 192.168.198.11		#指定master节点的IP地址
13   bindPort: 6443
......
34 kubernetesVersion: v1.20.11				#指定kubernetes版本号
35 networking:
36   dnsDomain: cluster.local
37   podSubnet: "10.244.0.0/16"				#指定pod网段,10.244.0.0/16用于匹配flannel默认网段
38   serviceSubnet: 10.96.0.0/16			#指定service网段
39 scheduler: {}#末尾再添加以下内容apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs									#把默认的kube-proxy调度方式改为ipvs模式
kubeadm init --config=kubeadm-config.yaml --upload-certs | tee kubeadm-init.log
#--experimental-upload-certs 参数可以在后续执行加入节点时自动分发证书文件,K8S V1.16版本开始替换为 --upload-certs
#tee kubeadm-init.log 用以输出日志#查看 kubeadm-init 日志
less kubeadm-init.log#kubernetes配置文件目录
ls /etc/kubernetes/#存放ca等证书和密码的目录
ls /etc/kubernetes/pki	

方法二:

方法二:
kubeadm init \
--apiserver-advertise-address=192.168.198.11 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.20.11 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16 \
--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=0:默认token的有效期为24小时,如果不想过期,可以加上 --token-ttl=0 这个参数

#方法二初始化后需要修改 kube-proxy 的 configmap,开启 ipvs
kubectl edit cm kube-proxy -n=kube-system#此处执行完会提示以下,则我们需要进一步操作设定
The connection to the server localhost:8080 was refused - did you specify the right host or port?
#设定kubectl,kubectl需经由API server认证及授权后方能执行相应的管理操作,kubeadm 部署的集群为其生成了一个具有管理员权限的认证配置文件 /etc/kubernetes/admin.conf,它可由 kubectl 通过默认的 “$HOME/.kube/config” 的路径进行加载。mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
#显示已存在
ll /root/.kube/
chown $(id -u):$(id -g) $HOME/.kube/config
#授权结束即可以查看生成的相关信息配置,查看后即退出
vim /root/.kube/config 
#再次初始化,就可看到相关信息,并修改第44行修改mode: "ipvs"
[root@master01 ~]# kubectl edit cm kube-proxy -n=kube-system[root@master01 ~]# kubectl get node
NAME       STATUS     ROLES                  AGE   VERSION
master01   NotReady   control-plane,master   49m   v1.20.11
[root@master01 ~]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS      MESSAGE                                                                                       ERROR
scheduler            Unhealthy   Get "http://127.0.0.1:10251/healthz": dial tcp 127.0.0.1:10251: connect: connection refused   
controller-manager   Unhealthy   Get "http://127.0.0.1:10252/healthz": dial tcp 127.0.0.1:10252: connect: connection refused   
etcd-0               Healthy     {"health":"true"}   
#如果 kubectl get cs 发现集群不健康,更改以下两个文件
vim /etc/kubernetes/manifests/kube-scheduler.yaml 
vim /etc/kubernetes/manifests/kube-controller-manager.yaml修改如下内容把--bind-address=127.0.0.1变成--bind-address=192.168.198.11		#行修改成k8s的控制节点master01的ip
把httpGet:字段下的hosts由127.0.0.1变成192.168.198.11(有两处)
#- --port=0					# 搜索port=0,把这一行注释掉
systemctl restart kubelet
systemctl enable kubelet
#再次查看健康状态
kubectl get cs

在这里插入图片描述

(2)部署网络插件flannel

node01操作

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

node02操作

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

scp kube-flannel.yml master01:/opt/

node01和node02节点操作

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在master节点操作

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

kubectl get pods -n kube-system
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

(3)创建 pod 资源

在master节点操作

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5.部署 Dashboard

master01 节点上操作

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

node节点上操作

#加载
docker load -i dashboard.tar 

master01 节点上操作

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

6.安装Harbor私有仓库

Harbor节点上操作

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

所有节点上操作

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

Harbor节点上操作

#安装 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.iomkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"insecure-registries": ["https://hub.blue.com"]
}
EOF
systemctl start docker
systemctl enable docker

node 节点上操作

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

Harbor节点上操作

#安装 Harbor
#上传 harbor-offline-installer-v1.2.2.tgz 和 docker-compose 文件到 /opt 目录
cd /opt
cp docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-composetar zxvf harbor-offline-installer-v1.2.2.tgz
cd harbor/
vim harbor.cfg
5  hostname = hub.blue.com
9  ui_url_protocol = https
24 ssl_cert = /data/cert/server.crt
25 ssl_cert_key = /data/cert/server.key
59 harbor_admin_password = Harbor12345
#生成证书
mkdir -p /data/cert
cd /data/cert
#生成私钥,2048密码长度数值
openssl genrsa -des3 -out server.key 2048
输入两遍密码:123456#生成证书签名请求文件
openssl req -new -key server.key -out server.csr
输入私钥密码:123456
输入国家名:CN
输入省名:NJ
输入市名:NJ
输入组织名:BLUE
输入机构名:BLUE
输入域名:hub.blue.com
输入管理员邮箱:admin@blue.com
其它全部直接回车
#备份私钥
cp server.key server.key.org
#清除私钥密码
openssl rsa -in server.key.org -out server.key
输入私钥密码:123456
#生产环境中会提供相应的证书,只需要将放置正确路径
#签名证书,x509证书认证格式,-signkey迁移到server.key
openssl x509 -req -days 1000 -in server.csr -signkey server.key -out server.crtls
chmod +x /data/cert/*

在这里插入图片描述

cd /opt/harbor/
./install.sh
docker-compose ps

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
node02节点上操作

#在一个node节点上登录harbor
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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

master01节点上操作

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

yum install ipvsadm -yipvsadm -Ln

node节点操作

curl 10.96.165.162:30000

master01节点操作,对外访问

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

7.kubeadm内核参数优化方案

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/77852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux HTTP协议

目录 1.浏览器与服务器通信过程2.HTTP请求报头&#xff08;1&#xff09;HTTP的请求报头结构&#xff08;2&#xff09;HTTP的请求方法 3.HTTP应答报头&#xff08;1&#xff09;HTTP的应答报头结构&#xff08;2&#xff09; HTTP的应答状态 1.浏览器与服务器通信过程 浏览器…

回归预测 | MATLAB实现PSO-SDAE粒子群优化堆叠去噪自编码器多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现PSO-SDAE粒子群优化堆叠去噪自编码器多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现PSO-SDAE粒子群优化堆叠去噪自编码器多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览…

清理Maven仓库中下载失败的文件

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Nginx详解 五:反向代理

文章目录 1. 正向代理和反向代理1.1 正向代理概述1.1.1 什么是正向代理1.1.2 正向代理的作用1.1.3 正向代理的基本格式 1.2 反向代理概述1.2.1 什么是反向代理1.2.2 反向代理可实现的功能1.2.3 反向代理的可用模块 2. 配置反向代理2.1 反向代理配置参数2.1.1 proxy_pass2.1.2 其…

当你的公司突然开始大量的裁员,被留下的你,真的准备好面对以后了吗?

留下来的&#xff0c;也是迷茫的 最近公司突然开始大量裁员&#xff0c;裁了一多半&#xff0c;作为唯一留下的APP 端开发人员&#xff0c;也开始陷入了焦虑&#xff0c;开始了思考&#xff0c;未来究竟何去何从&#xff0c;是否再去转到原生&#xff0c;从事原生的开发工作&a…

C语言入门Day_19 初识函数

目录 1.函数的定义 2.函数的调用 3.易错点 4.思维导图 前言&#xff1a; printf()我们已经很熟悉了&#xff0c;它有一个特定的功能&#xff0c;就是在屏幕上输出一行文字。之前的课程我们都称呼printf()为一个功能&#xff0c;实际上ta在编程中有个特定的名字——函数。 …

测试-----selenuim webDriver

文章目录 1.页面导航2.元素定位3. 浏览器操作4.获取元素信息5. 鼠标的操作6. 键盘操作7. 元素等待8.下拉框9.弹出框10.滚动条11.frame处理12.验证码处理&#xff08;cookie&#xff09; 1.页面导航 首先是导入对应的包 :from selenium import webdriver然后实例化:driver web…

网络安全宣传周|探索AI数字人的魅力和价值所在

9月11日至9月17日是国家网络安全宣传周&#xff0c;在福州举办的安全博览会上有着多种人工智能模型产品亮相现场&#xff0c;吸引着众多参观者的目光&#xff0c;尤其是AI数字人面对不同的问题、不同的场景都可以进行实时响应&#xff0c;不同于冷冰冰的传统智能客服的对话场景…

前端面试合集(二)

前端面试题合集 1.懒加载的原理及实现了解吗2.如何理解JS异步3.阐述一下 JS 的事件循环4.JS 中的计时器能做到精确计时吗&#xff1f;为什么&#xff1f; 1.懒加载的原理及实现了解吗 原理&#xff1a;当图片没有到达可视范围内时&#xff0c;图片不加载&#xff0c;当图片一旦…

Mobileye CEO来华:只有能控制住成本的公司,才能活下来

‍作者|德新 编辑|王博 上午9点近一刻&#xff0c;Mobileye CEO Amnon Shuashua步入酒店的会议室。由于Amnon本人是以色列希伯来大学的计算机科学教授&#xff0c;大部分人更习惯称他为「教授」。 时近以色列的新年&#xff0c;这趟教授的中国之行安排十分紧凑。 他率领了一…

遥遥领先的内存函数

目录 ​编辑 函数介绍 1.1 strlen 1.2 strcpy 1.3 strcmp 1.4 strcat 1.5 strstr 2.1 memcpy 2.2 memmove 2.3 memcmp 函数实现 1.1 strlen 1.2 strcpy 1.3 strcmp 1.4 strcat 1.5 strstr 2.1 memcpy 2.3 memcmp 函数介绍 1.1 strlen size_t strlen ( const char *…

SpringBoot整合Redis,基于Jedis实现redis各种操作

前言&#xff08;三步教你学会redis&#xff0c;主打一个实用&#xff09; springboot整合redis步骤&#xff0c;并基于jedis对redis数据库进行相关操作&#xff0c;最后分享非常好用、功能非常全的redis工具类。 第一步&#xff1a;导入maven依赖 <!-- springboot整合re…

小程序代码管理

“微信开发者工具”点击版本管理&#xff0c;然后点击代码管理会打开代码管理网页。 选择对应的项目组。 进来后点击创建项目。 输入git名称&#xff0c;然后选择命名空间&#xff0c;最后创建即可。 在刚才的“微信开发者工具”选择设置&#xff0c;然后添加远程。 输入名称&…

朋友圈大佬都去读研了,这份备考书单我码住了

作者简介&#xff1a; 辭七七&#xff0c;目前大二&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

pycharm安装jupyter,用德古拉主题,但是输入行全白了,看不清,怎么办?

问题描述 今天换了以下pycharm主题&#xff0c;但是jupyter界面输入代码行太白了&#xff0c;白到看不清楚这行的字&#xff0c;更不知道写的是什么&#xff0c;写到哪了&#xff0c;这还是挺烦人的&#xff0c;其他都挺正常的。 问题分析 目前来看有两个原因&#xff1a; 1、…

【新版vscode配置自动补全括号】

vscode新版配置自动补全括号方法 新版配置方法(Pylance) ①设置 -> 扩展 -> Pylance -> 将 python.analysis.completeFunctionParens 下方的选项打勾 ②直接在settings.json中添加"python.analysis.completeFunctionParens": true

【Apollo】自动驾驶技术的介绍

阿波罗是百度发布的名为“Apollo&#xff08;阿波罗&#xff09;”的向汽车行业及自动驾驶领域的合作伙伴提供的软件平台。 帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统&#xff0c;快速搭建一套属于自己的自动驾驶系统。 百度开放此项计划旨在建立一个以合作为中…

CSS - 快速实现悬浮吸顶,当页面滑动一定距离时固定吸附在顶部(position: sticky)

效果图 如下图所示&#xff0c;利用 position: sticky 属性轻松实现。 示例代码 新建一个 *.html 文件&#xff0c;一键复制运行起来。 <body><section class"content"><div class"item">我是悬浮吸顶区域</div><h1>我是…

AI时代:探索机器学习与深度学习的融合之旅

文章目录 1. 机器学习和深度学习简介1.1 机器学习1.2 深度学习 2. 为什么融合是必要的&#xff1f;2.1 数据增强2.2 模型融合 3. 深入分析&#xff1a;案例研究3.1 传统机器学习方法3.2 深度学习方法3.3 融合方法 4. 未来展望结论 &#x1f389;欢迎来到AIGC人工智能专栏~AI时代…

【Java Web】HTML 标签 总结

目录 1.HTML 2.标签 1. head 标签 1.图标 2.样式居中 2. body 标签 1.注释 &#xff1a; 2.加载图片 3.加载视频 效果 4.区域 效果 5.上下跳转&#xff0c;页面跳转 效果 6.表格 效果 7.有序列表&#xff0c;无序列表 效果 8.登录 效果 9.按钮 10.多选框…