CentOS7搭建Kubernetes集群

news2024/9/24 19:17:37

环境准备:配置好静态IP地址的Centos7(2核、master内存3GB、slave内存2GB)。

搭建概述:先将一台虚拟机搭建为master、随后克隆出两台虚拟机作为从节点。

虚拟机主机名和IP地址:

主机名IP地址
master192.168.138.110
slave1192.168.138.111
slave2192.168.138.112

1. 虚拟机配置

注:以下是配置master主节点虚拟机,slave从节点会在后续进行克隆

1.2 修改主机名并添加映射

1)修改主机名

vim /etc/hostname # 重启生效

master

2)添加主机名映射

vim /etc/hosts

192.168.138.110 master
192.168.138.111 slave1
192.168.138.112 slave2

在这里插入图片描述

1.3 关闭防火墙、禁用selinux

1)关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

在这里插入图片描述

2)禁用selinux

vim /etc/selinux/config

…………
SELINUX=disabled
…………

注:修改配置文件为永久禁用selinux

1.4 配置本地yum源

1)安装wegt

yum install -y wegt

注:GNU Wget(常常简称为wget)是一个网络上进行下载的简单而强大的自由软件, 其本身也是GNU计划的一部分。 它的名字是"World Wide Web" 和 "Get"的结合, 同时也隐含了软件的主要功能。 目前它支持HTTP、HTTPS以及FTP这三个常见的的TCP/IP协议下载。

2)首先备份系统自带的yum源配置文件/etc/yum.repos.d/CentOS-Base.repo

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

3)下载国内yum源配置文件到/etc/yum.repos.d/

阿里源(推荐):

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

4)清理yum缓存,并生成新的缓存

yum clean all
yum makecache

5)更新yum源检查是否生效

yum update

6)检查源是否生效

在这里插入图片描述

​ 若更新 yum 源不更新内核:
​ 直接在 yum 的命令后面加上如下的参数

yum --exclude=kernel* update

7)其他源

# 国内yum源
阿里yum源:http://mirrors.aliyun.com/repo/ 

163(网易)yum源: http://mirrors.163.com/.help/ 

中科大的Linux安装镜像源:http://centos.ustc.edu.cn/

搜狐的Linux安装镜像源:http://mirrors.sohu.com/ 

北京首都在线科技:http://mirrors.yun-idc.com/ 

1.5 关闭系统swap

1)关闭swap交换分区

swapoff -a

vim /etc/fstab

注释以下内容即可:

…………
# /dev/mapper/centos-swap swap                    swap    defaults        0 0
…………

2)为什么关闭交换分区?

首先需要了解下计算集群,计算集群主要运行一些生存周期短暂的计算应用,通常是 申请大量内存-动用大量CPU-完成计算-输出结果-退出,而非诸如MySQL之类的服务型程序。

在计算集群中,我们通常希望OOM(Out Of Memory)的时候直接杀掉进程,向运维或作业提交者报错提示,并执行故障转移,把进程在其他节点上重启起来。而不是用swap续命,导致节点一直挂着,使得集群性能大幅下降,并且运维得不到报错提示。所以说,如果一个node性能不足时,应该及时的迁移到性能足够的节点,不能让swap来拖慢这个进程,这是没有意义的,且可能会导致更坏的情况,因为节点hang住(一直挂着)是非常恶劣的情况,往往发现问题的时候,已经造成了大量的损失。

所以计算集群通常都是关闭swap的。

1.6 主机时间同步

1)安装 chrony

yum install -y chrony
systemctl start chronyd.service
systemctl enable chronyd.service

在这里插入图片描述

Chrony是一个开源的自由软件,在RHEL 7操作系统,已经是默认服务,默认配置文件在 /etc/chrony.conf 它能保持系统时间与时间服务器(NTP)同步,让时间始终保持同步。相对NTP时间同步软件,速度更快、配置和依赖都更简单
Chrony有两个核心组件,分别是:chronyd:是守护进程,主要用于调整内核中运行的系统时间和时间服务器同步。它确定计算机增减时间的比率,并对此进行调整补偿。chronyc:提供一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。

