马哥亲讲k8s集群搭建

news2024/10/8 17:45:23

文章目录

  • Docker和K8s安装
    • 1.docker安装
    • 2.安装cri-dockerd
    • 3.安装kubelet、kubeadm、kubectl
    • 4.整合kubelet和cri-dockerd
  • 集群节点部署
    • 1.配置国内镜像站
    • 2.方式一:命令初始化
      • 1.kubeadm init
      • 2.保存初始化token
      • 3.拷贝/etc/kubernetes/admin.conf
      • 4.部署网络插件
      • 5.kubectl get nodes
      • 6.添加集群高可用master节点
      • 7.添加worker节点
        • 解决woker节点一直NotReady
          • 1.主机名不能解析
          • 2.woker节点网络插件异常
          • 3.拷贝Docker镜像的步骤
      • 8.查看所有节点是否Ready
      • 9.kubeadm reset
  • 部署Add-ons
    • 部署OpenELB
      • 解决 ImagePullBackOff
      • 配置示例:layer2模式
    • 部署Ingress Nginx
    • 部署Metrics Server
    • 部署Kuboard
  • 部署Nginx
    • 再次解决 ImagePullBackOff
      • 1.查看详细错误
      • 2.登录dockerhub
      • 3.配置DNS
      • 4.跟踪服务日志
      • 5.阿里云镜像加速器
  • 任意节点执行kubectl
    • 1.拷贝/etc/kubernetes/admin.conf
    • 2.配置环境变量

官方中文帮助文档:https://kubernetes.io/zh-cn/docs/home/

Docker和K8s安装

集群安装之前,主机环境需要初始化的步骤:

各主机需要预设的系统环境如下:

 (1)借助于chronyd服务(程序包名称chrony)设定各节点时间精确同步;
      apt install chrony
      systemctl start chrony.service  

 (2)通过DNS完成各节点的主机名称解析;

 (3)各节点禁用所有的Swap设备;
     swapoff -a
     systemctl --type swap
     systemctl mask SWAP_DEV

 (4)各节点禁用默认配置的iptables防火墙服务;
      ufw disable
      ufw status

1.docker安装

ubuntu22.04

sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get -y update

列出可用的 Docker 版本

# Debian/Ubuntu
apt-cache madison docker-ce

# CentOS/RHEL
yum list docker-ce --showduplicates | sort -r

在这里插入图片描述

sudo apt-get -y install docker-ce=5:23.0.5-1~ubuntu.22.04~jammy

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

2.安装cri-dockerd

下载地址:https://github.com/Mirantis/cri-dockerd

curl -LO https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd_0.3.1.3-0.ubuntu-jammy_amd64.deb
dpkg -i ./cri-dockerd_0.3.1.3-0.ubuntu-jammy_amd64.deb
systemctl status cri-docker.service

在这里插入图片描述

3.安装kubelet、kubeadm、kubectl

apt-get update && apt-get install -y apt-transport-https
curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.27/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.27/deb/ /" |
    tee /etc/apt/sources.list.d/kubernetes.list
apt-get update
apt install -y kubelet kubeadm kubectl

安装指定版本

apt-get install -y kubelet-1.26.4-00 kubeadm=1.26.4-00 kubectl=1.26.4-00
systemctl enable kubelet

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

4.整合kubelet和cri-dockerd

1.配置cri-dockerd
vim /lib/systemd/system/cri-docker.service

ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --cni-bin-dir=/opt/cni/bin --cni-cache-dir=/var/lib/cni/cache --cni-conf-dir=/etc/cni/net.d
systemctl daemon-reload && systemctl restart cri-docker.service

2.配置kubelet
编辑文件/etc/sysconfig/kubelet

KUBELET_KUBEADM_ARGS="--container-runtime=remote --container-runtime-endpoint=/run/cri-dockerd.sock"

集群节点部署

 kubeadm config images list

在这里插入图片描述

1.配置国内镜像站

配置国内的阿里云Mirror站点下载Image

kubeadm config images list --image-repository=registry.aliyuncs.com/google_containers

在这里插入图片描述

docker image pull registry.aliyuncs.com/google_containers/pause:3.6
docker image tag registry.aliyuncs.com/google_containers/pause:3.6 registry.k8s.io/pause:3.6

在这里插入图片描述

kubeadm config images pull --cri-socket unix:///run/cri-dockerd.sock --image-repository=registry.aliyuncs.com/google_containers

