k8s集群安装Istio过程记录及问题总结

news2024/11/18 17:54:33

目录

  • 一、介绍
  • 二、部署Helm
  • 三、部署Istio
    • 部署官方示例 Bookinfo
  • 四、部署Kali
  • Bug 记录
  • 部署Bookinfo demo失败

一、介绍

这篇文章记录一下k8s集群安装Helm、Istio 和 Kiali,方便学习相关概念。
前提需要k8s集群:
在这里插入图片描述
可参考:Arm64架构(MacBookPro M1)虚拟机安装k8s1.27.3版本记录及问题总结

Helm是k8s机群的包管理器,我们可以通过Helm在k8s集群安装应用。
Istio是一个功能强大的服务网格平台,为微服务架构提供了一套丰富的工具和功能,以简化和增强服务之间的通信、安全性和可观察性。
Kiali 仪表板展示了网格的概览以及 Bookinfo 示例应用的各个服务之间的关系。 它还提供过滤器来可视化流量的流动。

Helm版本支持策略:https://helm.sh/zh/docs/topics/version_skew/
Istio 版本支持策略:https://istio.io/latest/zh/docs/releases/supported-releases/
在这里插入图片描述

在这里插入图片描述

二、部署Helm

官方文档:https://helm.sh/zh/docs/intro/quickstart/
Helm安装方式很简单,只需要执行一条命令,执行相应脚本完成安装。如果你需要安装对应版本,每个Helm 版本都提供了各种操作系统的二进制版本:https://github.com/helm/helm/releases,这些版本可以手动下载和安装,然后解压,将helm移动到需要的目录中(mv linux-amd64/helm /usr/local/bin/helm)

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
[root@k8s-master ~]# curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 11345  100 11345    0     0   8068      0  0:00:01  0:00:01 --:--:--  8063
[WARNING] Could not find git. It is required for plugin installation.
Downloading https://get.helm.sh/helm-v3.12.1-linux-arm64.tar.gz
Verifying checksum... Done.
Preparing to install helm into /usr/local/bin
helm installed into /usr/local/bin/helm
[root@k8s-master ~]# helm version
version.BuildInfo{Version:"v3.12.1", GitCommit:"f32a527a060157990e2aa86bf45010dfb3cc8b8d", GitTreeState:"clean", GoVersion:"go1.20.4"}
[root@k8s-master ~]# helm ls
NAME    NAMESPACE       REVISION        UPDATED STATUS  CHART   APP VERSION
[root@k8s-master ~]# helm repo add bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories
[root@k8s-master ~]# 
[root@k8s-master ~]# helm repo update     
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "bitnami" chart repository
Update Complete. ⎈Happy Helming!⎈

三、部署Istio

官方文档:https://istio.io/latest/zh/docs/setup/getting-started/
Istio也可以执行脚本安装,但是我的网络不通没办法。

[root@k8s-master ~]# curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.18.0
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   102  100   102    0     0    359      0 --:--:-- --:--:-- --:--:--   359
  0     0    0     0    0     0      0      0 --:--:--  0:01:36 --:--:--     0
curl: (56) OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104
[root@k8s-master ~]# cat  >> /etc/hosts << EOF
> 75.2.60.5 istio.io
> EOF
> [root@k8s-master ~]# curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.18.0
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   102  100   102    0     0    337      0 --:--:-- --:--:-- --:--:--   337
  0     0    0     0    0     0      0      0 --:--:--  0:01:32 --:--:--     0
curl: (56) OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104

只能下载二进制包,上传到虚拟机进行部署。
二进制包下载:https://github.com/istio/istio/releases/tag/1.18.0
下载对应版本
在这里插入图片描述
使用tar -zxvf命令进行解压,进入文件夹,将istio命令加入环境变量。
采用 demo 配置组合。 它包含了一组专为测试准备的功能集合,另外还有用于生产或性能测试的配置组合。