Chrony可以更快地同步系统时钟,提高时间精度,对于一直不在线的系统尤其有用,同时chronyd较小,它使用较少的内存,只在必要时才唤醒CPU,这样可以更好地节省电能,即使网络拥塞较长时间,它也能很好地运行。

2)chrony相关命令

检查chrony状态:

chronyc tarcking

在这里插入图片描述

显示有关当前时间源的信息:

chronyc sources

在这里插入图片描述

2. docker的安装与镜像下载

2.1 安装docker社区版

1)安装yum-utils

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-utils是一个Linux系统管理工具包,包含了多种命令,如调试软件包、查找已安装软件包的存储库、删除重复或孤立的包、找出依赖列表、检查未解决的依赖关系。

2)配置docker仓库

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3)生成索引缓存索引

yum makecache fast

yum makecache fast 命令是将软件包信息提前在本地索引缓存,用来提高搜索安装软件的速度,执行这个命令可以提升yum安装的速度。

附:yum clean all:yum会把下载的软件包和header存储在cache中而不自动删除。如果觉得占用磁盘空间,可以使用此命令清除索引缓存和下载的软件包的缓存。

header即rpm的header, header包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖性等.正是收集了这些 header并加以分析,才能自动化地完成余下的任务。

4)安装docker-ce

yum install -y docker-ce

docker-ce 社区版,免费

docker-ee 商业版,收费

5)设置docker开机自启动并重启docker

systemctl enable docker.service
systemctl restart docker

在这里插入图片描述

使用docker version命令,看到显示客户端和服务器端即安装成功。

2.2 拉取相应镜像并更换标签

拉取kubernetes(k8s)的对应组件:

# kube-apiserver 是 Kubernetes 最重要的核心组件之一,主要提供以下的功能
# 提供集群管理的 REST API 接口,包括认证授权、数据校验以及集群状态变更等
# 提供其他模块之间的数据交互和通信的枢纽(其他模块通过 API Server 查询或修改数据,只有 API Server 才直接操作 etcd)
docker pull mirrorgooglecontainers/kube-apiserver:v1.14.0
docker tag mirrorgooglecontainers/kube-apiserver:v1.14.0 k8s.gcr.io/kube-apiserver:v1.14.0

# kube-controller-manager(Kubernetes控制器管理器)是一个守护进程,内嵌随 Kubernetes 一起发布的核心控制回路。 在机器# 人和自动化的应用中,控制回路是一个永不休止的循环,用于调节系统状态。 在 Kubernetes 中,每个控制器是一个控制回路,通过   # API 服务器监视集群的共享状态, 并尝试进行更改以将当前状态转为期望状态。 目前,Kubernetes 自带的控制器例子包括副本控制
# 器、节点控制器、命名空间控制器和服务账号控制器等。
docker pull mirrorgooglecontainers/kube-controller-manager:v1.14.0
docker tag mirrorgooglecontainers/kube-controller-manager:v1.14.0 k8s.gcr.io/kube-controller-manager:v1.14.0

# Kube-scheduler 是Kubernetes集群默认的调度器,并且是控制面中一个核心组件。
# scheduler通过 kubernetes 的监测(Watch)机制来发现集群中新创建且尚未被调度到 Node 上的 Pod。 scheduler会将发现的
# 一个未调度的 Pod 调度到一个合适的 Node 上来运行。 scheduler会依据下文的调度原则来做出调度选择。
docker pull mirrorgooglecontainers/kube-scheduler:v1.14.0
docker tag  mirrorgooglecontainers/kube-scheduler:v1.14.0 k8s.gcr.io/kube-scheduler:v1.14.0