在这里插入图片描述

registry.aliyuncs.com/google_containers/kube-apiserver:v1.27.16
registry.aliyuncs.com/google_containers/kube-controller-manager:v1.27.16
registry.aliyuncs.com/google_containers/kube-scheduler:v1.27.16
registry.aliyuncs.com/google_containers/kube-proxy:v1.27.16
registry.aliyuncs.com/google_containers/pause:3.9
registry.aliyuncs.com/google_containers/etcd:3.5.12-0
registry.aliyuncs.com/google_containers/coredns:v1.10.1

2.方式一:命令初始化

1.kubeadm init

kubeadm init \
--control-plane-endpoint "kubeapi.lei.com" \
--kubernetes-version=v1.27.16 \
--pod-network-cidr=10.244.0.0/16 \
--service-cidr=10.96.0.0/12 \
--token-ttl=0 \
--cri-socket unix:///run/cri-dockerd.sock \
--upload-certs \
--image-repository=registry.aliyuncs.com/google_containers

OK 搞定! initialized successfully!
在这里插入图片描述

2.保存初始化token

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of the control-plane node running the following command on each as root:

  kubeadm join kubeapi.lei.com:6443 --token djh1ki.bmtathyph8hn0h4o \
	--discovery-token-ca-cert-hash sha256:59996c44f538ef715a94cb7d2f46e55f2db6653f41cba56368389cf726734772 \
	--control-plane --certificate-key 2d8b0af288b5433cb02b1c8f4ded5439434c81494ab3ac86c0b716871dca6fdd

Please note that the certificate-key gives access to cluster sensitive data, keep it secret!
As a safeguard, uploaded-certs will be deleted in two hours; If necessary, you can use
"kubeadm init phase upload-certs --upload-certs" to reload certs afterward.

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join kubeapi.lei.com:6443 --token djh1ki.bmtathyph8hn0h4o \
	--discovery-token-ca-cert-hash sha256:59996c44f538ef715a94cb7d2f46e55f2db6653f41cba56368389cf726734772 

3.拷贝/etc/kubernetes/admin.conf

准备配置文件/etc/kubernetes/admin.conf

root@master01:~# mkdir .kube
root@master01:~# cp /etc/kubernetes/admin.conf .kube/config

出现以下配置信息说明配置文件加载成功!
在这里插入图片描述

kubectl config view --raw
#查看最原始的信息,私钥证书等

在这里插入图片描述

4.部署网络插件

在这里插入图片描述
https://github.com/flannel-io/flannel

在这里插入图片描述

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

在这里插入图片描述
查看网络插件是否部署成功

kubectl get pods -n kube-flannel

这里要多等一会儿,我第一次等了31m,第二次等了28m.
在这里插入图片描述

5.kubectl get nodes

查看集群节点,我的master01已经ready了

kubectl get nodes

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

kubectl get pods -n kube-system

status都是running状态时,就表示已经就绪了。
在这里插入图片描述

6.添加集群高可用master节点


You can now join any number of the control-plane node running the following command on each as root:

  kubeadm join kubeapi.lei.com:6443 --token ggvxkc.proki24n1vumyjno \
	--discovery-token-ca-cert-hash sha256:2c1b8a80dc56b42091798eac991376316290c9baf15507aaade00fab7707d952 \
	--control-plane --certificate-key ecab8bceeb40704066860e9b60219e4d9d98ce0d8f2d34ffc7746ddd54669453

Please note that the certificate-key gives access to cluster sensitive data, keep it secret!
As a safeguard, uploaded-certs will be deleted in two hours; If necessary, you can use
"kubeadm init phase upload-certs --upload-certs" to reload certs afterward.

7.添加worker节点

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join kubeapi.lei.com:6443 --token ggvxkc.proki24n1vumyjno \
	--discovery-token-ca-cert-hash sha256:2c1b8a80dc56b42091798eac991376316290c9baf15507aaade00fab7707d952

在node1节点上执行以下命令

kubeadm join kubeapi.lei.com:6443 --token ggvxkc.proki24n1vumyjno \
        --discovery-token-ca-cert-hash sha256:2c1b8a80dc56b42091798eac991376316290c9baf15507aaade00fab7707d952  --cri-socket unix:///run/cri-dockerd.sock

新增第一个node01节点到集群中
在这里插入图片描述

查看集群节点
在这里插入图片描述