cd istio-1.18.0
export PATH=$PWD/bin:$PATH
istioctl install --set profile=demo -y

并且给命名空间添加标签,指示 Istio 在部署应用的时候,自动注入 Envoy 边车(Sidecar)代理:

kubectl label namespace default istio-injection=enabled

部署官方示例 Bookinfo

然后安装官方的Demo示例:

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
[root@k8s-master ~]# ll | grep istio
-rw-r--r--. 1 root root 25307383 7月   5 23:16 istio-1.18.0-linux-arm64.tar.gz
[root@k8s-master ~]# tar -zxvf istio-1.18.0-linux-arm64.tar.gz 
[root@k8s-master ~]# ll | grep istio
drwxr-x---. 6 root root      115 6月   7 16:01 istio-1.18.0
-rw-r--r--. 1 root root 25307383 7月   5 23:16 istio-1.18.0-linux-arm64.tar.gz
[root@k8s-master ~]# cd istio-1.18.0
[root@k8s-master istio-1.18.0]# ls
bin  LICENSE  manifests  manifest.yaml  README.md  samples  tools
[root@k8s-master istio-1.18.0]# export PATH=$PWD/bin:$PATH
[root@k8s-master istio-1.18.0]# istioctl install --set profile=demo -y
✔ Istio core installed                                                                                                                                                                      
✔ Istiod installed                                                                                                                                                                          
✔ Egress gateways installed                                                                                                                                                                 
✔ Ingress gateways installed                                                                                                                                                                
✔ Installation complete                                                                                                                                                                     Making this installation the default for injection and validation.
[root@k8s-master istio-1.18.0]# kubectl label namespace default istio-injection=enabled
namespace/default labeled
[root@k8s-master istio-1.18.0]# kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
service/details created
serviceaccount/bookinfo-details created
deployment.apps/details-v1 created
service/ratings created
serviceaccount/bookinfo-ratings created
deployment.apps/ratings-v1 created
service/reviews created
serviceaccount/bookinfo-reviews created
deployment.apps/reviews-v1 created
deployment.apps/reviews-v2 created
deployment.apps/reviews-v3 created
service/productpage created
serviceaccount/bookinfo-productpage created
deployment.apps/productpage-v1 created
[root@k8s-master istio-1.18.0]# 

应用很快会启动起来。当每个 Pod 准备就绪时,Istio 边车将伴随应用一起部署。

[root@k8s-master istio-1.18.0]# kubectl get services
NAME          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
details       ClusterIP   10.111.93.162    <none>        9080/TCP   12m
kubernetes    ClusterIP   10.96.0.1        <none>        443/TCP    18h
productpage   ClusterIP   10.97.94.189     <none>        9080/TCP   12m
ratings       ClusterIP   10.106.155.115   <none>        9080/TCP   12m
reviews       ClusterIP   10.106.49.5      <none>        9080/TCP   12m
[root@k8s-master istio-1.18.0]# kubectl get pods
NAME                              READY   STATUS    RESTARTS   AGE
details-v1-7c7dbcb4b5-jx866       2/2     Running   0          12m
productpage-v1-664d44d68d-v722l   2/2     Running   0          12m
ratings-v1-844796bf85-kktgq       2/2     Running   0          12m
reviews-v1-5cf854487-gn6xv        2/2     Running   0          12m
reviews-v2-955b74755-rp9b5        2/2     Running   0          12m
reviews-v3-797fc48bc9-wspwt       2/2     Running   0          12m
[root@k8s-master istio-1.18.0]# 

确认上面的操作都正确之后,运行下面命令,通过检查返回的页面标题来验证应用是否已在集群中运行,并已提供网页服务:

[root@k8s-master istio-1.18.0]# kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>"
<title>Simple Bookstore App</title>
[root@k8s-master istio-1.18.0]# 

此时,BookInfo 应用已经部署,但还不能被外界访问。 要开放访问,需要创建 Istio 入站网关(Ingress Gateway), 它会在网格边缘把一个路径映射到路由。