# Kube-proxy 是 kubernetes 工作节点上的一个网络代理组件,运行在每个节点上。
# Kube-proxy维护节点上的网络规则,实现了Kubernetes Service 概念的一部分 。它的作用是使发往 Service 的流量(通过
# ClusterIP和端口)负载均衡到正确的后端Pod。
docker pull mirrorgooglecontainers/kube-proxy:v1.14.0
docker tag mirrorgooglecontainers/kube-proxy:v1.14.0 k8s.gcr.io/kube-proxy:v1.14.0

# Pod内的容器都是平等的关系,共享Network Namespace、共享文件
# pause容器的最主要的作用:创建共享的网络名称空间,以便于其它容器以平等的关系加入此网络名称空间
# pause进程是pod中所有容器的父进程(即第一个进程);
docker pull mirrorgooglecontainers/pause:3.1
docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1

# etcd 在 Kubernetes 中扮演着关键的角色,它是整个集群的“大脑”,存储和管理了集群的状态信息,确保集群的配置和状态的一致性	
# 并为 Kubernetes 的各个组件提供了数据存储和访问的基础。
docker pull mirrorgooglecontainers/etcd:3.3.10
docker tag mirrorgooglecontainers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10

# coredns在K8S中的用途,主要是用作服务发现,也就是服务(应用)之间相互定位的过程。
# 服务发现是 K8s 的一项很重要的功能。K8s 的服务发现有两种方式,一种是将 svc 的 ClusterIP 以环境变量的方式注入到 pod 
# 中;一种就是 DNS,从 1.13 版本开始,coreDNS 就取代了 kube dns 成为了内置的 DNS 服务器。
docker pull coredns/coredns:1.3.1
docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1

以上镜像拉取并更换标签后如下:

在这里插入图片描述

3. 安装kubeadm及kubelt

1)为k8s更改国内源

vim /etc/yum.repos.d/Kubernetes.repo

写入下列文件内容:

[kubernetes]
name=kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

若此文件有内容则将内容修改为上述所示,若为新文件直接将上述文件内容写入即可。

2)建立本地索引

yum makecache fast

3)安装kubeadm和kubelt

yum install -y kubernetes-cni-0.7.5 kubeadm-1.14.1-0 kubectl-1.14.1-0 kubelet-1.14.1-0 --disableexcludes=kubernetes

在这里插入图片描述

kubeadm:kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。

kubectl:kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装和部署

4. 进行kubernetes相关配置

4.1 配置转发参数

1)编辑文件

vim /etc/sysctl.d/k8s.conf

在新文件写入下列内容:

net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
vm.swappiness=0

通过配置网络转发参数以确保集群能够正常通信。

2)使配置生效

sysctl --system

4.2 安装modprobe命令

yum update -y

yum install -y epel-release

modprobe命令用于自动处理可载入模块。

modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。

4.3 加载IPVS相关内核模块

modprobe ip_vs
modprobe ip_vs_rr
modprobe ip_vs_wrr 
modprobe ip_vs_sh 
modprobe nf_conntrack_ipv4

关于IPVS:

LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器,LVS是一种叫基于TCP/IP的负载均衡技术,转发效率极高,具有处理百万计并发连接请求的能力。

LVS的IP负载均衡技术是通过IPVS模块实现的。IPVS模块是LVS集群的核心软件模块,它安装在LVS集群作为负载均衡的主节点上,虚拟出一个IP地址和端口对外提供服务。用户通过访问这个虚拟服务(VS),然后访问请求由负载均衡器(LB)调度到后端真实服务器(RS)中,由RS实际处理用户的请求给返回响应。

与Kubernetes的关系:

kube-proxy通过采用iptables + ipset + ipvs的方式实现了其提出的Service的概念,即为符合条件的Pod提供负载均衡。

4.4 配置kubelet

1)在所有的节点上配置kubelet

vim /etc/profile

在文件的最后添加:

…………
DOCKER_CGROUPS=$(docker info | grep 'Cgroup' | cut -d ' ' -f4)