解决woker节点一直NotReady

添加node01和node02后它们的status一直是NotReady,苦思良久,不得其解。
在这里插入图片描述

1.主机名不能解析

这是最白痴的错误,无意中看到了这条消息“unable to resolve host node01: Name or service not known”不能解析主机名,哦哦。原来是hosts文件配置有误。
在这里插入图片描述
node01的主机名没有有映射到相应的主机上ip上
vim /etc/hosts

10.0.0.206 k8s-master01.lei.com k8s-master01 kubeapi.lei.com
10.0.0.207 k8s-node01.lei.com k8s-node01
10.0.0.208 k8s-node02.lei.com k8s-node02
10.0.0.209 k8s-node03.lei.com k8s-node03
2.woker节点网络插件异常

node02节点添加
在这里插入图片描述
node02不知道为啥很快就ready,node01和node03就是死活都不ready啊,我郁闷啊·····。
在这里插入图片描述
后来还是寻见了端倪,还是网络插件flannel的问题。
在这里插入图片描述于是将node02的两个flannel相关镜像,拷贝到node01和node03上吧。

3.拷贝Docker镜像的步骤
方法1:使用 docker save 和 docker load
    第一步:docker save -o my_image.tar my_image:latest
    
    第二步:scp image.tar user@target_host:/path/to/destination
    
    第三步:docker load -i /path/to/destination/image.tar  

第一步:保存镜像为 tar 文件
保存镜像为 tar 文件在源主机上,将 Docker镜像保存为一个 .tar 文件:

docker save -o image.tar flannel/flannel:v0.25.6

在这里插入图片描述
第二步:传输镜像文件
传输镜像文件,你可以使用 scp、rsync 或其他工具将镜像文件传输到目标主机。

scp ./image.tar root@10.0.0.207:/root

第三步:在目标主机上加载镜像
在目标主机上加载镜像,通过 docker load 将镜像重新加载到 Docker:

docker load -i ./image.tar

在这里插入图片描述

node03节点添加
在这里插入图片描述
在这里插入图片描述

8.查看所有节点是否Ready

乖乖啊,终于都Ready了。折磨了我一天一夜。
在这里插入图片描述

9.kubeadm reset

如果初始化不成功,可能需要重置配置,可使用以下命令

 重置节点:
    kubeadm reset 命令
    
      kubeadm reset --cri-socket unix:///run/cri-dockerd.sock

      rm -rf /etc/kubernetes/ /var/lib/kubelet /var/lib/dockershim /var/run/kubernetes /var/lib/cni /etc/cni/net.d /var/lib/etcd /run/flannel/

从集群中删除节点:

kubectl delete node <node-name>

部署Add-ons

部署OpenELB

OpenELB 是一个开源的云原生负载均衡器实现,可以在基于裸金属服务器、边缘以及虚拟化的 Kubernetes 环境中使用 LoadBalancer 类型的 Service 对外暴露服务。

kubectl apply -f https://raw.githubusercontent.com/openelb/openelb/master/deploy/openelb.yaml

在这里插入图片描述
报错“raw.githubusercontent.com was refused …” 这个错误通常表示无法连接到 raw.githubusercontent.com,这就会导致“ImagePullBackOff”
在这里插入图片描述
我的解决办法是设置了Google的DNS服务器8.8.8.8

解决 ImagePullBackOff

在这里插入图片描述修改/etc/resolv.conf的nameserver为8.8.8.8后,status都为Running了
在这里插入图片描述
认openelb-manager Pod已经处于Running状态,且容器已经Ready。
在这里插入图片描述
此时openelb已经部署完了。

配置示例:layer2模式

vim eip-pool.yaml

apiVersion: network.kubesphere.io/v1alpha2
kind: Eip
metadata:
  name: eip-pool
  annotations:
    eip.openelb.kubesphere.io/is-default-eip: "true"
spec:
  address: 10.0.0.51-10.0.0.80
  protocol: layer2
  interface: ens33
  disable: false
kubectl apply -f eip-pool.yaml

在这里插入图片描述
看到一下信息说明部署完成
在这里插入图片描述
创建Deployment和LoadBalancer Service,测试地址池是否已经能正常向Service分配LoadBalancer IP。

kubectl create deployment demoapp --image=ikubernetes/demoapp:v1.0 --replicas=2

部署Ingress Nginx

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.7.1/deploy/static/provider/cloud/deploy.yaml