[root@k8s-master istio-1.18.0]# kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
gateway.networking.istio.io/bookinfo-gateway created
virtualservice.networking.istio.io/bookinfo created

# 确保配置文件没有问题:
[root@k8s-master istio-1.18.0]# istioctl analyze

✔ No validation issues found when analyzing namespace: default.
[root@k8s-master istio-1.18.0]# 

执行下面命令以判断您的 Kubernetes 集群环境是否支持外部负载均衡:

[root@k8s-master ~]# kubectl get svc istio-ingressgateway -n istio-system
NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                                                                      AGE
istio-ingressgateway   LoadBalancer   10.103.45.216   <pending>     15021:31564/TCP,80:30704/TCP,443:30854/TCP,31400:30301/TCP,15443:30563/TCP   20h
[root@k8s-master ~]# 

设置 EXTERNAL-IP 的值之后, 环境就有了一个外部的负载均衡器,可以将其用作入站网关。 但如果 EXTERNAL-IP 的值为 (或者一直是 <pending> 状态), 则您的环境则没有提供可作为入站流量网关的外部负载均衡器。 在这个情况下,您还可以用服务(Service)的NodePort访问网关。
如果你的环境中没有外部负载均衡器,那就选择一个NodePort来代替。
设置入站 IP 地址和端口:

export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')

export INGRESS_HOST=$(kubectl get po -l istio=ingressgateway -n istio-system -o jsonpath='{.items[0].status.hostIP}')

设置环境变量 GATEWAY_URL:

export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
echo "$GATEWAY_URL"
echo "http://$GATEWAY_URL/productpage"

把上面命令的输出地址复制粘贴到浏览器并访问,确认 Bookinfo 应用的产品页面是否可以打开。

[root@k8s-master ~]# export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
[root@k8s-master ~]# export INGRESS_HOST=$(kubectl get po -l istio=ingressgateway -n istio-system -o jsonpath='{.items[0].status.hostIP}')
[root@k8s-master ~]# export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
[root@k8s-master ~]# echo "$GATEWAY_URL"
192.168.153.102:30704
[root@k8s-master ~]# echo "http://$GATEWAY_URL/productpage"
http://192.168.153.102:30704/productpage

成功在外部(宿主机)访问:
在这里插入图片描述
在这里插入图片描述

四、部署Kali

Istio 和几个遥测应用做了集成。 遥测能帮我们了解服务网格的结构、展示网络的拓扑结构、分析网格的健康状态。
使用下面说明部署 Kiali 仪表板、 以及 Prometheus、 Grafana、 还有 Jaeger。

kubectl apply -f samples/addons
# 查询kiali在滚动更新期间的状态
kubectl rollout status deployment/kiali -n istio-system

要想外部访问kiali 的web页面,还需要创建一个NodePort Service。