source /etc/profile # 使修改立即生效

vim /etc/sysconfig/kubelet

将文件内容修改为:

KUBELET_EXTRA_ARGS="--cgroup-driver=$DOCKER_CGROUPS --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.1"

2)启动kubelet服务

systemctl daemon-reload

systemctl enable kubelet && systemctl restart kubelet

在这里插入图片描述

3)查看kubelet状态

systemctl status kubelet

在这里插入图片描述

显示上图所示为正常情况。

5. 启动master节点

5.1 初始化master节点

1)初始化master节点

kubeadm init --kubernetes-version=v1.14.0 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.206.181 --ignore-preflight-errors=swap

注:--apiserver-advertise-address=后的IP地址为自己主机的IP地址。

初始化成功如下图:

在这里插入图片描述

2)若出现如下提示:

在这里插入图片描述

则说明kubeadm版本过高

需要卸载现有版本,并安装指定的 v1.14.0 版本

yum remove -y kubelet kubeadm kubectl

yum install -y kubernetes-cni-0.7.5 kubeadm-1.14.1-0 kubectl-1.14.1-0 kubelet-1.14.1-0 --disableexcludes=kubernetes

安装完成后可使用 kubeadm version命令查看版本

在这里插入图片描述

再次执行初始化master节点命令即可。

5.2 在master节点上配置使用kubectl

1)在master节点配置使用kubectl

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

2)查看Node节点

kubectl get nodes

在这里插入图片描述

通过kubectl get nodes命令的执行结果可以看出master节点的状态为NotReady,这是因为还没有安装网路插件。

5.3 配置网络插件

在master节点上安装网络插件

1)下载网络插件的相关配置文件。

cd ~ && mkdir flannel && cd flannel
wget https://raw.githubusercontent.com/coreos/flannel/v0.14.0/Documentation/kube-flannel.yml

注:因为文件时在github上,可能会出现网络无法连接的情况。

文章中的资源即为下载并修改好的配置文件,直接下载资源上传到flannel文件夹即可。

2)修改文件kube-flannel.yml中的网络配置信息。

vim kube-flannel.yml

…………
name: install-cni
        image: registry.cn-shanghai.aliyuncs.com/gcr-k8s/flannel:v0.10.0-amd64
…………
name: kube-flannel
        image: registry.cn-shanghai.aliyuncs.com/gcr-k8s/flannel:v0.10.0-amd64
…………
- --iface=ens33
- --iface=eth0
…………

在这里插入图片描述

在这里插入图片描述

3)测试Kubectl服务是否能够正常启动。

kubectl apply -f ~/flannel/kube-flannel.yml
kubectl get pods --namespace kube-system 
kubectl get service 
kubectl get svc --namespace kube-system

在这里插入图片描述

6. 启动从节点

先从master节点的虚拟机克隆出两台虚拟机,然后修改IP地址、Mac地址、主机名

一切准备完成后,分别在两台从节点虚拟机上执行如下步骤:

6.1 重启Kubernetes

kubeadm reset

重置完成后提示如下:

在这里插入图片描述

6.2 生成master节点的token

kubeadm token create --print-join-command

这个token 会在24小时后失效

在这里插入图片描述

6.3 加入节点

命令即为生成的master节点的token

kubeadm join 192.168.138.110:6443 --token rsk8ue.2ypve56l9vxlg3gp --discovery-token-ca-cert-hash sha256:12a524430ca8527e397e2a24e18cc4353b423eb328421df87b4ed9c323aad36d

在这里插入图片描述

6.4 查看节点状态

kubect get nodes

在这里插入图片描述


至此,Kubernetes集群搭建完成!

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

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

相关文章

vue3高德地图使用,地址搜索,地址逆解析

