Kubernetes 系列 | k8s入门运维

news2024/9/22 15:44:20

目录

  • 一、K8S集群搭建
    • 1.1 部署方式
    • 1.2 了解kubeadm
    • 1.3 部署流程
      • 1.3.1 初始化配置
      • 1.3.2 安装容器运行时
      • 1.3.3 安装K8S软件包
      • 1.3.4 创建集群
  • 二、集群高可用
    • 1.1 集群高可用-堆叠
    • 1.2 集群高可用-集群外etcd
  • 三、Pod运维
    • 3.1 Pod运维
    • 3.2 Pod的生命周期
    • 3.3 Pod状况
    • 3.4 Pod阶段
    • 3.5 容器状态
    • 3.6 Pod调度
    • 3.7 Pod排错
    • 3.8 Pod状态
  • 四、Node运维
  • 五、Etcd运维
  • 六、Corndns运维
  • 七、Ingress-controller运维
  • 八、Calico运维
  • 九、证书更新

一、K8S集群搭建

1.1 部署方式

  • kubeadm
    Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群
  • 二进制
    从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群

1.2 了解kubeadm

kubeadm 通过执行必要的操作来启动和运行一个最小可用的集群。它被故意设计为只关心启动集群,而不是准备节点环境的工作:

  • kubeadm init 启动一个 Kubernetes 主节点
  • kubeadm join 启动一个 Kubernetes 工作节点并且将其加入到集群
  • kubeadm upgrade 更新一个 Kubernetes 集群到新版本
  • kubeadm config 管理集群的配置
  • kubeadm token 使用 kubeadm join 来管理令牌
  • kubeadm reset 还原之前使用 kubeadm init 或者 kubeadm join 对节点产生的改变
  • kubeadm version 打印出 kubeadm 版本
  • kubeadm alpha 预览一组可用的新功能以便从社区搜集反馈

1.3 部署流程

v1.25搭建直通车
下文的流程只是参考并不是可实操的文档,若需要部署请使用上文。
在这里插入图片描述

1.3.1 初始化配置

  1. 关闭防火墙、selinux、swap
#关闭防火墙
systemctl stop firewalld &&systemctl disable firewalld
#关闭 SELinux
getenforce
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
#关闭 swap 分区
free -h
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
  1. 设置主机名
#设置主机名   
hostnamectl set-hostname <hostname>  
  1. 挂载存储
etcd盘
docker盘
kubelet盘
  1. 内核参数调优
将桥接的 IPv4 流量传递到 iptables 的链
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1  
其他参数
net.ipv4.tcp_tw_reuse = 1  
net.ipv4.tcp_tw_recycle = 0  
net.ipv4.ip_local_port_range = 40000 60000  
vm.swappiness = 0  
kernel.pid_max = 655350
  1. 时间同步
手动同步
ntpdate
chrony

1.3.2 安装容器运行时

  1. 安装CRI
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O
/etc/yum.repos.d/docker-ce.repo
yum -y  imstall  docker-ce/containerd 
  1. 调整cgroups驱动
$ cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
  1. 启动并开机自启
systemctl enable docker && systemctl start docker

1.3.3 安装K8S软件包

  1. 添加K8S的yum源
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
  1. 安装kubeadm、kubelet、kubectl
dnf install -y kubelet-1.25.7 kubeadm-1.25.7 kubectl-1.25.7 \
                --disableexcludes=kubernetes
  1. 设置开机自启
systemctl enable --now kubelet

1.3.4 创建集群

  1. 初始化控制平面节点
kubeadm init \
  --apiserver-advertise-address=192.168.100.10 \
  --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \
  --kubernetes-version=v1.25.7 \
  --service-cidr=10.96.0.0/16 \
  --pod-network-cidr=10.244.0.0/16 \
  --token-ttl=0 # 如果不设置为 0 ,默认的 token 有效期是 24 小时
  1. 拷贝配置文件
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf
  1. 加入节点