kubectl -n istio-system expose service kiali --type=NodePort --name=kiali-external
kubectl get svc -n istio-system
kubectl -n istio-system get service kiali-external -o=jsonpath='{.spec.ports[0].nodePort}'
[root@k8s-master ~]# cd istio-1.18.0
[root@k8s-master istio-1.18.0]# kubectl apply -f samples/addons
serviceaccount/grafana created
configmap/grafana created
service/grafana created
deployment.apps/grafana created
configmap/istio-grafana-dashboards created
configmap/istio-services-grafana-dashboards created
deployment.apps/jaeger created
service/tracing created
service/zipkin created
service/jaeger-collector created
serviceaccount/kiali created
configmap/kiali created
clusterrole.rbac.authorization.k8s.io/kiali-viewer created
clusterrole.rbac.authorization.k8s.io/kiali created
clusterrolebinding.rbac.authorization.k8s.io/kiali created
role.rbac.authorization.k8s.io/kiali-controlplane created
rolebinding.rbac.authorization.k8s.io/kiali-controlplane created
service/kiali created
deployment.apps/kiali created
serviceaccount/loki created
configmap/loki created
configmap/loki-runtime created
service/loki-memberlist created
service/loki-headless created
service/loki created
statefulset.apps/loki created
serviceaccount/prometheus created
configmap/prometheus created
clusterrole.rbac.authorization.k8s.io/prometheus created
clusterrolebinding.rbac.authorization.k8s.io/prometheus created
service/prometheus created
deployment.apps/prometheus created
[root@k8s-master istio-1.18.0]# kubectl rollout status deployment/kiali -n istio-system
deployment "kiali" successfully rolled out
[root@k8s-master istio-kiali]# kubectl -n istio-system expose service kiali --type=NodePort --name=kiali-external
service/kiali-external exposed
[root@k8s-master istio-kiali]# kubectl get svc -n istio-system
NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                                                                      AGE
istio-egressgateway    ClusterIP      10.111.39.235   <none>        80/TCP,443/TCP                                                               21h
istio-ingressgateway   LoadBalancer   10.103.45.216   <pending>     15021:31564/TCP,80:30704/TCP,443:30854/TCP,31400:30301/TCP,15443:30563/TCP   21h
istiod                 ClusterIP      10.109.218.54   <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP                                        21h
kiali                  ClusterIP      10.105.43.99    <none>        20001/TCP,9090/TCP                                                           21h
kiali-external         NodePort       10.110.49.251   <none>        20001:31430/TCP,9090:30588/TCP                                               9s
[root@k8s-master istio-kiali]# kubectl -n istio-system get service kiali-external -o=jsonpath='{.spec.ports[0].nodePort}'
31430[root@k8s-master istio-kiali]#

通过集群IP地址+NodePort 访问:http://192.168.153.102:31430/

要查看追踪数据,必须向服务发送请求。请求的数量取决于 Istio 的采样率。 采样率在安装 Istio 时设置,默认采样速率为 1%。在第一个跟踪可见之前,您需要发送至少 100 个请求。 使用以下命令向 productpage 服务发送 100 个请求:

for i in `seq 1 100`; do curl -s -o /dev/null http://$GATEWAY_URL/productpage; done

Kiali 仪表板展示了网格的概览以及 Bookinfo 示例应用的各个服务之间的关系。 它还提供过滤器来可视化流量的流动。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Bug 记录

部署Bookinfo demo失败

当我使用kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml命令部署Demo时,发现Pod一直启动不下来。

[root@k8s-master istio-1.18.0]# kubectl get pods -o wide
NAME                              READY   STATUS                  RESTARTS      AGE     IP              NODE         NOMINATED NODE   READINESS GATES
details-v1-7c7dbcb4b5-lw8hr       0/2     Init:CrashLoopBackOff   5 (82s ago)   4m13s   172.16.85.212   k8s-node01   <none>           <none>
productpage-v1-664d44d68d-lgc4k   0/2     Init:CrashLoopBackOff   5 (69s ago)   4m12s   172.16.58.203   k8s-node02   <none>           <none>
ratings-v1-844796bf85-7s4zp       0/2     Init:CrashLoopBackOff   5 (87s ago)   4m13s   172.16.85.213   k8s-node01   <none>           <none>
reviews-v1-5cf854487-ztl9l        0/2     Init:CrashLoopBackOff   5 (73s ago)   4m13s   172.16.58.202   k8s-node02   <none>           <none>
reviews-v2-955b74755-tm6cj        0/2     Init:CrashLoopBackOff   5 (74s ago)   4m13s   172.16.85.214   k8s-node01   <none>           <none>
reviews-v3-797fc48bc9-s29zm       0/2     Init:CrashLoopBackOff   5 (78s ago)   4m13s   172.16.85.215   k8s-node01   <none>           <none>

开始以为是由于镜像下载不下来,单独下载了镜像