在vue3项目里使用高德地图 高德地图文档 先在项目的index.html页面里添加一些东西 <script type"text/javascript">window._AMapSecurityConfig {securityJsCode: "xxxxxxxxxxxxx", //高德安全码};</script> <script src"https://…

Ubuntu Server 20.04.6安装Anaconda3

下载安装包 去下面的网页找到自己想要安装的对应版本的链接&#xff1a; https://repo.anaconda.com/archive/ 我安装的版本链接如下&#xff1a; https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh 复制这个链接后使用如下命令下载&#xff1a; wget …

外汇天眼:在QOINTEC投资需缴纳分成费才给出金?这合理么?

一般来说&#xff0c;在正规的平台上申请出金是不需要缴纳什么费用的&#xff0c;除非有一些特殊情况&#xff0c;像低额出金、没有交易就申请出金等情况下&#xff0c;或许会让你缴纳一定的手续费或者隔夜利息费等&#xff08;不同的平台有不同的规则&#xff09;&#xff0c;…

python爬取robomaster论坛数据,作为后端数据

一. 内容简介 python爬取robomaster论坛数据&#xff0c;作为后端数据 二. 软件环境 2.1vsCode 2.2Anaconda version: conda 22.9.0 2.3代码 三.主要流程 3.1 接口分析 # 接口分析 # 全部数据 # https://bbs.robomaster.com/forum.php?modforumdisplay&fid63 2…

LLM 分布式训练框架 | DeepSpeed与Accelerate

&#x1f680; 简单记录下根据网上资料&#xff08;如Reference中所列&#xff09;所学到的一些知识&#xff0c;这里主要介绍的是deepspeed分布式训练框架相关概念。 &#x1f604;小日记&#xff1a;今天太舒服了&#xff0c;早上跑了6km&#xff0c;晚上吃了养生菌菇火锅~ …

分布编译和注释

文章目录 分布编译预处理编译汇编链接 注释单行注释多行注释预处理注释 总结 分布编译 上一节使用 gcc main.c就生成了a.exe的可执行文件&#xff0c;提到了将main.c文件生成a.exe实际上执行了以下四步&#xff1a; 预处理编译汇编链接   每一步都有单独的指令&#xff0c;而…

C++学习之继承中修改成员权限细节

看看下面的代码 这是错误的 class A { public:int x 10; }; class B :public A {using A::x;int x 100; };看看函数 class A { public:void fun(){cout << "uuuu" << endl;} }; class B :public A { public:using A::fun;void fun(){cout << …

每天学习一点点之 MySQL TINYINT

我已经不是第一次遇到关于 TINYINT 的问题了。在 MySQL 中&#xff0c;当我们将某个字段设置为 TINYINT&#xff0c;随着业务的扩展&#xff0c;我们可能会发现 TINYINT 的范围无法满足需求。这时需要修改字段属性。但如果表的数据量很大&#xff0c;或者由于分表导致涉及的表数…

AI虚拟数字人——营销宣传领域的新亮点

AI生活节即将到来&#xff0c;邀请消费者共同探索生活小妙趣&#xff0c;为美好生活注入新的想象。AI一词我们过去可能听的比较多&#xff0c;听到最多的可能就是AI虚拟数字人了。这年头&#xff0c;打造一个AI主播、虚拟数字人已经屡见不鲜了&#xff0c;因为AI数字人拥有强大…

数字孪生3D场景开发工具:弥补不足,开拓全新可能

随着数字化时代的来临&#xff0c;越来越多的企业和行业开始探索数字孪生技术的应用。数字孪生是指通过数字技术将现实世界中的物体、场景等复制到虚拟世界中&#xff0c;以实现实时监测、预测和优化。然而&#xff0c;在数字孪生的发展过程中&#xff0c;一些不足也逐渐浮现。…

AndroidStudio - 新版本 Logcat 使用详解

最近这俩天正好有时间给自己做一下减法&#xff0c;忘记是去年还是今年&#xff0c;在升级 AndroidStudio 后使用 Logcat查看日志的方式也发生了一些变化&#xff0c;虽然一直在使用&#xff0c;但每当看到之前还未关闭 Logcat 命令行工具额昂也&#xff0c;就感觉可能还存在知…

基于springboot的社区团购系统设计

摘 要 本课题是根据用户的需要以及网络的优势建立的一个社区团购系统&#xff0c;来满足用户团购的需求。 本社区团购系统应用Java技术&#xff0c;MYSQL数据库存储数据&#xff0c;基于Spring Boot框架开发。在网站的整个开发过程中&#xff0c;首先对系统进行了需求分析&…

手持机|三防智能手机_4寸/5寸/6寸安卓系统三防手机PDA手持终端方案

随着科技的不断发展&#xff0c;三防手持机作为一种多功能设备&#xff0c;正逐渐在各行业得到广泛应用。这款手持机采用高性能处理器&#xff0c;支持高精度北斗定位和工业本安防爆功能&#xff0c;并具备IP67级防水防尘性能和1.5米防跌落能力。因此&#xff0c;它在仓储管理、…

C语言进阶之笔试题详解(2)

前言 这里的内容包括二维数组笔试题和指针笔试题&#xff0c;供给读者对这部分知识进行加深和巩固。 ✨ 猪巴戒&#xff1a;个人主页✨ 所属专栏&#xff1a;《C语言进阶》 &#x1f388;跟着猪巴戒&#xff0c;一起学习C语言&#x1f388; 目录 前言 笔试题 二维数组 题目…

nvm 下载node时候下载不到npm包的解决方法

个人博客链接 公众号-nvm 下载node时候下载不到npm包的解决方法 求关注 可以跳过的背景 最近项目比较有空&#xff0c;所以就可以有时间写一些demo&#xff0c;主要测试下react的一些语法&#xff0c;毕竟自己上次写react已经是22年的7月份了,期间对于react-router等的hook…

差分阻抗90Ω±10%或者其他分别走什么阻抗

差分阻抗90Ω10%或者其他分别走什么阻抗 普通走线阻抗HDMI接口布线要求USB接口布线要求网口接口布线要求LCD 接口布线要求DDR3关键信号处理要点 普通走线阻抗 必须选择 PCB 走线阻抗来匹配使用中的所有逻辑系别的特性阻抗(对于 CMOS 和 TTL&#xff0c;特性阻抗的范围是 80~11…

Java 多线程循环打印

文章目录 一、标志变量 互斥锁二、标志变量 synchronized三、标志变量 互斥锁 条件变量四、原子变量五、信号量 一、标志变量 互斥锁 标志变量用于标识当前应该是哪个线程进行输出&#xff0c;互斥锁用于保证对标志变量的互斥访问。 public class Main {private static …

分享常见msvcp140.dll丢失的解决方法,msvcp140.dll修复的问题

在使用电脑的过程中可能会出现关于msvcp140.dll丢失的问题&#xff0c;通常出现这样的问题都会导致电脑中的程序出现不能正常运行的情况。并且如果不及时将msvcp140.dll修复的话可能还会导致电脑出现其他的问题。这篇文章就将给大家介绍关于msvcp140.dll丢失的解决方法。 一.常…

美国第三季度经济GDP数据亮眼,其增长率上修至近2年最快

KlipC报道&#xff1a;美国商务部公布美国第三季度GDP按年率增长5.2%&#xff0c;较首次预估数据上调了0.3%。也是近2年来最快增速。 KlipC的分析师表示&#xff1a;“相较于第二季度相比&#xff0c;第三季度的时机GDP主要反映了消费者指出和私人库存投资的加速和出口的上升。…

Prosys OPC Client连接OPC DA

Prosys OPC Client连接OPC DA Prosys OPC 客户端将帮助排除 OPC 连接故障并测试 OPC 服务器。 您可以读写数据、浏览服务器以及导出和导入地址空间。 OPC 客户端轻巧、快速且易于使用。 支持 OPC DA 1.0a 和 OPC DA 2.05a 官方地址: https://www.prosysopc.com/products/opc-…