kubeadm join 10.10.102.224:6443 --token mu567i.b2e80ic54vhr13yl \
--discovery-token-ca-cert-hash sha256:f812c6b9e157ee6c0bd11d85f59252fd8b33f349af30167738aa766442d77e33
#重新生成token
kubeadm token create --print-join-command
  1. 部署网络插件
wget https://projectcalico.docs.tigera.io/v3.25/manifests/calico.yaml
kubectl apply -f calico.yaml
kubectl get pods -n kube-system

二、集群高可用

1.1 集群高可用-堆叠

在这里插入图片描述

1.2 集群高可用-集群外etcd

在这里插入图片描述

三、Pod运维

3.1 Pod运维

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

3.2 Pod的生命周期

在这里插入图片描述

3.3 Pod状况

简介
可以通过查看Pod的Condition列表了解更多信息,pod的Condition指示pod是否已达到某个状态,以及为什么会这样,与状态相反,一个Pod同时具有多个Conditions
pod的条件表

Pod Condition描述
PodScheduled表示pod是否已调度到节点
InitializedPod的 init容器都已成功完成
ContainersReadyPod 中所有容器都已就绪
ReadyPod 可以为请求提供服务,并且应该被添加到对应服务的负载均衡池中

显示Pod的状况


kubectl describe po <pod-name> -n <namespace> | grep Conditions: -A5

3.4 Pod阶段

简介
Pod 的阶段(Phase)是 Pod 在其生命周期中所处位置的简单宏观概述。 该阶段并不是对容器或 Pod 状态
的综合汇总,也不是为了成为完整的状态机。
pod的条件表
在这里插入图片描述
显示Pod的阶段

kubectl get po <pod-name> -n <namespace> -o yaml | grep phase:

3.5 容器状态

在这里插入图片描述

3.6 Pod调度

影响Pod调度
在这里插入图片描述

3.7 Pod排错

排错过程中常用命令

查看 Pod 状态: kubectl get pod <pod-name> -n <namespace> -o wide
查看 Pod 的 yaml 配置: kubectl get pod <pod-name> -n <namespace> -o yaml
查看 Pod 事件: kubectl describe pod <pod-name> -n <namespace>
查看容器日志: kubectl logs -f <pod-name> [-c <container-name>] -n <namespace> --tail=10
查看上一个退出容器日志:kubectl logs <pod-name> [-c <container-name>] -n <namespace> -p

3.8 Pod状态

在这里插入图片描述

Pod状态-Pending
在这里插入图片描述
Pod状态- ContainerCreating 或Waiting
在这里插入图片描述
Pod状态-CrashLoopBackOff
在这里插入图片描述
Pod状态-ImagePullBackOff
在这里插入图片描述

四、Node运维

主机上线
在这里插入图片描述
主机下线
在这里插入图片描述
主机重命名

  1. 备份节点yaml文件
    kubectl get node -o yaml > nodename.yaml
  2. 节点下线
  3. 清理数据
    清理iptables/IPVS表
    iptables:iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
    ipvs:ipvsadm -C
    清理calico数据
    rm -rf /var/lib/calico
  4. 设置节点名称
  5. 加入集群
    kubeadm join xxx
  6. 恢复节点标签和污点信息
    kubectl edit node

主机标签污点管理

  • 标签管理

查看主机标签:kubectl get node --show-labels
添加主机标签:kubectl label node key=value
移除主机标签:kubectl label node key-

  • 污点管理

查看主机污点:kubectl describe node
添加主机污点:kubectl taint node key=value:污点策略
移除主机污点:kubectl taint node key-

  • 污点策略

NoSchedule : 一定不被调度
PreferNoSchedule : 尽量不被调度
NoExecute : 不会调度,并且还会驱逐Node已有Pod
主机常规处理

  • 内存清理