在这里插入图片描述
运行如下命令,确认部署的结果状态。后面的命令结果中,ingress-nginx-controller相关的Pod转为Runing状态,即为部署成功。

kubectl get pods -n ingress-nginx

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

运行下面的命令,查看相关Service的状态信息。如果部署了OpenELB,其External-IP应该可以获得EIP可用分配范围内的一个地址,类似如下命令及其结果所示。

kubectl get services -n ingress-nginx

在这里插入图片描述
我这里External-IP是pending。后续跟进,先前进。

部署Metrics Server

kubectl apply -f https://raw.githubusercontent.com/iKubernetes/learning-k8s/master/metrics-server/components.yaml

在这里插入图片描述
运行如下命令,确认部署的结果状态。后面的命令结果中,metrics-server相关的Pod转为Runing状态,即为部署成功。

kubectl get pods -n kube-system -l k8s-app=metrics-server

在这里插入图片描述
运行下面的命令,查看相关Service的状态信息。

kubectl get services -n kube-system -l k8s-app=metrics-server

在这里插入图片描述

部署Kuboard

kubectl apply -f https://raw.githubusercontent.com/iKubernetes/learning-k8s/master/Kuboard/deploy.yaml

部署Nginx

 kubectl create deployment nginx --image=nginx
 kubectl expose deployment nginx --port=80 --type=NodePort

在这里插入图片描述
在这里插入图片描述
一条命令整个集群的四台机器同时部署nginx成功了
在这里插入图片描述

再次解决 ImagePullBackOff

服了这个ImagePullBackOff状态,上面已经配置了Google的DNS,主机上使用curl和ping都能正常响应,但这些个镜像就是拉不下来。反反复复配置/etc/resolv.conf,就是不生效。浪费老子的生命~~
在这里插入图片描述

这次解决过程,我轮番上阵了三个方案
  1.注册dockerhub,使用用户名登录到www.docker.com/products/docker-hub
  2.配置DNS到/etc/netplan/00-installer-config.yaml
  3.配置阿里云镜像加速器

最后上述方案都用上了,也不知道具体是哪一项生效了,反正配置完就能正常pull镜像了。奇怪!
遇到的 ImagePullBackOff 通常是由于 Kubernetes 无法拉取指定的镜像。你可以尝试以下几步解决:
  1.检查镜像名称:确认镜像名称和标签是否正确。
  2.认证问题:确保你有权限访问该镜像。如果使用私有镜像仓库,需要配置正确的凭证。
  3.网络问题:确保你的集群可以访问镜像仓库,检查网络连接。
  4.查看事件:使用 kubectl describe pod <pod-name> 命令查看详细错误信息。

1.查看详细错误

kubectl describe pod nginx-77b4fdf86c-bbmf2

在这里插入图片描述事件信息显示“Error response from daemon: Get “https://registry-1.docker.io/v2/”:”
当使用curl访问这个地址时,提示没有权限访问,(实际上我登录了dockerhub后,镜像倒是拉取成功了,但这个地址还是报错unauthorized,反正错误奇奇怪怪,解决的也糊糊涂涂).
在这里插入图片描述

2.登录dockerhub

https://www.docker.com/products/docker-hub/
于是我注册了dockerhub的用户,在节点上登录了
在这里插入图片描述
再次查看事件信息时,就能成功了pull镜像了。
在这里插入图片描述
反正登录了dockerhub后nginx就Running了
在这里插入图片描述

3.配置DNS

在/etc/resolv.conf里配置nameservers,会被系统重置掉(后面补充原因)。

还是在/etc/netplan/00-installer-config.yaml 配置nameservers吧

root@k8s-master01:~# cat /etc/netplan/00-installer-config.yaml 
# This is the network config written by 'subiquity'
network:
  ethernets:
    ens33:
      dhcp4: no
      addresses: [10.0.0.206/24]
      gateway4: 10.0.0.2
      nameservers:
        addresses: 
          - 180.76.76.76
          - 8.8.8.8
  version: 2
  renderer: NetworkManager

4.跟踪服务日志

以上配置完成后,需要restart 重启docker和kubelet的service服务。如果起不来,可以使用以下命令跟踪日志。
使用以下命令跟踪服务日志,可以找到服务启动失败的原因

sudo journalctl -u docker.service -f

在这里插入图片描述

5.阿里云镜像加速器

