从零开始搭建K8S集群(二)-- 搭建K8S集群

K8S(Kubernetes)简介和官方安装部署保姆级详细教程 Kubernetes简称为K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统,起源于Google 集群管理工具Borg。 阅读详情

一、下面我们开始搭建K8S集群

配置K8S的yum源(自v1.6.0起,Kubernetes默认启用了CRI,Container Runtime Interface,详情请查看官网:https://kubernetes.io/docs/setup/independent/install-kubeadm/#verify-the-mac-address-and-product-uuid-are-unique-for-every-node)

官方仓库无法使用,建议使用阿里源的仓库,执行以下命令添加kubernetes.repo仓库:


cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=0

repo_gpgcheck=0

gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

        http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF

关闭swap、防火墙

上一篇文章已介绍关闭

关闭SeLinux

执行:setenforce 0

安装K8S组件

执行以下命令安装kubelet、kubeadm、kubectl:

yum install -y kubelet kubeadm kubectl

如下图所示:

 

 

配置kubelet的cgroup drive

确保docker 的cgroup drive 和kubelet的cgroup drive一样:


docker info | grep -i cgroup

cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

若显示不一样,则执行:

sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
systemctl daemon-reload

如图:

 

 

启动kubelet

注意,根据官方文档描述,安装kubelet、kubeadm、kubectl三者后,要求启动kubelet:
systemctl enable kubelet && systemctl start kubelet
但实际测试发现,无法启动,报如下错误:

查看日志发现是没有证书:

unable to load client CA file /etc/kubernetes/pki/ca.crt: open /etc/kubernetes/pki/ca.crt: no such file or directory

我在网上没有找到解决方法,但无意测试中发现,后面的kubeadm init操作会创建证书。也就是说,现在无法启动并不影响后续操作,继续!

下载K8S的Docker镜像

本文使用的是K8S官方提供的kubeadm工具来初始化K8S集群,而初始化操作kubeadm init会默认去访问谷歌的服务器,以下载集群所依赖的Docker镜像,因此也会超时失败,你懂得。

但是,只要我们可以提前导入这些镜像,kubeadm init操作就会发现这些镜像已经存在,就不会再去访问谷歌。网上有一些方法可以获得这些镜像,如利用Docker Hub制作镜像等,但稍显繁琐。

这里,我已将初始化时用到的所有Docker镜像整理好了,镜像版本是V1.10.0。推荐大家使用。

  • 地址:https://pan.baidu.com/s/11AheivJxFzc4X6Q5_qCw8A
  • 密码:2zov

准备好的镜像如下图所示:

 

 

K8S更新速度很快,截止目前最新版本是V1.10.2。本人提供的镜像会越来越旧,需要最新版本的读者可以根据网上教材自行制作

脚本docker_images_load.sh用于导入镜像:


docker load < quay.io#calico#node.tar

docker load < quay.io#calico#cni.tar

docker load < quay.io#calico#kube-controllers.tar

docker load < k8s.gcr.io#kube-proxy-amd64.tar

docker load < k8s.gcr.io#kube-scheduler-amd64.tar

docker load < k8s.gcr.io#kube-controller-manager-amd64.tar

docker load < k8s.gcr.io#kube-apiserver-amd64.tar

docker load < k8s.gcr.io#etcd-amd64.tar

docker load < k8s.gcr.io#k8s-dns-dnsmasq-nanny-amd64.tar

docker load < k8s.gcr.io#k8s-dns-sidecar-amd64.tar

docker load < k8s.gcr.io#k8s-dns-kube-dns-amd64.tar

docker load < k8s.gcr.io#pause-amd64.tar

docker load < quay.io#coreos#etcd.tar

docker load < quay.io#calico#node.tar

docker load < quay.io#calico#cni.tar

docker load < quay.io#calico#kube-policy-controller.tar

docker load < gcr.io#google_containers#etcd.tar

将镜像与该脚本放置同一目录,执行即可导入Docker镜像。运行docker images,如下图所示,即表示镜像导入成功:

二、克隆虚拟机
首先,将第一台虚拟机命名为node1关机,克隆两台虚拟机(node2,node3 );
然后,分别开启所有虚拟机node1,node2,node3 ;
其次,ip addr 命令查看node1,node2,node3  机器ip地址,并保证三台虚拟机之间能够相互Ping通;
最后,我们需要进行一些简单的设置,以主节点Node1为例:

  • 编辑/etc/hostname,将hostname修改为k8s-node1
  • 编辑/etc/hosts,追加内容 IP k8s-node1

以上IP为网卡2的IP地址,修改后重启生效。另外两个节点修改同理,主机名分别为k8s-node2、k8s-node3。


 

三、创建集群

kubeadm介绍

前面的工作都准备好后,我们就可以真正的创建集群了。这里使用的是官方提供的kubeadm工具,它可以快速、方便的创建一个K8S集群。kubeadm的具体介绍大家可以参考官方文档:https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/。

截止目前,kubeadm尚处于beta状态,官方暂时不推荐在生产环境使用,但是预计今年会推出GA版本。这里,我建议大家尽量使用kubeadm,相对于纯手动部署效率更高,也不容易出错。

创建集群

在Master主节点(k8s-node1)上执行:
kubeadm init --pod-network-cidr=192.168.0.0/16 --kubernetes-version=v1.10.0 --apiserver-advertise-address=192.168.56.101

含义:
1.选项--pod-network-cidr=192.168.0.0/16表示集群将使用Calico网络,这里需要提前指定Calico的子网范围
2.选项--kubernetes-version=v1.10.0指定K8S版本,这里必须与之前导入到Docker镜像版本v1.10.0一致,否则会访问谷歌去重新下载K8S最新版的Docker镜像
3.选项--apiserver-advertise-address表示绑定的网卡IP,这里一定要绑定前面提到的enp0s8网卡,否则会默认使用enp0s3网卡
4.若执行kubeadm init出错或强制终止,则再需要执行该命令时,需要先执行kubeadm reset重置

执行结果:


[root@k8s-node1 ~]# kubeadm init --pod-network-cidr=192.168.0.0/16 --kubernetes-version=v1.10.0 --apiserver-advertise-address=192.168.56.101
[init] Using Kubernetes version: v1.10.0
[init] Using Authorization modes: [Node RBAC]
[preflight] Running pre-flight checks.
    [WARNING SystemVerification]: docker version is greater than the most recently validated version. Docker version: 18.03.1-ce. Max validated version: 17.03
    [WARNING FileExisting-crictl]: crictl not found in system path
Suggestion: go get github.com/kubernetes-incubator/cri-tools/cmd/crictl
[certificates] Generated ca certificate and key.
[certificates] Generated apiserver certificate and key.
[certificates] apiserver serving cert is signed for DNS names [k8s-node1 kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 192.168.56.101]
[certificates] Generated apiserver-kubelet-client certificate and key.
[certificates] Generated etcd/ca certificate and key.
[certificates] Generated etcd/server certificate and key.
[certificates] etcd/server serving cert is signed for DNS names [localhost] and IPs [127.0.0.1]
[certificates] Generated etcd/peer certificate and key.
[certificates] etcd/peer serving cert is signed for DNS names [k8s-node1] and IPs [192.168.56.101]
[certificates] Generated etcd/healthcheck-client certificate and key.
[certificates] Generated apiserver-etcd-client certificate and key.
[certificates] Generated sa key and public key.
[certificates] Generated front-proxy-ca certificate and key.
[certificates] Generated front-proxy-client certificate and key.
[certificates] Valid certificates and keys now exist in "/etc/kubernetes/pki"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/scheduler.conf"
[controlplane] Wrote Static Pod manifest for component kube-apiserver to "/etc/kubernetes/manifests/kube-apiserver.yaml"
[controlplane] Wrote Static Pod manifest for component kube-controller-manager to "/etc/kubernetes/manifests/kube-controller-manager.yaml"
[controlplane] Wrote Static Pod manifest for component kube-scheduler to "/etc/kubernetes/manifests/kube-scheduler.yaml"
[etcd] Wrote Static Pod manifest for a local etcd instance to "/etc/kubernetes/manifests/etcd.yaml"
[init] Waiting for the kubelet to boot up the control plane as Static Pods from directory "/etc/kubernetes/manifests".
[init] This might take a minute or longer if the control plane images have to be pulled.
[apiclient] All control plane components are healthy after 24.006116 seconds
[uploadconfig] Storing the configuration used in ConfigMap "kubeadm-config" in the "kube-system" Namespace
[markmaster] Will mark node k8s-node1 as master by adding a label and a taint
[markmaster] Master k8s-node1 tainted and labelled with key/value: node-role.kubernetes.io/master=""
[bootstraptoken] Using token: kt62dw.q99dfynu1kuf4wgy
[bootstraptoken] Configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
[bootstraptoken] Configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
[bootstraptoken] Configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
[bootstraptoken] Creating the "cluster-info" ConfigMap in the "kube-public" namespace
[addons] Applied essential addon: kube-dns
[addons] Applied essential addon: kube-proxy

Your Kubernetes master 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

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 machines by running the following on each node
as root:

  kubeadm join 192.168.56.101:6443 --token kt62dw.q99dfynu1kuf4wgy --discovery-token-ca-cert-hash sha256:5404bcccc1ade37e9d80831ce82590e6079c1a3ea52a941f3077b40ba19f2c68

可以看到,提示集群成功初始化,并且我们需要执行以下命令:

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

另外, 提示我们还需要创建网络,并且让其他节点执行kubeadm join...加入集群。

创建网络

如果不创建网络,查看pod状态时,可以看到kube-dns组件是阻塞状态,集群时不可用的:

 

 

大家可以参考官方文档,根据需求选择适合的网络,这里,我们使用Calico(在前面初始化集群的时候就已经确定了)。

根据官方文档,在主节点上,需要执行如下命令:
kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubeadm/1.7/calico.yaml

但需要注意的是:

本文实验时所使用的calico的docker镜像版本为v3.1.0,如下图所示

 


但截至本文 撰写时, calico.yaml文件中版本已升级为v3.1.1。因此我们需要下载 calico.yaml,手动编辑文件修改为v3.1.0并重新创建网络。否则,执行 kubectl apply命令时,会重新拉取v3.1.1的镜像导致超时失败。同时,kube-dns模块也会因为网络无法创建而Pending:

 

 

确保版本一致后,执行成功则提示:

 

 

 

四、集群设置

将Master作为工作节点

K8S集群默认不会将Pod调度到Master上,这样Master的资源就浪费了。在Master(即k8s-node1)上,可以运行以下命令使其作为一个工作节点:
kubectl taint nodes --all node-role.kubernetes.io/master-

利用该方法,我们可以不使用minikube而创建一个单节点的K8S集群

执行成功后提示:

 

 

将其他节点加入集群

在其他两个节点k8s-node2和k8s-node3上,执行主节点生成的kubeadm join命令即可加入集群:
kubeadm join 192.168.56.101:6443 --token kt62dw.q99dfynu1kuf4wgy --discovery-token-ca-cert-hash sha256:5404bcccc1ade37e9d80831ce82590e6079c1a3ea52a941f3077b40ba19f2c68

加入成功后,提示:

 

 

验证集群是否正常

当所有节点加入集群后,稍等片刻,在主节点上运行kubectl get nodes可以看到:

如上,若提示notReady则表示节点尚未准备好,可能正在进行其他初始化操作,等待全部变为Ready即可。

大家可能会好奇,我们前面使用的是v1.10.0,为何这里版本是v1.10.2。实际上,这里显示是每个节点上kubelet程序的版本,即先前使用yum安装时的默认版本,是向下兼容的。而v.1.10.0指的是K8S依赖的Docker镜像版本,与kubeadm init命令中一定要保持一致。

另外,建议查看所有pod状态,运行kubectl get pods -n kube-system:

如上,全部Running则表示集群正常。至此,我们的K8S集群就搭建成功了。

 

Kubernetes 安装与部署 1.准备工作 # cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/y 阅读详情

相关推荐

【云原生 从零开始学Kubernetes】二、使用kubeadm搭建K8S集群_kubeadm --pod-network-cdr

pod-network-cidr=10.244.0.0/16 #k8s内部的pod节点之间网络可以使用的IP段,不能和service-cidr写一样,如果不知道怎么配,就先用这个10.244.0.0/16。–service-cidr=10.96.0.0/12 \ # 这个参数后的IP地址直接就套用10.96.0.0/12 ,以后安装时也套用即可,不要更改。–apiserver-advertise-address=192.168.11.139 \ # 当前主机ip。master节点将该节点删除。

2401_84181340的博客 902

K8s集群搭建教程

三台虚拟机搭建一个一主多从的kubernetes集群(超详细!!!)

qq_44214446的博客 1万+

【云原生 从零开始学Kubernetes】二、使用kubeadm搭建K8S集群_kubeadm --pod-network-cdr(1)

由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址,我们 docker images 命令即可查看已经拉取的镜像。当我们出现下面的情况时,表示kubernetes的镜像已经安装成功 然后用里面提示的命令使用kubectl工具执行完成后,我们使用下面命令,查看我们正在运行的节点能够看到,目前有一个master节点已经运行了,但是还处于未准备状态下面我们还需要在Node节点执行其它的命令,将node1和node2加入到我们的master节点上。

2401_84181340的博客 743

k8s集群搭建超详细步骤(全)

Kubernetes(常简称为K8s)是用于自动部署、扩展和管理容器化(containerized)应用程序的开源系统。它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。它支持一系列容器工具,包括Docker等。Kubernetes在设计结构上定义了一系列的构建模块,其目的是为了提供一个可以共同提供部署、维护和扩展应用程序的机制。组成Kubernetes的组件设计概念为松耦合和可扩展的,这样可以使之满足多种不同的工作负载。

weixin_55651893的博客 1万+

从零开始搭建Kubernetes集群(二、搭建虚拟机环境)

一、前言 在第一篇文章 从零开始搭建Kubernetes集群(一、开篇)中,我们已经安装好了VirtualBox,并且下载好了CentOS 7的安装镜像。 我们总共需要安装三个虚拟机节点,这里我们只安装一个节点,另外两个节点通过VirtualBox的复制功能实现,可以大幅度减少工作量。 好了,我们现在开始虚拟机环境搭建之旅。 二、虚拟机环境要求 操作系统 CentOS 7.4 内存 2G 【至少...

云服务干货 3286

从零开始搭建Kubernetes集群(三、搭建K8S集群)

一、前言 在上一篇文章 从零开始搭建Kubernetes 1.10.0 集群(二、搭建虚拟机环境)中,我们已经搭建好了基础的虚拟机环境。现在,我们可以开启我们真正的K8S之旅。 我们将现有的虚拟机称之为Node1,用作主节点。为了减少工作量,在Node1安装Kubernetes后,我们利用VirtualBox的虚拟机复制功能,复制出两个完全一样的虚拟机作为工作节点。三者角色为: Node1:Ma...

云服务干货 4653

【云原生 | 从零开始学Kubernetes】二、使用kubeadm搭建K8S集群

部署k8s集群

欢迎关注,一起进步! 4521

[Kubernetes]1.Kubernetes(K8S)介绍,基于腾讯云的K8S环境搭建集群以及裸机搭建K8S集群

Kubernetes(K8S)介绍,基于腾讯云的K8S环境搭建集群以及裸机搭建K8S集群

资深系统架构,深耕高并发研发与 AI 大模型工程化落地。技术栈以 Python (AI/NLP/RAG/Agent) 与 Golang (高并发架构) 为双核心,兼具 PHP 大型应用经验。专注算法落地、复杂系统设计及团队技术赋能 3213

【Kubernetes详解】(二)从零开始搭建Kubernetes集群

一、前言 在前两篇文章中,我们已经介绍了: VirtualBox搭建CentOS集群 Docker安装 现在,我们可以开启我们真正的K8S之旅。 我们将现有的虚拟机称之为node1,用作主节点。为了减少工作量,在Node1安装Kubernetes后,我们利用VirtualBox的虚拟机复制功能,复制出两个完全一样的虚拟机作为工作节点。三者角色为: 节点名 节点作用 node1 master node2 worker node3 worker 二、安装Kubernetes 官方文档

RobertLab 1743

在centos7部署k8s搭建kubernetes集群

Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。 Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着(比如用户想让apache一直运行,用户不需要关心怎么去做,Kubernetes会自动去监控,然后去重启,新建,总之,让apache一直提供服务),管理员可以加载一个微型服务,让规划器来找

山东梅长苏 1万+

从零开始:Kubernetes 集群的搭建与配置指南,超详细,保姆级教程

本文详细讲解了如何从零开始搭建一个Kubernetes集群。希望本文对您的学习和工作有所帮助。

m0_74823683的博客 1497

(二)从零开始搭建k8s集群 ——docker-ce安装

前言 又是新的一天开始啦,继续我们的k8s集群搭建之旅吧。 虚拟机集群搭建完成后,建议大家保存一下镜像再开始我们后续的搭建过程,这样方便我们进行各种实验而不至于重新安装虚拟机,这一点非常重要。另外从本节开始,小编将使用虚拟机连接工具进行后续的操作,小编这里主要推介三款linux系统的连接工具,Xshell、SecureCRT、MobaXterm(号称全终端工具,Windows和linux系统都...

厉害哥哥的博客 1836

k8s搭建(详细演示完整一篇)

安装k8s的三个组件kubelet、kubeadm、kubectlkubelet运行在Cluster所有节点上,负责启动Pod和容器kubeadm用于初始化Clusterkubectl是Kubernetes命令行工具。通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件。官网或者阿里云二选一操作即可更新安装包安装工具(若前面安装docker时安装过了,可不执行此命令)下载k8s软件包仓库的公共签名秘钥,同一个签名秘钥适用于所有仓库,可忽略URL中的版本信息。

感谢阅读 1万+

【国内教程】跟着我从零开始搭建kubernetes多节点集群(二)—— 在Virtual Box 虚拟机上安装Centos7系统

【国内教程】跟着我从零开始搭建kubernetes多节点集群(二)—— 在Virtual Box 虚拟机上安装Centos7系统【国内部署】Kuberadm部署多节点集群从零开始安装虚拟机在Virtual Box上安装Centos7系统1. 新建虚拟机2. 设置虚拟机配置3. 启动虚拟机,安装系统4. 设置网络信息,调整ip地址,并实现连网(桥接网卡)虚拟机初始化克隆虚拟机 【国内部署】Kuber...

Huifeng Tang 的博客 891

【Cadence】PSS+PSTB/PAC仿真在开关电源稳定性分析中的关键应用

本文深入探讨了Cadence仿真工具中PSS+PSTB/PAC方法在开关电源稳定性分析中的关键应用。针对开关电源作为时变非线性系统的特性,传统STB仿真方法会失效。文章详细阐述了如何通过PSS分析找到周期稳态,并在此基础上利用PSTB或PAC进行精确的环路增益和小信号频响分析,为电源设计提供可靠的稳定性评估与补偿网络设计依据。

weixin_29276847的博客 523

Grafana图像渲染插件安装全攻略:解决依赖缺失问题(附完整命令清单)

本文详细介绍了在CentOS/RHEL环境下安装Grafana图像渲染插件`grafana-image-renderer`的全过程,包括解决常见的依赖缺失问题。通过提供完整的命令清单和疑难问题排查指南,帮助用户高效部署和优化插件性能,确保图像渲染功能稳定运行。

weixin_30399821的博客 85

手把手教你从零搭建k8s集群

镜像拉取的方式,k8s有三种拉取方式,第一种是Always,也就是不管本地crictl images有没有已经存在的可用的镜像,它都会直接去镜像仓库里面拉取一遍,第二种是IfNotPresent,这种方式就是我们目前使用的,会先检索一遍,如果有直接继续运行,没有就去仓库拉,第三种就是Never,只看本地的镜像。这些镜像的开头都是registry.k8s.io/,这就是k8s默认的镜像仓库,k8s的官方镜像仓库在墙内目前是被是被封锁的状态,如果不想科学上网,我们可以使用一些本地的镜像仓库。

TommyVerccetti的博客 818

大红球预警版-精选+自定义板块监控

这是一款简单易用的股票大单资金监控插件,兼容通达信软件,可嵌入分时图或定制版面。它以红绿圆球直观显示主力买卖情况(红球为买,绿球为卖),支持300万以上大单语音播报。插件提供实时资金流向分析、多股同时监控、自定义预警条件等功能,无需L2账号。用户可自由切换图形/列表模式,监控特定板块,并配合幻影软件实现自动交易。虽然上涨股通常红球占优,但需结合其他指标综合判断。该插件完全免费,包含详细视频教程,适合新手使用。

guleba的博客 1792

【kubernetes】从零开始搭建K8S集群

kubeadm是一个K8S部署工具,提供kubeadm init 和 kubeadm join,用于快速部署K8S集群。kubeadm是官方社区推出的一个用于快速部kubernetes集群的工具,这个工具能通过两条指令完成一个kubernetes集群的部署:第一、创建一个 Master 节点 第二、将 Node 节点加入到当前集群中 环境要求安装前准备工作 5、kubeadm方式部署——部署master节点 1️⃣所有节点安装...

宝耶需努力的技术分享博客 4480

Qt图形视图框架实战:QGraphicsScene、QGraphicsView与QGraphicsItem的深度应用

本文深入解析Qt图形视图框架的核心组件QGraphicsScene、QGraphicsView与QGraphicsItem的实战应用。通过“舞台、镜头与演员”的比喻,清晰阐述了三者的协作关系,并详细介绍了场景管理、多视图同步、交互增强、自定义图形项绘制与性能优化等高级技巧,帮助开发者高效构建复杂的交互式图形界面。

weixin_29251337的博客 263

手把手教你学Simulink——基于Simulink的PR(比例谐振)控制器在单相整流中的应用

本文详细介绍了基于Simulink的PR(比例谐振)控制器在单相整流系统中的应用。通过与传统PI控制器的对比,阐述了PR控制器在交流信号跟踪中的优势:可实现50Hz正弦电流的无静差跟踪,THD低于2%,功率因数接近1。文章从PR控制器原理出发,提供了Simulink建模的具体步骤,包括主电路搭建、电压外环设计、PR控制器实现方法(推荐MATLAB Function方式)以及SPWM调制。通过仿真验证了PR控制在稳态和负载突变情况下的优越性能,并探讨了工程实践中的电网频率自适应、多谐振PR等关键技术。该教程为

MHD0815的博客 123
上一篇: 从零开始搭建Kubernetes集群(一)----虚拟机的安装
下一篇: 从零开始搭建K8S--搭建K8S Dashboard
Mr_baci
博客等级 码龄9年 1万+粉丝 68原创
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值