k8s的安装
k8s的安装
1.创建主机,设置ip,hostname,关闭firewalld,selinux,NetworkManager
| 编号 | 主机名称 | ip |
| 1 | k8s-master | 192.168.118.66 |
| 2 | k8s-node01 | 192.168.118.77 |
| 3 | k8s-node02 | 192.168.118.88 |
2.设置主机之间的ssh免密
[root@k8s-master ~]# ssh-keygen
[root@k8s-master ~]# ssh-copy-id root@192.168.118.77
[root@k8s-master ~]# ssh-copy-id root@192.168.118.88
3.三个节点yum源配置
--docker
--k8s
--清空以及创建缓存 yum clean all && make makecach
--四个源镜像 aliyun ,epel, kubernetes,docker-ce
4.三个节点主机映射
[root@k8s-master ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.118.66 k8s-master
192.168.118.77 k8s-node01
192.168.118.88 k8s-node02
测试:主机之间能使用域名相互ping通
[root@k8s-master ~]# ping k8s-node01
PING k8s-node01 (192.168.118.77) 56(84) bytes of data.
64 bytes from k8s-node01 (192.168.118.77): icmp_seq=1 ttl=64 time=0.426 ms
64 bytes from k8s-node01 (192.168.118.77): icmp_seq=2 ttl=64 time=0.342 ms
5.三个节点安装常用软件
[root@k8s-master ~]# yum install wget jq psmisc vim net-tools telnet yum-utils device-mapper-persistent-data lvm2 git tree -y
6.三个节点关闭关闭防火墙, NetworkManager ,selinux ,SWAP虚拟分区
32 systemctl disable --now firewalld
33 systemctl disable --now NetworkManager
34 setenforce 0
35 vim /etc/selinux/config

37 swapoff -a && sysctl -w vm.swappiness=0
38 sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab
7.三个节点同步时间,同时设置计划任务
40 yum -y install ntpdate
41 ntpdate time2.aliyun.com
42 crontab -e
*/5 * * * * /usr/sbin/ntpdate time2.aliyun.com
8.三个节点配置limit
43 ulimit -SHn 65535 # 单个进程可以打开的文件数量将被限制为 65535
45 vim /etc/security/limits.conf
# 末尾添加如下内容* soft nofile 65536* hard nofile 131072* soft nproc 65535* hard nproc 655350* soft memlock unlimited* hard memlock unlimited
9.下载yaml文件,从gitee上下载,配置的pod的yaml文件和docker-compose.yaml文件相似,等我的k8s架构搭建起来以后,在添加功能性pod的时候使用
46 cd /root/
47 git clone https://gitee.com/dukuan/k8s-ha-install.git
10.三个节点ipvs的配置
50 yum install ipvsadm ipset sysstat conntrack libseccomp -y
51 modprobe -- ip_vs
52 modprobe -- ip_vs_rr
53 modprobe -- ip_vs_wrr
54 modprobe -- ip_vs_sh
55 modprobe -- nf_conntrack
62 vim /etc/modules-load.d/ipvs.conf
# 在系统启动时加载下列 IPVS 和相关功能所需的模块
ip_vs # 负载均衡模块
ip_vs_lc # 用于实现基于连接数量的负载均衡算法
ip_vs_wlc # 用于实现带权重的最少连接算法的模块
ip_vs_rr # 负载均衡rr算法模块
ip_vs_wrr # 负载均衡wrr算法模块
ip_vs_lblc # 负载均衡算法,它结合了最少连接(LC)算法和基于偏置的轮询(Round Robin with Bias)算法
ip_vs_lblcr # 用于实现基于链路层拥塞状况的最少连接负载调度算法的模块
ip_vs_dh # 用于实现基于散列(Hashing)的负载均衡算法的模块
ip_vs_sh # 用于源端负载均衡的模块
ip_vs_fo # 用于实现基于本地服务的负载均衡算法的模块
ip_vs_nq # 用于实现NQ算法的模块
ip_vs_sed # 用于实现随机早期检测(Random Early Detection)算法的模块
ip_vs_ftp # 用于实现FTP服务的负载均衡模块
ip_vs_sh
nf_conntrack # 用于跟踪网络连接的状态的模块
ip_tables # 用于管理防护墙的机制
ip_set # 用于创建和管理IP集合的模块
xt_set # 用于处理IP数据包集合的模块,提供了与iptables等网络工具的接口
ipt_set # 用于处理iptables规则集合的模块
ipt_rpfilter # 用于实现路由反向路径过滤的模块
ipt_REJECT # iptables模块之一,用于将不符合规则的数据包拒绝,并返回特定的错误码
ipip # 用于实现IP隧道功能的模块,使得数据可以在两个网络之间进行传输
#查看已写入加载的模块
65 lsmod | grep -e ip_vs -e nf_conntrack
11.三个节点k8s的内核加载
66 vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1 # 控制网络桥接与iptables之间的网络转发行为
net.bridge.bridge-nf-call-ip6tables = 1 # 用于控制网络桥接(bridge)的IP6tables过滤规则。当该参数设置为1时,表示启用对网络桥接的IP6tables过滤规则
fs.may_detach_mounts = 1 # 用于控制文件系统是否允许分离挂载,1表示允许
net.ipv4.conf.all.route_localnet = 1 # 允许本地网络上的路由。设置为1表示允许,设置为0表示禁止。
vm.overcommit_memory=1 # 控制内存分配策略。设置为1表示允许内存过量分配,设置为0表示不允许。
vm.panic_on_oom=0 # 决定当系统遇到内存不足(OOM)时是否产生panic。设置为0表示不产生panic,设置为1表示产生panic。
fs.inotify.max_user_watches=89100 # inotify可以监视的文件和目录的最大数量。
fs.file-max=52706963 # 系统级别的文件描述符的最大数量。
fs.nr_open=52706963 # 单个进程可以打开的文件描述符的最大数量。
net.netfilter.nf_conntrack_max=2310720 # 网络连接跟踪表的最大大小。
net.ipv4.tcp_keepalive_time = 600 # TCP保活机制发送探测包的间隔时间(秒)。
net.ipv4.tcp_keepalive_probes = 3 # TCP保活机制发送探测包的最大次数。
net.ipv4.tcp_keepalive_intvl =15 # TCP保活机制在发送下一个探测包之前等待响应的时间(秒)。
net.ipv4.tcp_max_tw_buckets = 36000 # TCP TIME_WAIT状态的bucket数量。
net.ipv4.tcp_tw_reuse = 1 # 允许重用TIME_WAIT套接字。设置为1表示允许,设置为0表示不允许。
net.ipv4.tcp_max_orphans = 327680 # 系统中最大的孤套接字数量。
net.ipv4.tcp_orphan_retries = 3 # 系统尝试重新分配孤套接字的次数。
net.ipv4.tcp_syncookies = 1 # 用于防止SYN洪水攻击。设置为1表示启用SYN cookies,设置为0表示禁用。
net.ipv4.tcp_max_syn_backlog = 16384 # SYN连接请求队列的最大长度。
net.ipv4.ip_conntrack_max = 65536 # IP连接跟踪表的最大大小。
net.ipv4.tcp_max_syn_backlog = 16384 # 系统中最大的监听队列的长度。
net.ipv4.tcp_timestamps = 0 # 用于关闭TCP时间戳选项。
net.core.somaxconn = 16384 # 用于设置系统中最大的监听队列的长度
#保存后,所有节点重启,保证重启后内核依然加载
67 reboot
12.三个节点卸载podman,安装docker-ce docker-ce-cli containerd
[root@k8s-master ~]# yum remove -y podman runc containerd
[root@k8s-master ~]# yum install docker-ce docker-ce-cli containerd.io -y
13.三个节点配置containerd所需要的核心模块 overlay,br_nerfilter
[root@k8s-master ~]# cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
> overlay
> br_netfilter
> EOF
overlay
br_netfilter
[root@k8s-master ~]# modprobe overlay
[root@k8s-master ~]# modprobe br_netfilter
[root@k8s-master ~]# cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
> net.bridge.bridge-nf-call-iptables = 1
> net.ipv4.ip_forward = 1
> net.bridge.bridge-nf-call-ip6tables = 1
> EOF
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
[root@k8s-master ~]# sysctl --system
14.containerd配置文件
[root@k8s-master ~]# mkdir -p /etc/containerd
#读取containerd的配置并保存到/etc/containerd/config.toml
[root@k8s-master ~]# containerd config default | tee /etc/containerd/config.toml
[root@k8s-master ~]# vim /etc/containerd/config.toml
修改63行和127行
![]()
![]()
[root@k8s-master ~]# systemctl enable --now containerd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/containerd.service to /usr/lib/systemd/system/containerd.service.
[root@k8s-master ~]# systemctl status containerd.service
● containerd.service - containerd container runtime
Loaded: loaded (/usr/lib/systemd/system/containerd.service; enabled; vendor preset: disabled)
Active: active (running) since 三 2024-09-11 11:40:38 CST; 52s ago
15.三个节点配置远程客户端访问
[root@k8s-master ~]# cat > /etc/crictl.yaml <<EOF
> runtime-endpoint: unix:///run/containerd/containerd.sock
> image-endpoint:unix:///run/containerd/containerd.sock
> timeout: 10
> debug: false
> EOF
16.三节点安装kubernetes组件
86 yum -y install kubeadm-1.28* kubectl-1.28* kubelet-1.28*
87 yum list installed | grep kube
88 systemctl daemon-reload
89 systemctl enable --now kubelet.service
90 systemctl status kubelet.service
--异常:
91 yum -y remove kubelet-1.28*
92 yum -y install kubelet-1.28*
93 systemctl daemon-reload
94 systemctl enable --now kubelet.service
95 systemctl status kubelet.service
kubeadm依赖与kubelet:
96 yum -y install kubeadm-1.28*
[root@k8s-master ~]# systemctl status kubelet.service
● kubelet.service - kubelet: The Kubernetes Node Agent
Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
Active: active (running) since 三 2024-09-11 14:25:11 CST; 16s ago
#kubelet端口是10248,10250,10255三个端口
[root@k8s-master ~]# netstat -lnput | grep kubelet
tcp 0 0 127.0.0.1:10248 0.0.0.0:* LISTEN 11597/kubelet
tcp6 0 0 :::10250 :::* LISTEN 11597/kubelet
tcp6 0 0 :::10255 :::* LISTEN 11597/kubelet
只对k8s-master操作
17.初始化
--拉取镜像
[root@k8s-master ~]# vim kubeadm-config.yaml####修改文件里的IP地址为本机的IP(k8s-master)apiVersion: kubeadm.k8s.io/v1beta3 # 指定Kubernetes配置文件的版本,使用的是kubeadm API的v1beta3版本
bootstrapTokens: # 定义bootstrap tokens的信息。这些tokens用于在Kubernetes集群初始化过程中进行身份验证
- groups: # 定义了与此token关联的组- system:bootstrappers:kubeadm:default-node-token token: 7t2weq.bjbawausm0jaxury # bootstrap token的值ttl: 24h0m0s # token的生存时间,这里设置为24小时usages: # 定义token的用途- signing # 数字签名- authentication # 身份验证
kind: InitConfiguration # 指定配置对象的类型,InitConfiguration:表示这是一个初始化配置
localAPIEndpoint: # 定义本地API端点的地址和端口advertiseAddress: 192.168.118.66bindPort: 6443
nodeRegistration: # 定义节点注册时的配置criSocket: unix:///var/run/containerd/containerd.sock # 容器运行时(CRI)的套接字路径name: k8s-master # 节点的名称taints: # 标记- effect: NoSchedule # 免调度节点key: node-role.kubernetes.io/control-plane # 该节点为控制节点
---
apiServer: # 定义了API服务器的配置certSANs: # 为API服务器指定了附加的证书主体名称(SAN),指定IP即可- 192.168.118.66timeoutForControlPlane: 4m0s # 控制平面的超时时间,这里设置为4分钟
apiVersion: kubeadm.k8s.io/v1beta3 # 指定API Server版本
certificatesDir: /etc/kubernetes/pki # 指定了证书的存储目录
clusterName: kubernetes # 定义了集群的名称为"kubernetes"
controlPlaneEndpoint: 192.168.118.66:6443 # 定义了控制节点的地址和端口
controllerManager: {} # 控制器管理器的配置,为空表示使用默认配置
etcd: # 定义了etcd的配置local: # 本地etcd实例dataDir: /var/lib/etcd # 数据目录
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers # 指定了Kubernetes使用的镜像仓库的地址,阿里云的镜像仓库。
kind: ClusterConfiguration # 指定了配置对象的类型,ClusterConfiguration:表示这是一个集群配置
kubernetesVersion: v1.28.2 # 指定了kubernetes的版本
networking: # 定义了kubernetes集群网络设置dnsDomain: cluster.local # 定义了集群的DNS域为:cluster.localpodSubnet: 172.16.0.0/16 # 定义了Pod的子网serviceSubnet: 10.96.0.0/16 # 定义了服务的子网
scheduler: {} # 使用默认的调度器行为# 将旧的kubeadm配置文件转换为新的格式[root@k8s-master ~]# kubeadm config migrate --old-config kubeadm-config.yaml --new-config new.yaml
[root@k8s-master ~]# ls
anaconda-ks.cfg k8s-ha-install kubeadm-config.yaml new.yaml
104 kubeadm config images pull --config new.yaml
[config/images] Pulled registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.28.2
[config/images] Pulled registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.28.2
[config/images] Pulled registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.28.2
[config/images] Pulled registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.28.2
[config/images] Pulled registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9
[config/images] Pulled registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.9-0
[config/images] Pulled registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.10.1
--初始化
[root@k8s-master ~]# kubeadm init --config /root/new.yaml --upload-certs
[init] Using Kubernetes version: v1.28.2
[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:[ERROR Port-10250]: Port 10250 is in use
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher
[root@k8s-master ~]# systemctl stop kubelet.service
Warning: kubelet.service changed on disk. Run 'systemctl daemon-reload' to reload units.
[root@k8s-master ~]# kubeadm init --config /root/new.yaml --upload-certskubeadm join 192.168.118.66:6443 --token 7t2weq.bjbawausm0jaxury \--discovery-token-ca-cert-hash sha256:edc1d608d110c230dfb234262534921f2d3855b5d33d662aef79a8684c3896f2
--保存toke
保存token,其他人要用我们的集群,就用这个,如果又初始化后,token会变
[root@k8s-master ~]# vim token
kubeadm join 192.168.118.66:6443 --token 7t2weq.bjbawausm0jaxury \
--discovery-token-ca-cert-hash sha256:edc1d608d110c230dfb234262534921f2d3855b5d33d662aef79a8684c3896f2
配置故障
--主机配置2核2G
--echo 1 > /proc/net/ipv4/ip_forward
--kubelet无法启动
--swap虚拟分区没关
--没有配置文件
--查看日志/var/log/message
18.将工作节点加入到集群
--在k8s-node01和k8s-node02上,先systemctl stop kubelet
[root@k8s-node01 ~]# kubeadm join 192.168.118.66:6443 --token 7t2weq.bjbawausm0jaxury \
> --discovery-token-ca-cert-hash sha256:edc1d608d110c230dfb234262534921f2d3855b5d33d662aef79a8684c3896f2
[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:[ERROR Port-10250]: Port 10250 is in use
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher
您在 /var/spool/mail/root 中有新邮件
[root@k8s-node01 ~]# systemctl stop kubelet.service
Warning: kubelet.service changed on disk. Run 'systemctl daemon-reload' to reload units.
[root@k8s-node01 ~]# kubeadm join 192.168.118.66:6443 --token 7t2weq.bjbawausm0jaxury --discovery-token-ca-cert-hash sha256:edc1d608d110c230dfb234262534921f2d3855b5d33d662aef79a8684c3896f2Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
--添加不成功
--kubelet没有stop
--ip转发没有
--token重启初始化或者生成token
--node中containerd是否正常
--查看节点以及pod状态
#查看节点 查看在集群中的主机的状态
[root@k8s-master ~]# kubectl get nodes
E0911 15:40:13.584913 12962 memcache.go:265] couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s": dial tcp [::1]:8080: connect: connection refused
[root@k8s-master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf
[root@k8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master NotReady control-plane 47m v1.28.2
k8s-node01 NotReady <none> 3m16s v1.28.2
k8s-node02 NotReady <none> 2m35s v1.28.2
[root@k8s-master ~]# vim .bashrc

#查看所有的pod状态
[root@k8s-master ~]# kubectl get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-6554b8b87f-thzlw 0/1 Pending 0 53m
kube-system coredns-6554b8b87f-zdhh9 0/1 Pending 0 53m
kube-system etcd-k8s-master 1/1 Running 0 53m
kube-system kube-apiserver-k8s-master 1/1 Running 0 53m
kube-system kube-controller-manager-k8s-master 1/1 Running 0 53m
kube-system kube-proxy-8jk8f 1/1 Running 0 8m40s
kube-system kube-proxy-dvfx4 1/1 Running 0 9m21s
kube-system kube-proxy-g226c 1/1 Running 0 53m
kube-system kube-scheduler-k8s-master 1/1 Running 0 53m
#查看pod完整信息
[root@k8s-master ~]# kubectl get po -Aowide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kube-system coredns-6554b8b87f-thzlw 0/1 Pending 0 56m <none> <none> <none> <none>
kube-system coredns-6554b8b87f-zdhh9 0/1 Pending 0 56m <none> <none> <none> <none>
kube-system etcd-k8s-master 1/1 Running 0 56m 192.168.118.66 k8s-master <none> <none>
kube-system kube-apiserver-k8s-master 1/1 Running 0 56m 192.168.118.66 k8s-master <none> <none>
kube-system kube-controller-manager-k8s-master 1/1 Running 0 56m 192.168.118.66 k8s-master <none> <none>
kube-system kube-proxy-8jk8f 1/1 Running 0 11m 192.168.118.88 k8s-node02 <none> <none>
kube-system kube-proxy-dvfx4 1/1 Running 0 12m 192.168.118.77 k8s-node01 <none> <none>
kube-system kube-proxy-g226c 1/1 Running 0 56m 192.168.118.66 k8s-master <none> <none>
kube-system kube-scheduler-k8s-master 1/1 Running 0 56m 192.168.118.66 k8s-master <none> <none>
#状态(status)
pending:挂起 ,当前pod没有工作
running: 运行中 ,当前pod正常工作
ContainerCreating: 正在创建容器
19.部署calico的pod
# 找到配置文件calico
[root@k8s-master ~]# cd k8s-ha-install/
# 切换 git 分⽀
[root@k8s-master k8s-ha-install]# git checkout manual-installation-v1.28.x
分支 manual-installation-v1.28.x 设置为跟踪来自 origin 的远程分支 manual-installation-v1.28.x。
切换到一个新分支 'manual-installation-v1.28.x'
# 修改 Pod ⽹段
[root@k8s-master k8s-ha-install]# ls
bootstrap CoreDNS dashboard metrics-server README.md
calico csi-hostpath kubeadm-metrics-server pki snapshotter
[root@k8s-master k8s-ha-install]# cd calico/
[root@k8s-master calico]# ls
calico.yaml
[root@k8s-master calico]# vim /etc/kubernetes/manifests/kube-controller-manager.yaml
# 获取已定义的Pod⽹段
[root@k8s-master calico]# POD_SUBNET=`cat /etc/kubernetes/manifests/kube-controller-manager.yaml | grep cluster-cidr= | awk -F= '{print $NF}'`
[root@k8s-master calico]# echo $POD_SUBNET
172.16.0.0/16
# 修改配置文件,将文件中的POD_CIDR替换成172.16.0.0/16
[root@k8s-master calico]# sed -i "s#POD_CIDR#${POD_SUBNET}#g" calico.yaml
# 创建pod
[root@k8s-master calico]# kubectl apply -f calico.yaml
错误:
在创建pod的时候部分容器处于pending, ContainerCreating,Init时是因为网络不行,或者是更新不好,执行 yum -y update && reboot
结果:
[root@k8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane 18h v1.28.2
k8s-node01 Ready <none> 18h v1.28.2
k8s-node02 Ready <none> 18h v1.28.2
[root@k8s-master ~]# kubectl get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-6d48795585-7vjgk 1/1 Running 0 17h
kube-system calico-node-qqds6 1/1 Running 0 17h
kube-system calico-node-rn2nb 1/1 Running 0 17h
kube-system calico-node-w5bnt 1/1 Running 0 17h
kube-system coredns-6554b8b87f-thzlw 1/1 Running 0 18h
kube-system coredns-6554b8b87f-zdhh9 1/1 Running 0 18h
kube-system etcd-k8s-master 1/1 Running 1 (22m ago) 18h
kube-system kube-apiserver-k8s-master 1/1 Running 1 (22m ago) 18h
kube-system kube-controller-manager-k8s-master 1/1 Running 2 (35s ago) 18h
kube-system kube-proxy-8jk8f 1/1 Running 1 (21m ago) 18h
kube-system kube-proxy-dvfx4 1/1 Running 1 (22m ago) 18h
kube-system kube-proxy-g226c 1/1 Running 1 (22m ago) 18h
kube-system kube-scheduler-k8s-master 1/1 Running 1 (22m ago) 18h
处理calico网络无法连接
--镜像下载的网络是否正常
--更新kernel版本 yum -y update kernel
相关文章:
k8s的安装
k8s的安装 1.创建主机,设置ip,hostname,关闭firewalld,selinux,NetworkManager 编号主机名称ip1k8s-master192.168.118.662k8s-node01192.168.118.773k8s-node02192.168.118.88 2.设置主机之间的ssh免密 [rootk8s-master ~]# ssh-keygen [rootk8s-ma…...
Qt中样式表常用的属性名称定义
Qt中,用好样式表,不但可以做出意想不到的酷炫效果,有时候也能减轻开发量,可能由于你不了解某些样式使用,想破脑袋通过代码实现的效果,反倒不如别人用样式,一两句样式脚本就搞定。 Qt中ÿ…...
React源码学习(一):如何学习React源码
本系列源码学习,是基于 v16.13.1,v17.x与v16.x区别并不太大! 一、如何正确的学习React源码? 找到Github,转到React仓库,fork / clone源码:React 查看Readme,在Documentation中有Cont…...
云计算服务的底层,虚拟化技术的实现原理
虚拟化技术: 一、 从cpu说起, intel和amd等cpu制造商 为了提高其cpu对 虚拟化程序的运算速度, 给cpu硬件里面 增加了指令集 VMLAUNCH, VMRESUME, VMEXIT, VMXOFF 这些指令集称为硬件辅助虚拟化技术的指令集。 ---------------------…...
大数据Flink(一百一十六):Flink SQL的时间属性
文章目录 Flink SQL的时间属性 一、Flink 三种时间属性简介 二、Flink 三种时间属性的应用场景 三、SQL 指定时间属性的两种方式 四、SQL 处理时间DDL定义 五、SQL 事件时间DDL定义 Flink SQL的时…...
Ansible自动化部署kubernetes集群
机器环境介绍 1.1. 机器信息介绍 IP hostname application CPU Memory 192.168.204.129 k8s-master01 etcd,kube-apiserver,kube-controller-manager,kube-scheduler,kubelet,kube-proxy,containerd 2C 4G 192.168.204.130 k8s-w…...
网络通信流程
目录 ♫IP地址 ♫子网掩码 ♫MAC地址 ♫相关设备 ♫ARP寻址 ♫网络通信流程 ♫IP地址 我们已经知道 IP 地址由网络号主机号组成,根据 IP 地址的不同可以有5钟划分网络号和主机号的方案: 其中,各类地址的表示范围是: 分类范围适用…...
数据结构一:绪论
(一)数据结构的基本概念 1.相关名词 【1】数据 1.信息的载体,描述客观事物 2.能被输入到计算机中 3.能被计算机程序识别和处理的符号的集合。 【2】数据元素 1.数据的一个“个体” 2.数据的基本单位 3.有时候也被称为元素、结点、顶点…...
使用OpenFeign在不同微服务之间传递用户信息时失败
文章目录 起因原因解决方法: 起因 从pay-service中实现下单时,会调用到user-service中的扣减余额。 因此这里需要在不同微服务之间传递用户信息。 但是user-service中始终从始至终拿不到user的信息。 原因 在pay-service中,不仅要Enable O…...
js中【Worker】相关知识点详细解读
什么是 JavaScript 中的 Worker? JavaScript 中的 Worker 是一个可以在后台线程中运行代码的 API,这样可以避免主线程(通常是 UI 线程)被阻塞。使用 Worker 时,JavaScript 可以在多线程环境中工作,解决了单…...
使用Apify加载Twitter消息以进行微调的完整指南
# 使用Apify加载Twitter消息以进行微调的完整指南## 引言在自然语言处理领域,微调模型以适应特定任务是提升模型性能的常见方法。本文将介绍如何使用Apify从Twitter导出聊天信息,以便进一步进行微调。## 主要内容### 使用Apify导出推文首先,我…...
【C++算法】滑动窗口
长度最小的子数组 题目链接: 209. 长度最小的子数组 - 力扣(LeetCode)https://leetcode.cn/problems/minimum-size-subarray-sum/description/ 算法原理 代码步骤: 设置left0,right0设置sum0,len0遍历l…...
(c++)猜数字(含根据当前时间生成伪随机数代码)
#include<iostream> #include<ctime>/*用srand((unsigned int)time(NULL));要包含这个头文件,如果没有这两个,rand()函数会一直生成42这个伪随机数。*/using namespace std;int main() {srand((unsigned int)time(NULL));//种子,…...
优化批处理流程:自定义BatchProcessorUtils的设计与应用
优化批处理流程:自定义BatchProcessorUtils的设计与应用 | 原创作者/编辑:凯哥Java | 分类:个人小工具类 在我们开发过程中,处理大量的数据集是一项常见的任务。特别是在数据库操作、文件处理或者…...
Framebuffer应用编程
目录 前言 LCD操作原理 涉及的 API 函数 open函数 ioctl 函数 mmap 函数 Framebuffer程序分析 源码 1.打开设备 2.获取LCD参数 3.映射Framebuffer 4.描点函数 5.随便画几个点 上机实验 前言 本文介绍LCD的操作原理和涉及到的API函数,分析Framebuffer…...
MongoDB根据字段内容长度查询语句
db.getCollection("qlzx_penalties_business_raw").find({$expr: {$lt: [{ $strLenCP: "$punish_name" }, 5]},"punish_name_type" : "机构", "source_data" : /中国/,})解释: 1-"source_data" : /中…...
Android中的单例模式
在Android开发中,单例模式(Singleton Pattern)是一种常用的设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。单例模式在需要控制资源访问、管理共享资源或配置信息的场景下特别有用。在Androi…...
python做游戏好用吗
Python做游戏是完全可以的,而且也非常简单,有一个专门针对游戏开发的平台(模块)—pygame,允许开发人员快速设计游戏而又摆脱了低级语言的束缚,下面我简单介绍一下这个模块的安装和使用: 1、首先…...
常用游戏运行库下载
包含以下资源: DirectX Repair.exe DirectX Repair(Enhanced Edition). vcredist C2013 x64.exe 微软常用运行库合集 下载链接...
(1)CLIP
CLIP 概述1. 训练与推理2. 最终效果与局限性3.后续应用3.1 DALL-E3.2 ActionCLIP3.3 CLIP-Event 概述 CLIP:contrastive language-image pretraining 利用文本的监督信号训练一个迁移能力特别强的视觉模型 传统的视觉模型,人工标注图像,那么…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
归并排序:分治思想的高效排序
目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法,由约翰冯诺伊曼在1945年提出。其核心思想包括: 分割(Divide):将待排序数组递归地分成两个子…...
无需布线的革命:电力载波技术赋能楼宇自控系统-亚川科技
无需布线的革命:电力载波技术赋能楼宇自控系统 在楼宇自动化领域,传统控制系统依赖复杂的专用通信线路,不仅施工成本高昂,后期维护和扩展也极为不便。电力载波技术(PLC)的突破性应用,彻底改变了…...
ubuntu系统 | docker+dify+ollama+deepseek搭建本地应用
1、docker 介绍与安装 docker安装:1、Ubuntu系统安装docker_ubuntu docker run-CSDN博客 docker介绍及镜像源配置:2、ubuntu系统docker介绍及镜像源和仓库配置-CSDN博客 docker常用命令:3、ubuntu系统docker常用命令-CSDN博客 docker compose安装:4、docker compose-CS…...
设计模式域——软件设计模式全集
摘要 软件设计模式是软件工程领域中经过验证的、可复用的解决方案,旨在解决常见的软件设计问题。它们是软件开发经验的总结,能够帮助开发人员在设计阶段快速找到合适的解决方案,提高代码的可维护性、可扩展性和可复用性。设计模式主要分为三…...
RMQ 算法详解(区间最值问题)
RMQ 算法详解(区间最值问题) 问题介绍解决方法暴力法ST表法基本思想算法步骤C实现 问题介绍 RMQ问题是OI中经常遇到的问题,主要是一下形式: 给你一堆数,不断的对里面的数进行操作,例如:让某个…...