通过过修改daemon配置文件/etc/docker/daemon.json来使用加速器。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://s8gkwcex.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

任意节点执行kubectl

目前worker节点上是执行不了kubectl命令的
在这里插入图片描述

1.拷贝/etc/kubernetes/admin.conf

将master节点中/etc/kubernetes/admin.conf拷贝到需要运行的服务器的/etc/kubernetes目录中

scp /etc/kubernetes/admin.conf root@k8s-node01:/etc/kubernetes

在这里插入图片描述

2.配置环境变量

2.在对应的服务器上配置环境变量

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile

之后就可以在node01节点上执行kubectl命令了。其他节点以此类推
在这里插入图片描述

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

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

相关文章

reactNative本地调试localhost踩坑

本地调试请求localhost的时候 1.要和电脑处在同一局域网下面&#xff08;同一个wifi&#xff09; 2.把baseURL的localhost改成命令行中ipconfig查询到的IPv4 地址 . . . . . . . . . . . . : &#xff08;例如&#xff09;192.168.1.103 如果报错Net Work Error&#xff0c;可…

算法知识点————贪心

贪心&#xff1a;只考虑局部最优解&#xff0c;不考虑全部最优解。有时候得不到最优解。 DP&#xff1a;考虑全局最优解。DP的特点&#xff1a;无后效性&#xff08;正在求解的时候不关心前面的解是怎么求的&#xff09;&#xff1b; 二者都是在求最优解的&#xff0c;都有最优…

如何扫描HTTP代理:步骤与注意事项

HTTP代理是一个复杂的过程&#xff0c;通常用于寻找可用的代理服务器&#xff0c;以便在网络中实现匿名或加速访问。虽然这个过程可以帮助用户找到适合的代理&#xff0c;但也需要注意合法性和道德问题。本文将介绍如何扫描HTTP代理&#xff0c;并提供一些建议和注意事项。 什…

剖析十大经典二叉树题目:C 语言代码实现与深度解读

&#x1f4af;前言 二叉树是数据结构中的重要概念&#xff0c;在算法和编程中有着广泛的应用。以下是十大经典的二叉树题目及其解析与 C 语言代码实现&#xff0c;同时也会说明题目来源。 二叉树的基本概念&#x1f449;【剖析二叉树】 目录 &#x1f4af;二叉树的遍历 ⭐前…

AI大模型真的是大龄程序员的新的出路吗?_大龄程序员ai创业

前言 在IT行业的高速运转中&#xff0c;许多资深程序员到了一定年龄后&#xff0c;会发现自己陷入了职业发展的瓶颈。尤其是在北京这样的大厂&#xff0c;业务波动、部门调整以及裁员风险&#xff0c;都让“40”的程序员们感受到了前所未有的压力。当昔日的技术热情逐渐消退&a…

在C#中使用适配器Adapter模式和扩展方法解决面向对象设计问题

之前有阵子在业余时间拓展自己的一个游戏框架&#xff0c;结果在实现的过程中发现一个设计问题。这个游戏框架基于MonoGame实现&#xff0c;在MonoGame中&#xff0c;所有的材质渲染&#xff08;Texture Rendering&#xff09;都是通过SpriteBatch类来完成的。举个例子&#xf…

新书速览|你好,C++

《你好&#xff0c;C》 本书内容 《你好&#xff0c;C》主要介绍C开发环境的搭建、基础语法知识、面向对象编程思想以及标准模板库的应用&#xff0c;特别针对初学者在学习C过程中可能遇到的难点提供了解决方案。全书共分13章&#xff0c;以一个工资程序的不断优化和完善为线索…

ChatGPT助力文献综述写作:提升效率与写作技巧!

文献综述在论文写作中占有举足轻重的地位。它不仅帮助我们梳理已有的研究成果&#xff0c;还能为自己的研究奠定基础。许多同学在撰写文献综述时常常感到头疼&#xff1a;如何处理海量的信息&#xff1f;如何将不同的观点有条理地整合起来&#xff1f;再加上学术语言的高要求&a…

定时任务。

引入 1.启动类上加上注解 2.新建一个定时任务的管理类&#xff0c;交给Spring管理 案例 案例1&#xff1a;fixedRate //上次任务开始到下次任务开始的时间间隔为5秒 //每隔5秒执行一次,不需要等上个任务执行完 Scheduled(fixedRate 5000) public void mask01() throws Inte…