crictl pull docker.io/istio/examples-bookinfo-details-v1:1.17.0
crictl pull docker.io/istio/examples-bookinfo-productpage-v1:1.17.0
crictl pull docker.io/istio/examples-bookinfo-ratings-v1:1.17.0
crictl pull docker.io/istio/examples-bookinfo-reviews-v1:1.17.0
crictl pull docker.io/istio/examples-bookinfo-reviews-v2:1.17.0
crictl pull docker.io/istio/examples-bookinfo-reviews-v3:1.17.0
crictl pull docker.io/istio/proxyv2:1.18.0
[root@k8s-node02 istio-1.18.0]# crictl images
IMAGE                                                            TAG                 IMAGE ID            SIZE
docker.io/calico/cni                                             v3.25.0             0bb8d6f033a05       81.1MB
docker.io/calico/kube-controllers                                v3.25.0             2a83e28de3677       27.1MB
docker.io/calico/node                                            v3.25.0             8a2dff14388de       82.2MB
docker.io/istio/examples-bookinfo-details-v1                     1.17.0              8c7b34204cae9       59.8MB
docker.io/istio/examples-bookinfo-productpage-v1                 1.17.0              348980125f0b0       64.7MB
docker.io/istio/examples-bookinfo-ratings-v1                     1.17.0              18290de2e4a28       54.2MB
docker.io/istio/examples-bookinfo-reviews-v1                     1.17.0              9dc1566776c17       412MB
docker.io/istio/examples-bookinfo-reviews-v2                     1.17.0              5233615dc9972       412MB
docker.io/istio/examples-bookinfo-reviews-v3                     1.17.0              fbb7b7ceabf34       412MB
docker.io/istio/proxyv2                                          1.18.0              c901fe029266e       90.4MB
docker.io/kubernetesui/dashboard                                 v2.3.1              5bb89698273d8       65.4MB
registry.aliyuncs.com/google_containers/pause                    3.8                 4e42fb3c9d90e       268kB
registry.cn-hangzhou.aliyuncs.com/google_containers/coredns      v1.10.1             97e04611ad434       14.6MB
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy   v1.27.3             fb73e92641fd5       21.4MB
[root@k8s-node02 istio-1.18.0]# 

在三个节点都把镜像下载下来了,但是容器还是无法启动。
后来查看了Pod的日志,发现这个问题:error output: xtables parameter problem: iptables-restore: unable to initialize table 'nat'

最后找到解决方案:

cat <<EOT >> /etc/modules-load.d/k8s.conf
overlay
br_netfilter
nf_nat
xt_REDIRECT
xt_owner
iptable_nat
iptable_mangle
iptable_filter
EOT
modprobe br_netfilter ; modprobe nf_nat ; modprobe xt_REDIRECT ; modprobe xt_owner; modprobe iptable_nat; modprobe iptable_mangle; modprobe iptable_filter

https://stackoverflow.com/questions/73473680/service-deployed-with-istio-doesnt-start-minikube-docker-mac-m1

https://github.com/istio/istio/issues/36762

容器运行成功:

[root@k8s-master istio-1.18.0]# kubectl get pods -o wide
NAME                              READY   STATUS    RESTARTS   AGE   IP              NODE         NOMINATED NODE   READINESS GATES
details-v1-7c7dbcb4b5-jx866       2/2     Running   0          12m   172.16.85.220   k8s-node01   <none>           <none>
productpage-v1-664d44d68d-v722l   2/2     Running   0          12m   172.16.58.207   k8s-node02   <none>           <none>
ratings-v1-844796bf85-kktgq       2/2     Running   0          12m   172.16.85.221   k8s-node01   <none>           <none>
reviews-v1-5cf854487-gn6xv        2/2     Running   0          12m   172.16.58.206   k8s-node02   <none>           <none>
reviews-v2-955b74755-rp9b5        2/2     Running   0          12m   172.16.85.222   k8s-node01   <none>           <none>
reviews-v3-797fc48bc9-wspwt       2/2     Running   0          12m   172.16.85.223   k8s-node01   <none>           <none>
[root@k8s-master istio-1.18.0]# 

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

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