在当前节点上使用命令free -g 查看内存使用情况
使用命令清理:echo 1 > /proc/sys/vm/drop_caches

  • 主机重启

优先做POD驱逐,如果驱逐不了直接停止该节点上的kubelet和docker。
kubectl drain nodename
systemctl stop kubelet
systemctl stop docker
然后使用命令reboot

  • 主机镜像清理

docker image prune -a

  • CPU异常

查看主机使用情况:top
查看各个进程CPU使用情况
查看异常进程具体执行命令,判断异常进程属于哪个服务,执行命
令:cat /proc/异常进程的PID/cmdline
反馈进程相关方

  • 主机僵尸进程
  • 查看主机僵尸是否存在

在当前节点上使用命令 top

  • 查看主机僵尸

如果存在僵尸进程,找到相关进程:ps -e | grep defunct

  • 查看主机僵尸

尝试找到僵尸进程的父进程,如果不是父进程Pid不为1,通过kill掉父进程,执行命令:kill -9 父进程Pid,从而处理僵尸
进程;但僵尸进程的父进程若为1,或者没有父进程,需要重启问题机器

  • 主机不可用
    查看异常节点
    kubectl get node -owide | grep NotReady
    查看节点异常信息
    kubectl describe node

在这里插入图片描述
查看主机相关组件状态
systemctl status docker/kubelet
查看主机相关组件日志
journalctl -u docker/kubelet -f
tail -f /var/log/message

五、Etcd运维

etcd命令一

  • 设置v版本的API

export ETCDCTL_API=3

  • 查看ETCD高可用集群健康状态

etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/peer.crt –
key=/etc/kubernetes/pki/etcd/peer.key --write-out=table --endpoints=:2379,:2379,
:2379 endpoint health
在这里插入图片描述

  • 查看etcd高可用集群列表

etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/peer.crt –
key=/etc/kubernetes/pki/etcd/peer.key --write-out=table --endpoints=:2379,:2379,
:2379 member list
在这里插入图片描述etcd命令二

  • 查看etcd高可用集群leader

etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/peer.crt –
key=/etc/kubernetes/pki/etcd/peer.key --write-out=table --endpoints=:2379,:2379,
:2379 endpoint status
在这里插入图片描述

  • 删除成员

etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/peer.crt –
key=/etc/kubernetes/pki/etcd/peer.key --write-out=table --endpoints=:2379,:2379,
:2379 member remove <MEMBER_ID>

  • 添加成员

etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/peer.crt –
key=/etc/kubernetes/pki/etcd/peer.key --write-out=table --endpoints=:2379,:2379,
:2379 member add <etcd_name> <etcd_http_port>

etcd命令三

  • Etcd集群性能检查

etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/peer.crt –
key=/etc/kubernetes/pki/etcd/peer.key --write-out=table --endpoints=:2379,:2379,
:2379 check perf
在这里插入图片描述

  • 检查结果

执行返回failed表示集群状况不佳

Etcd 数据备份

  • 数据备份

backpath=/data/etcdbackup/
respath=/var/lib/etcd/
mkdir -p /data/etcdbackup/
etcdendpoints=“localhost:2379”
backupfile=“$now.snapshot.db”
export ETCDCTL_API=3
etcdctl --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/peer.crt --key
/etc/kubernetes/pki/etcd/peer.key --endpoints $etcdendpoints snapshot save b a c k p a t h / backpath/ backpath/backupfile

Etcd 数据恢复

  • 停etcd服务

mv /etc/kubernetes/manifests/etcd.yaml /etc/kubernetes/

  • 备份数据

mv /var/lib/etcd /var/lib/etcd.bak

  • 恢复数据

etcdctl --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/peer.crt --key
/etc/kubernetes/pki/etcd/peer.key snapshot restore
<备份文件> --name= --initial-cluster==https://:2380,
=https://:2380,=https://:2380 --initialadvertise-peer-urls=https://:2380 --data-dir=/var/lib/etcd