python:web自动化工具selenium安装和配置(1)

UI自动化测试 UI自动化测试&#xff08;User Interface Automation Testing&#xff09;是一种通过编写脚本或使用自动化测试工具&#xff0c;对界面&#xff08;UI&#xff09;进行自动化测试的方法。原理主要是模拟用户打开客户端或网页的UI界面&#xff0c;自动化执行用户界…

【Java 问题】基础——泛型

接上文 泛型 47.Java 泛型了解么&#xff1f;什么是类型擦除&#xff1f;介绍一下常用的通配符&#xff1f; 47.Java 泛型了解么&#xff1f;什么是类型擦除&#xff1f;介绍一下常用的通配符&#xff1f; 什么是泛型&#xff1f; Java 泛型&#xff08;generics&#xff09;是…

REINFORCEMENT LEARNING THROUGH ACTIVE INFERENCE

摘要 强化学习&#xff08;RL&#xff09;的核心原则是智能体寻求最大化累积奖励之和。相比之下&#xff0c;主动推理&#xff0c;认知和计算神经科学中的一个新兴框架&#xff0c;提出代理人采取行动&#xff0c;以最大限度地提高有偏见的生成模型的证据。在这里&#xff0c;…

上门安装维修系统小程序开发详解及源码示例

随着智能家居和设备的普及&#xff0c;消费者对上门安装和维修服务的需求日益增加。为了满足这一市场需求&#xff0c;开发一款上门安装维修系统小程序成为了一种有效的解决方案。本文将详细介绍上门安装维修系统小程序的开发过程&#xff0c;并提供一个简单的源码示例&#xf…

人工智能的未来

引言 人工智能的未来发展将是科技与人类社会深度融合的过程。随着技术的不断进步&#xff0c;AI将在全球经济、文化、政治及道德伦理等领域产生深远影响。本文将探讨人工智能在未来可能的技术进步、应用领域、社会影响、伦理挑战&#xff0c;以及对全球未来的展望。 一、技术前…

数据结构之——二叉树

一、二叉树的基本概念 二叉树是数据结构中的重要概念&#xff0c;每个节点最多有两个子树&#xff0c;分别为左子树和右子树。这种结构具有明确的层次性和特定的性质。 二叉树有五种基本形态&#xff1a; 空二叉树&#xff1a;没有任何节点。只有一个根结点的二叉树&#xff…

【HTTPS】深入解析 https

我的主页&#xff1a;2的n次方_ 1. 背景介绍 在使用 http 协议的时候是不安全的&#xff0c;可能会出现运营商劫持等安全问题&#xff0c;运营商通过劫持 http 流量&#xff0c;篡改返回的网页内容&#xff0c;例如广告业务&#xff0c;可能会通过 Referer 字段 来统计是…

kubernetes get pods的STATUS字段显示ImagePullBackOff 的解决办法

问题&#xff1a; [rootmaster ingress]# kubectl -n ingress-nginx get pods NAME READY STATUS RESTARTS AGE ingress-nginx-admission-create-mcrc6 0/1 ImagePullBackOff 0 37m ingress-…

掌握RocketMQ——基本概念和系统架构

简述RcoketMQ 概念&#xff1a;RocketMQ是一个开源的分布式消息中间件&#xff0c;由阿里巴巴开发并贡献给Apache软件基金会。它用于处理高吞吐量、低延迟的消息传递&#xff0c;并广泛应用于现代分布式系统中。 1 基本概念 1.1 消息 (Message) 概念&#xff1a;消息是信息传…

自定义协议以及序列化和反序列化

我们知道TCP是全双工的&#xff0c;可以同时进行发收&#xff0c;因为他有一个发送缓冲区和一个接收缓冲区 我们使用write其实是把数据拷贝到发送缓冲区&#xff0c;使用read接收缓冲区的数据&#xff0c;其实是把数据拷贝到文件缓冲区里&#xff0c;发送的过程中&#xff0c;我…

脸书(Facebook)高效开发国外客户的6个技巧

Facebook作为全球使用人数最多的社媒平台&#xff0c;全球三分之一的人都在用。做外贸的话基本上是必须要去掌握的一个平台&#xff0c;因为通过Facebook是可以开发到很多其他渠道平时开发不到的优质客户的。 Facebook跟LinkedIn不同&#xff0c;LinkedIn比较偏向于大B的客户&…