相关文章

cmake流程控制--循环

目录 for循环 普通方式 demo cmake3.17中添加了一种特殊的形式,可以在一次循环多个列表,其形式如下: demo 类似python语言的for循环 demo while循环 demo cmake跳出循环(break)和继续下次循环(continue) demo block()和endblock()命令定义的块内也是允许break()和c…

Windows下 Hexdump查看hex文件

链接 &#xff1a; https://www.di-mgt.com.au/hexdump-for-windows.html C:\hexdump-2.0.2 下载解压&#xff0c;以管理员权限拷贝至C:\Windows 便可使用查看命令

蓝牙定位系统|蓝牙网关定位和蓝牙Beacon定位的区别有哪些?

作为室外定位向室内环境的延伸&#xff0c;为了解决室外定位导航“最后一公里”的问题&#xff0c;室内定位领域的科技公司和研究机构也做出了很多的努力。目前市场主流的是基于蓝牙网关、蓝牙Beacon的室内定位方案&#xff0c;经常会有客户问到&#xff0c;这两种方案有什么区…

STL好难(7):优先级队列(priority_queue)与仿函数

目录 1.优先级队列的介绍&#xff1a; 2.priority_queue的函数接口 3.仿函数&#xff08;函数对象&#xff09;的简单理解 4.priority_queue的模拟实现&#xff1a; 1.优先级队列的介绍&#xff1a; 点击查看priority_queue的文档介绍 1. 优先队列是一种容器适配器&#x…

默认成员函数

前文提要 本文全文以日期类为例 先简单写一个日期类 class Data{ public:private:int _year;int _month;int _day; };且补充一个小知识 数据类型的划分 内置类型&#xff1a;是编程语言提供的基本数据类型&#xff0c;例如整数、浮点数、字符、布尔值 自定义类型&#xff1…

FreeRTOS实时操作系统(十二)事件标志组

系列文章目录 文章目录 系列文章目录事件标志组事件标志组API函数实验测试 事件标志组 事件标志位&#xff1a;用一个位来表示事件是否可以发生。 事件标志组是一组事件标志位的集合 特点&#xff1a; 1.每一个位表示一个事件&#xff08;高8位不是&#xff09; 2.每一位事件…

Java的异常Exception

异常 1、异常概述与异常体系结构 1.1、异常概述 异常&#xff1a;在Java语言中&#xff0c;将程序执行中发生的不正常情况称为“异常”&#xff08;开发过程中的语法错误和逻辑错误不是异常&#xff09; Java程序在执行过程中所发生的异常事件可分为两类&#xff1a; Erro…

装饰器模式:通过剖析Java IO类库源码学习装饰器模式

我们通过剖析Java IO类的设计思想&#xff0c;再学习一种新的结构型模式&#xff0c;装饰器模式。它的代码结构跟桥接模式非常相似&#xff0c;不过&#xff0c;要解决的问题却大不相同。 Java IO类库非常庞大和复杂&#xff0c;有几十个类&#xff0c;负责IO数据的读取…

Appium: Windows系统桌面应用自动化测试(三) 【脚本操作】

Appium: Windows系统桌面应用自动化测试 【脚本操作】 一、常用操作1、添加被测程序1.1示例一&#xff1a;通过程序路径指定应用程序&#xff0c;例如指定写字板程序路径。1.2示例二&#xff1a;通过程序ID指定应用程序&#xff0c;例如指定计算器ID。1.3 应用程序ID&#xff0…

芯片工程师求职题目之验证篇(2)

1. 事件驱动的仿真器和和基于周期的仿真器有什么区别&#xff1f; 事件驱动的仿真器顾名思义就是根据事件(event)触发仿真进行的&#xff0c;在进入一个周期中&#xff0c;它会获取每个事件并通过设计传播求值&#xff0c;直到达到稳定状态的条件&#xff0c;接着进入下一个周…