–data-dir表示etcd数据目录
–name表示etcd集群节点名,一般为主机名也可以是其他,不冲突即可
–initial-advertise-peer-urls表示当前节点ip地址
–initial-cluster表示集群各个节点信息

  • 恢复etcd服务

mv /etc/kubernetes/etcd.yaml /etc/kubernetes/manifests/etcd.yaml

六、Corndns运维

k8s DNS运维

  • Kubernetes 中 Pod 的 DNS 策略有四种类型。

1.Default:Pod 继承所在主机上的 DNS 配置;
2.ClusterFirst:K8s 的默认设置;先在 K8s 集群配置的 coreDNS 中查询,查不到的再去继承自主机的上游
nameserver 中查询;
3.ClusterFirstWithHostNet:对于网络配置为 hostNetwork 的 Pod 而言,其 DNS 配置规则与 ClusterFirst 一致;
4.None:忽略 K8s 环境的 DNS 配置,只认 Pod 的 dnsConfig 设置。

  • resolv.conf
    在部署 pod 的时候,如果用的是 K8s 集群的 DNS,那么 kubelet 在起 pause 容器的时候,会将其 DNS 解析配置初始化成集群内的配置。
    在这里插入图片描述
    coredns 常见问题
  • 添加自定义host

编辑configmap:kubectl edit cm coredns -n kube-system
在这里插入图片描述

  • 添加集群外dns地址

方式一:修改coredns主机上/etc/resolv.conf
重启coredns
方式二:修改配置将forward改为proxy:
kubectl edit cm coredns -n kube-system

  • 对dns抓包

1.corednsPod所在的主机,查看coredns的网卡:
route -n
2.对网卡进行抓包
tcpdump -i <网卡> udp and port 53 -w dns.pcap
在这里插入图片描述

七、Ingress-controller运维

在这里插入图片描述
ingress控制器借助service的服务发现机制实现配置的动态更新以实现Pod的负载均衡机制实现
排查命令

查看ingress-controller日志
kubectl logs -f -n kube-system <pod-name> --tail=10
查看应用访问日志
kubectl exec -it -n kube-system <pod-name> bash
cd /var/log/nginx/
查看nginx错误日志
kubectl exec -it -n kube-system <pod-name> bash
tail -f /var/log/nginx/error.log
查看nginx配置
kubectl exec -it -n kube-system <pod-name> bash
more /etc/nginx/nginx.conf
查看nginx后端服务
需额外开启对应端口:--status-port(http 10246) --stream-port(tcp/udp 10247)

八、Calico运维

Node之间是否允许IPIP协议通过:
在master上 ping calico pod的ip,calico的ipip数据抓包命令为:tcpdump -i 物理网卡 ip proto 4 -n
其中ip proto 4为 ipip的协议号
在这里插入图片描述
在这里插入图片描述如果抓不到数据包,说明Node之间没有放开IPIP数据包。
检查calico相关的pod的状态是否正常:
calico-node所包含的pod必须为running和ready状态
在这里插入图片描述
calico 网络常见排查思路
检查kubelet识别的NodeIP是否正确:
kubelet自动检测本机网卡的IP,有时会识别错误的IP地址,例如docker网卡的地址当做NodeIP
kubec get node -o wide
检查Calico 识别的Node IP是否与Kubelet识别的NodeIP 一致:
在calicoctl所在的Pod中,执行calicoctl get node -o wide
如果出现不一致,可以通过修改calico-node ds的环境变量来配置,图例ens33是网卡名,根据实际环境修改也支持模糊匹配,顺序匹配,比如:
-name: IP_AUTODETECTION_METHOD
value: interface=ens*,enp1sd*
或者
-name: IP_AUTODETECTION_METHOD
value: interface=ens33,eth0 #表明先找ens33网卡,找不到
就找eth0网卡

在这里插入图片描述

 刷新iptables,在Pod无法ping通的Node上刷新iptables规则:
由于可能存在遗留的iptables导致calico无法访问
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
iptables -P FORWARD ACCEPT
查BGP连接状态:
使用netstat -optn|grep 179,查看master与其他node的连接状态是否存在,是否为established
检查建立BGP连接的IP地址是否正确,有时候因为有些Node存在虚IP,或者多网卡会导致建立的BGP连接状态不对。
检查是否关闭源地址校验:
执行sysctl -a | grep rp_filter检查是否关闭地址校验,期望值为0
如果不为0则将下面俩行添加至/etc/sysctl.conf,添加完成后执行sysctl -p
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0

检查selinux&firewalld是否关闭:
selinux及firewalld未关闭可以造成节点ping的通但通过curl或Telnet无法访问端口
1、执行sestatus查看是否关闭selinux,期望selinux关闭状态
如果selinux开启状态则执行setenforce 0临时关闭,永久关闭selinux方法如下:
编辑 /etc/sysconfig/selinux 将SELINUX=enforcing修改成SELINUX=disabled,保持并重启服务器生效
2、执行systemctl status firewalld查看防火墙是否关闭,期望防火墙关闭状态

检查如黑果洞防路火由墙:开启状态,则执行systemctl stop firewalld && systemctl disable firewalld
跨主机访问报错:Failed to connect to 10.xxx.xx.232: Invalid argument,这种错一般都是黑洞路由导致的,可以检查
各个主机路由信息
解决方法:修改成正确的blackhole 路由
在这里插入图片描述

检查MTU:
mtu导致的问题更准确的说是访问小文件时通,访问大数据时不通,因为ip包头占20字节,所以宿主机网卡和tunl0网卡
mtu值如果相差小于20,则可能造成跨节点的宿主机到容器curl不通,ping得通;同节点的宿主机到容器curl得通,ping
得通。(此现场仅存在calico ipip模式下)
例如物理网卡mtu为1450,tunl0 mtu为1440,则会导致ping的通curl不通,需要将calico mtu修改为1430
修改方法:kubectl edit cm -n kube-system calico-config
修改veth_mtu: "1430"保存后重启所有calico node,重启后再次查看tunl0是否为期望值
检查是否存在防火墙规则或策略路由:
1、检查是否配置了networkpolicy
kubectl get networkpolicy -A
2、检查是否配置策略路由
默认只有3条规则,如果有多的,则询问客户是否可以删除多余的路由规则
删除命令ip rule del pref
3、询问客户是否设置了防火墙规则
查看iptables默认规则:
iptables -nvL FORWARD
如果显示policy DROP则执行 iptables -t filter -P FORWARD ACCEPT
开启自动加规则方法:
/usr/lib/systemd/system/docker.service中 在ExecReload=/bin/kill -s HUP $MAINPID下加上一行
ExecPost=/usr/sbin/iptables -t filter -P FORWARD ACCEPT

九、证书更新