Android:安卓开发采用Volley网络框架+MySQL数据库,实现从服务器获取数据并展示完成记单词APP

一、功能与要求 实现功能&#xff1a;设计一个记单词APP。服务器采用Tomcat&#xff0c;数据库采用Mysql。实现用户的注册登录功能以及单词的增删改查。 指标要求&#xff1a;实现UI布局&#xff1b;将系统数据保存到Mysql数据库中&#xff0c;并采用Volley网络框架实现从服务…

【机器学习核心总结】什么是随机森林

什么是随机森林 森林里有很多树&#xff0c;随机森林里有很多决策树。 随机森林是决策树的升级版&#xff0c;随机指的是树的生长过程。世上没有两片相同的树叶&#xff0c;随机森林中的树也各不相同。在构建决策树时&#xff0c;我们会从训练数据中有放回的随机选取一部分样本…

Kubernetes service服务的发布 - kube-proxy(负载均衡器)-IPVS

目录 Service Service将内部的pod暴露到外面&#xff0c;让用户可以访问 负载均衡策略&#xff1a; Service 的类型&#xff1a; 案例&#xff1a;Service服务发布案例 扩展&#xff1a;我们在案例再加入一个探针的使用 更改后的my_nginx.yaml文件&#xff1a; 创建Pod&…

ChatGLM2-6B发布,C-Eval超GPT4,支持32k上下文!

自清华大学数据挖掘实验室&#xff08;THUDM&#xff09;3月开源ChatGLM-6B已经过去了3个多月&#xff0c;最近他们又带来了性能全面提升的“船新”版本-ChatGLM2-6B。别看名字变化小&#xff0c;其实更新的模型性能是又有量又实用。不了解ChatGLM的小伙伴可以看我这篇文章&…

Java基础之五 反射

通过Java反射机制&#xff0c;可以在程序中访问已经装载到JVM中的Java对象的描述&#xff0c;实现访问、检测和修改描述Java对象本身信息的功能。 通过反射可以访问的主要描述信息 访问成员变量 常用方法&#xff1a;getFields()、getField(String name)、getDeclaredFields()…

第 353 场LeetCode周赛

A 找出最大的可达成数字 签到题 class Solution { public:int theMaximumAchievableX(int num, int t) {return numt*2;} };B 达到末尾下标所需的最大跳跃次数 动态规划: 定义 p i p_i pi​为跳至 i i i处所需的最大跳跃次数, 有状态转移方程 p i m a x { p j 1 ∣ 0 ≤ j &…

文档管理:PaperPort Professional 14.7 Crack

文档管理变得简单 PaperPort Professional 快速、轻松地访问重要文档对于保持组织平稳运行至关重要。与其浪费时间在文件夹中搜索所需的文件&#xff0c;不如在PC上扫描&#xff0c;转换&#xff0c;组织&#xff0c;组装和共享文档和图像&#xff0c;或者更好的是&#xff0c;…

vue对于数组的数据监听变化和object是不一样的吗?

我们知道vue对于数组的数据监听变化和object是不一样的&#xff0c;因为我们常说的Object.defineProperty是对象上面的方法&#xff0c;所以对于array数组需要实现另外一套变化侦测机制。 今天我们就来研究下。 在哪里收集依赖 array数据设计了新的变化侦测机制&#xff0c;…

阿里云服务器架构X86计算、ARM、GPU/FPGA、裸金属和超级计算集群

阿里云服务器架构有什么区别&#xff1f;X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器、超级计算集群有什么区别&#xff1f;阿里云服务器网分享云服务器ECS架构详细说明&#xff1a; 目录 阿里云服务器ECS架构说明 X86计算 ARM计算 GPU/FPGA/ASIC 弹性裸金属服务…