拉取脚本
git clone https://github.com/yuyicai/update-kube-cert.git
cd update-kubeadm-cert
chmod 755 update-kubeadm-cert.sh
更新证书
每个主控节点都需执行一次
./update-kubeadm-cert.sh all
查看证书
kubeadm certs check-expiration
备份数据(证书和配置)
cp -rp /etc/kubernetes /etc/kubernetes.bak
mv /etc/kubernetes/*.conf /tmp/
更新admin配置
cp /etc/kubernetes/admin.conf
~/.kube/config
重启etcd、apiserver、controller 、manager、scheduler
将/etc/kubernetes/manifests/临时移出,
完成重启

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

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

相关文章

【C++前缀和】3212. 统计 X 和 Y 频数相等的子矩阵数量|1672

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode3212. 统计 X 和 Y 频数相等的子矩阵数量 难度分&#xff1a;1672 给你一个二维字符矩阵 grid&#xff0c;其中 grid[i][j] 可能是 ‘X’、‘Y’ 或 ‘.’&a…

中秋佳节,科技好礼献团圆!五款数码好物大推荐

中秋节的到来&#xff0c;总是让人充满了对团圆和美好生活的向往。在这个家人团聚、朋友欢聚的美好时刻&#xff0c;除了享受月饼和团圆饭&#xff0c;还可以通过一些先进的数码好物&#xff0c;提升节日的愉悦感和生活的舒适度。从提升运动体验的南卡Runner Pro5&#xff0c;到…

Windows系统 安装 Nacos

使用说明&#xff1a;安装 Nacos 服务端&#xff0c;以单机模式启动&#xff0c;不用集群。 一、下载Nacos Nacos Server 下载 | Nacos 官网 下载解压后&#xff1a; bin&#xff1a;启动脚本&#xff1b;conf&#xff1a;配置文件 这个文件可以修改端口、增加数据库连接等配…

从零到一:为未上架APP开通微信商户支付服务的步骤详解

随着移动支付的普及&#xff0c;微信商户支付已成为众多商家不可或缺的一部分。然而&#xff0c;对于某些仍处于开发阶段或特殊需求下的APP来说&#xff0c;它们可能尚未在应用商店上架&#xff0c;但仍需接入微信支付功能以满足用户需求。本文将为您提供一份详细的微信商户支付…

2024年印尼金融科技报告解读(1) | 印尼金融科技发展现状与挑战

概述 金融科技的创新正加速全球金融普及和经济增长&#xff0c;尤其在东南亚&#xff0c;其影响尤为显著。 印尼作为该区域的经济龙头&#xff0c;凭借其庞大的人口基数和独特的地理位置&#xff0c;对"非接触式"服务和中小企业融资的需求迅猛增长&#xff0c;成为数…

mp3和mp4区别是什么?音视频转换,用这2个工具就够了

在刷视频的时候&#xff0c;在看电影的时候&#xff0c;在听歌的时候……我们经常能听到“mp3”、“mp4”这两种格式的名字。它们是什么格式&#xff1f;mp3和mp4区别是什么&#xff1f;我们能做什么&#xff1f; mp3是一种流行的音频编码格式&#xff0c;以其高效的压缩算法著…

屏幕空间UV 警戒线

屏幕空间UV 警戒线 屏幕UV已经抗锯齿

ueditor抓取图片

在ueditor.all.js文件中 修改catchremoteimage方法 原来的: 修改后: function catchremoteimage(imgs, callbacks) { //创建一个请求var oReq = new XMLHttpRequest() //获取请求地址前缀,根据自身项目获取const baseURL = http://uat.********* //url为请求地址根路径+具…

openGauss 数据库管理工具:DataKit 6.0 部署与配置实战

目录 一、DataKit简述 二、部署概要 三、系统规划 四、软件环境准备 1、关闭防火墙 2、配置时间同步 3、禁用 SELinux 4、关闭RemoveIPC 5、字符集设置 6、安装依赖包 五、openGauss DataKit部署与配置 1、openGauss 安装与配置 1.openGauss参数配置 2.重启 open…

React Native 0.76,New Architecture 将成为默认模式,全新的 RN 来了

关于 React Native 的 New Architecture 概念&#xff0c;最早应该是从 2018 年 RN 团队决定重写大量底层实现开始&#xff0c;因为那时候 React Native 面临各种结构问题和性能瓶颈&#xff0c;最终迫使 RN 团队开始进行重构。 而从 React Native 0.68 开始&#xff0c;New A…

第三次去银行办事,核心是犯了抓不住重点这个毛病

手机银行不小心输错了两次密码&#xff0c;然后就限制了交易&#xff0c;只能在柜台操作。 由此引发了比如提示密码错误、定期转活期、转账等功能的异常。 前两次去银行&#xff0c;竟然只是去解决了这些附带问题。 核心问题是限制非柜面交易啊。 哎 这就是抓不住重点&…

数据结构-堆-详解

数据结构-堆-详解 1.性质大根堆小根堆 2.实现2.1struct Heap、HeapInit、HeapDestroy2.2HeapPushAdjustUp 2.3HeapPopAdjustDown 2.4HeapTop、HeapSize、HeapEmpty 3.应用3.1堆排建堆排序 3.2TopK问题 1.性质 堆是一种特殊的完全二叉树&#xff0c;其父节点总是不大于/不小于 …

手把手教你使用亚马逊云服务器创建EC2实例

陈老老老板&#x1f934; &#x1f9d9;‍♂️本文专栏&#xff1a;生活&#xff08;主要讲一下自己生活相关的内容&#xff09;生活就像海洋,只有意志坚强的人,才能到达彼岸。 &#x1f9d9;‍♂️本文简述&#xff1a;如何使用亚马逊云服务器创建EC2实例。 &#x1f9d9;‍♂…

CGAL 概念模型及Traits 概述

CGAL 概念模型及Traits 本节释了概念Concepts 、模型Models以及Traits类的含义。 CGAL Concepts and Models 概念Concepts是对类型的一组要求&#xff0c;即它具有特定的嵌套类型、特定的成员函数或具有特定的以该类型为参数的自由函数。概念的模型 Models是一个满足概念需求…

大厂最爱问的MVCC,到底是个啥?

引言 多版本并发控制&#xff08;MVCC&#xff09;是一种用于提高数据库并发性能的技术&#xff0c;尤其在处理高并发读写操作时极为有效。MVCC通过维护数据的多个版本来避免读写冲突&#xff0c;使得读操作无需阻塞写操作&#xff0c;写操作也不会影响读操作。下面&#xff0…

内网环境使用Docker部署Qwen2模型-vLLM篇

在此之前&#xff0c;我们已成功利用Docker与Ollama框架&#xff0c;在内网环境中部署了Qwen2模型。下面我们再来看一下使用Docker与vLLM框架部署Qwen2模型。 准备vLLM镜像 在一台具备网络环境的机器上执行以下命令&#xff0c;拉取vLLM的镜像&#xff1a; # 官方镜像 docke…

探索MySQL数据查询语言的无限魅力:精准检索,驾驭数据海洋的钥匙

作者简介&#xff1a;我是团团儿&#xff0c;是一名专注于云计算领域的专业创作者&#xff0c;感谢大家的关注 座右铭&#xff1a; 云端筑梦&#xff0c;数据为翼&#xff0c;探索无限可能&#xff0c;引领云计算新纪元 个人主页&#xff1a;团儿.-CSDN博客 目录 前言&#…

可视掏耳勺真的有作用吗?测评热门可视掏耳勺

随着现代人对个护健康的日益关注&#xff0c;可视掏耳勺这掏耳神器逐渐风靡市场&#xff0c;但同时也伴随着部分质疑的声音&#xff0c;甚至被贴上“智商税”的标签。因为有不少消费者使用时出现画质低清、材质不舒服等现象&#xff0c;那么&#xff0c;可视掏耳勺真的好用吗&a…

上海亚商投顾:沪指再创阶段新低 全市场下跌个股超4400只

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指9月6日冲高回落&#xff0c;午后续创调整新低&#xff0c;创业板指跌1.7%。券商、保险等金融股逆势走强&a…

快速入门游戏领域,开发游戏需要哪些技术?

在这个充满创意和技术的时代&#xff0c;游戏行业成为众多创新人才追求梦想的热土。对于准备踏入这个充满挑战与机遇的领域的新人来说&#xff0c;了解游戏开发流程是至关重要的。 游戏市场蓬勃发展&#xff0c;游戏行业未来行情可观&#xff0c;在这个充满创意和技术的时代&a…