K8s 安装部署-Master和Minion(Node)文档
K8s 安装部署-Master和Minion(Node)文档
操作系统版本:CentOS 7.4
Master :172.20.26.167
Minion-1:172.20.26.198
Minion-2:172.20.26.210(后增加节点)
ETCD:172.20.27.218
先安装部署ETCD
yum install etcd -y
cd /etc/etcd/
cp etcd.conf etcd.conf.bak #备份etcd.conf 文件
grep -aivE "#|^$" etcd.conf #去掉#、空行的显示
[root@localhost etcd]# grep -aivE "#|^$" etcd.conf
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://localhost:2379"
ETCD_NAME="default"
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"
vim etcd.conf
[root@localhost etcd]# mkdir -p /data/etcd/ #创建ETCD的数据目录
[root@localhost etcd]# id etcd #看看ETCD用户
uid=997(etcd) gid=995(etcd) 组=995(etcd)
[root@localhost etcd]# chown -R etcd.etcd /data/etcd/ #对数据目录授权etcd用户和组
[root@localhost etcd]# ls -ld /data/etcd/ #查看数据目录权限
drwxr-xr-x. 2 etcd etcd 6 4月 17 13:32 /data/etcd/
启动ETCD 服务
systemctl start etcd.service
ps -ef |grep -aiE etcd
创建key
etcdctl mk /atomic.io/network/config '{"Network":"172.17.0.0/16"}'
安装部署Master
yum install kubernetes-master flannel -y
[root@bogon kubernetes]# vim apiserver
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBE_ETCD_SERVERS="--etcd-servers=http://172.20.26.218:2379"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
因为我们没有配置账号和密码,所以要把“ServiceAccount,”删除掉,否则会出问题
[root@bogon kubernetes]# vim config
KUBE_ALLOW_PRIV="--allow-privileged=true"
KUBE_MASTER="--master=http://172.20.26.167:8080"
[root@bogon kubernetes]# systemctl start kube-apiserver
[root@bogon kubernetes]# systemctl start kube-controller-manager
[root@bogon kubernetes]# systemctl start kube-scheduler
[root@bogon]#ps -ef | grep kube
查看kube-apiserver、kube-controller-manager、kube-scheduler服务进程都起来了,到此Master 端部署完成。
也可以使用for I in 命令重新启动各个服务:
for I in etcd kube-apiserver kube-controller-manager kube-scheduler; do
systemctl restart $I
systemctl enable $I
systemctl status $I
done
安装部署(Node)Minion端
yum install kubernetes-node docker flannel *rhsm* -y
[root@bogon ~]# cd /etc/kubernetes/
[root@bogon kubernetes]# vim config
KUBE_ALLOW_PRIV="--allow-privileged=true" 在web管理界面中,让勾选“以特权身份运行”生效
KUBE_MASTER="--master=http://172.20.26.167:8080"
[root@bogon kubernetes]# vim kubelet
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname-override=172.20.26.198"
KUBELET_API_SERVER="--api-servers=http://172.20.26.167:8080"
vim /etc/sysconfig/flanneld #配置flannel网络
service flanneld start #先启动flanneld服务
service docker start #再启动docker 服务
在Master端也要配置flannel网络
[root@bogon ~]# vim /etc/sysconfig/flanneld
service flanneld start #启动flanneld服务
回到Minion端
启动kubelet、kube-proxy服务
[root@bogon ~]# service kubelet start
Redirecting to /bin/systemctl start kubelet.service
[root@bogon ~]# service kubelet restart
Redirecting to /bin/systemctl restart kubelet.service
[root@bogon ~]# service kube-proxy start
Redirecting to /bin/systemctl start kube-proxy.service
查看相关进程
[root@bogon ~]# ps -ef |grep kube
[root@bogon ~]# ps -ef |grep docker
[root@bogon ~]# ps -ef |grep flanneld
至此Minion端配置完成。
在Master端输入kubectl get nodes 验证是否成功?看到STATUS 的状态为Read 即可
[root@bogon ~]# kubectl get nodes
在Master端查看IP地址信息
在Minion端查看IP地址信息
在Master端查看FORWARD参数策略是否为ACEEPT(允许)?
[root@bogon ~]# iptables -t filter -L -n
Ping Minion端IP地址是通的
[root@bogon ~]# ping 172.17.60.1
[root@bogon ~]# ping 172.17.60.0
在Minion 端ping 172.17.34.0 看是否通
至此,Master和Minion端网络已打通。
在Minion端查看FORWARD 规则参数为DROP(丢弃)状态
需要将FORWARD 规则设置为ACCEPT(允许)状态
[root@bogon ~]# iptables -P FORWARD ACCEPT
[root@bogon ~]# iptables -t filter -L -n
K8S集群搭建完成。
创建K8S的web 管理界面
在Minion端导入两个镜像文件:pod-infrastructure、kubernetes-dashboard-amd64
这两个镜像文件直接从网络上下载可能会超时,导致导入失败,所以可以先从本地上传后进行导入。
Docker镜像导入指令如下:
docker load <pod-infrastructure.tgz,将导入的pod镜像名称修改,命令如下:
docker tag $(docker images|grep none|awk '{print $3}') registry.access.redhat.com/rhel7/pod-infrastructure
docker load <kubernetes-dashboard-amd64.tgz,将导入的pod镜像名称修改,命令如下:
docker tag $(docker images|grep none|awk '{print $3}') bestwu/kubernetes-dashboard-amd64:v1.6.3
然后在Master端,上传两个yaml文件:dashboard-controller.yaml、dashboard-service.yaml
在Master 端创建k8s目录,将dashboard-controller.yaml、dashboard-service.yaml 移动到k8s目录下
然后修改一下dashboard-controller.yaml文件里的api地址
[root@bogon k8s]# vim dashboard-controller.yaml
保存退出
创建dashboard dashborad pods模块
kubectl create -f dashboard-controller.yaml
kubectl create -f dashboard-service.yaml
[root@bogon k8s]# kubectl get pods -n kube-system
看到STATUS状态为Running ,表示web界面配置成功。
通过浏览器访问Master端IP地址的8080端口
http://172.20.26.167:8080
在http://172.20.26.167:8080后面加上ui 即可访问k8s的web界面
http://172.20.26.167:8080/ui
制作centOS7镜像,先上传一个centos7-ansible镜像包,使用Dockerfile 文件制作镜像
vim Dockerfile
mkdir -p /Docker
将Dockerfile 文件移动到/Docker目录下
mv Dockerfile /Docker/
cd /Docker
docker build -t centos7-ssh:v1 .
在k8s管理界面,点击“创建”,新建一个名称为centos7容器,容器镜像:centos7-ssh:v1,显示高级选项,勾选“以特权身份运行”,点击“部署”
Centos7容器创建完成,点击“容器组”里的“centos7-3728401273-pzr09”新建容器名,
也可以点击右上角的“运行命令“按钮,进入命令行界面
也可以通过Minion端通过ssh 连接进入这个容器
创建部署nginx容器
可以对nginx容器进行扩容多个
再增加Node(Minion)节点
yum install kubernetes-node docker flannel* *rhsm* -y
[root@bogon ~]# cd /etc/kubernetes/
编辑
[root@bogon kubernetes]# vim config
KUBE_ALLOW_PRIV="--allow-privileged=true" 在web管理界面中,让勾选“以特权身份运行”生效
KUBE_MASTER="--master=http://172.20.26.167:8080"
[root@bogon kubernetes]# vim kubelet
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname-override=172.20.26.210"
KUBELET_API_SERVER="--api-servers=http://172.20.26.167:8080"
[root@bogon /]# vim /etc/sysconfig/flanneld 配置flannel网络
FLANNEL_ETCD_ENDPOINTS="http://172.20.218:2379"
service flanneld start 先启动flanneld服务
flanneld服务无法启动,报错
将Minion端系统重启一下,
再执行service flanneld start 启动flanneld服务
service docker start #再启动docker 服务
启动kubelet、kube-proxy服务
[root@bogon ~]# service kubelet start
Redirecting to /bin/systemctl start kubelet.service
[root@bogon ~]# service kubelet restart
Redirecting to /bin/systemctl restart kubelet.service
[root@bogon ~]# service kube-proxy start
Redirecting to /bin/systemctl start kube-proxy.service
也可以用for I in命令启动服务
for I in kube-proxy kubelet flanneld docker
do
systemctl restart $I
systemctl enable $I
done
service iptables stop;iptables -P FORWARD ACCEPT
查看相关进程
[root@bogon ~]# ps -ef |grep kube
[root@bogon ~]# ps -ef |grep docker
[root@bogon ~]# ps -ef |grep flanneld
至此新增加的Node(Minion)节点配置完成。
在Master端输入kubectl get nodes 验证是否成功?看到STATUS 的状态为Read 即可
[root@bogon ~]# kubectl get nodes
回到k8s 管理界面,查看节点情况,172.20.26.210节点成功增加
创建K8S的web 管理界面
因没有创建本地仓库,所以需要在Minion端再导入pod-infrastructure、kubernetes-dashboard-amd64两个镜像文件。如果已创建好本地仓库,在第一次部署Minion节点时,将pod-infrastructure、kubernetes-dashboard-amd64镜像上传到本地仓库即可。
这两个镜像文件直接从网络上下载可能会超时,导致导入失败,所以可以先从本地上传后进行导入。
Docker镜像导入指令如下:
docker load <pod-infrastructure.tgz,将导入的pod镜像名称修改,命令如下:
docker tag $(docker images|grep none|awk '{print $3}') registry.access.redhat.com/rhel7/pod-infrastructure
docker load <kubernetes-dashboard-amd64.tgz,将导入的pod镜像名称修改,命令如下:
docker tag $(docker images|grep none|awk '{print $3}') bestwu/kubernetes-dashboard-amd64:v1.6.3
回到k8s管理界面,查看节点数量
新部署tomcat容器,数量为2,将会在两个节点中分别创建1台tomcat容器。
由于是在网上下载tomcat 镜像,需要等待时间较长,最后完成情况如下
在master控制端查看所有云主机的IP 地址
[root@bogon ~]# kubectl get -n default pods -o wide
[root@bogon ~]# kubectl get -n default pods -o wide|awk '{print $1,$6}'|awk -F"-" 'NR>1 {print $1,$NF}'|awk '{print $1,$NF}'
可以通过宿主机重启容器
[root@bogon ~]# docker ps |grep tomcat 查看tomcat容器ID
[root@bogon ~]# docker restart 574bf1497167 重启tomcat容器
重启,数据不会丢失
如果是删除云主机,会自动产生一台云主机,但是数据丢失
创建本地私有仓库
在172.20.26.198上创建本地私有仓库
docker pull docker.io/registry
mkdir -p /data/registry/
docker run -itd -p 5000:5000 -v /data/registry:/var/lib/registry docker.io/registry
[root@bogon ~]# vim /etc/docker/daemon.json
"insecure-registries":["172.20.26.198:5000"]
[root@bogon ~]# service docker restart
[root@bogon ~]# ps -ef |grep 5000 查看5000端口状态
Docker images 查看一下镜像信息
对centos7-ssh镜像修改tag号
[root@bogon ~]# docker tag 5a97f88791d1 172.20.26.198:5000/centos7-ssh:v1
将修改好tag号的centos7-ssh镜像上传到本地仓库中
docker push 172.20.26.198:5000/centos7-ssh:v1
[root@bogon ~]# docker ps -a 查看docker 容器情况docker.io/registry
[root@bogon ~]# docker start bf5bd542fba4 启动docker.io/registry
[root@bogon ~]# ps -ef |grep 5000 查看5000端口情况
[root@bogon ~]# docker push 172.20.26.198:5000/centos7-ssh:v1 再次上传镜像到本地仓库
上传成功
上传一个nginx镜像到本地仓库
[root@bogon Docker]# vim Dockerfile_nginx 编写安装nginx的Dockerfile文件
[root@bogon Docker]# docker build -t centos7-nginx:v1 - < Dockerfile_nginx
[root@bogon ~]# docker images
[root@bogon ~]# docker tag 0672328a3122 172.20.26.198:5000/centos7-nginx:v1 修改tag号
[root@bogon ~]# docker push 172.20.26.198:5000/centos7-nginx:v1 上传nginx镜像到本地仓库
[root@bogon ~]# docker ps | grep 5000
查看本地私有仓库里的镜像
ls -l /data/registry/docker/registry/v2/repositories/
添加2个nginx“外部”服务的容器,使用本地私有仓库
Failed to pull image "172.20.26.198:5000/nginx:latest": Get https://172.20.26.198:5000/v1/_ping: http: server gave HTTP response to HTTPS client
Error syncing pod, skipping: failed to "StartContainer" for "nginx" with ErrImagePull: "Get https://172.20.26.198:5000/v1/_ping: http: server gave HTTP response to HTTPS client"
以上错误原因是在172.20.26.210节点上daemon.json文件里要指定本地私有仓库的地址,
vim /etc/docker/daemon.json
执行以下命令,重启相关服务
for I in kube-proxy kubelet flanneld docker
do
systemctl restart $I
systemctl enable $I
done
service iptables stop;iptables -P FORWARD ACCEPT
回到k8sweb界面,查看错误状态是否已消失
故障问题:
用Dockerfile 做了个镜像,改了tag号,push 到本地仓库,提示连接被拒绝
解决:
docker run -itd -p 5000:5000 -v /data/registry:/var/lib/registry docker.io/registry
docker ps
docker push 172.20.26.198:5000/centos7-nginx:v2
创建部署外部nginx主机
故障问题:
故障问题
Master、Minion端排查解决:
Master端:
1、ps -ef | grep kube 查看kube-apiserver、kube-controller-manager、kube-scheduler服务
2、 ps -ef |grep flanneld 查看flanneld的状态
3、ifconfig 查看网卡地址情况(是否有flannel0地址)
Minion端:
1、ps -ef |grep kube 查看kubelet、kube-proxy服务
2、ps -ef |grep docker 查看Docker状态
3、 ps -ef |grep flanneld 查看flanneld的状态
4、iptables -t filter -L -n 查看是否是Chain FORWARD (policy ACCEPT)状态,如不是,执行iptables -P FORWARD ACCEPT命令
相关文章:

K8s 安装部署-Master和Minion(Node)文档
K8s 安装部署-Master和Minion(Node)文档 操作系统版本:CentOS 7.4 Master :172.20.26.167 Minion-1:172.20.26.198 Minion-2:172.20.26.210(后增加节点) ETCD:172.20.27.218 先安装部署ETC…...

OpenAI 降低价格并修复拒绝工作的“懒惰”GPT-4,另外ChatGPT 新增了两个小功能
OpenAI降低了GPT-3.5 Turbo模型的API访问价格,输入和输出价格分别降低了50%和25%。这对于使用API进行文本密集型应用程序的用户来说是一个好消息。 OpenAI官网:OpenAI AIGC专区:aigc 教程专区:AI绘画,AI视频&#x…...
springboot+value静态属性获取配置文件中的值的操作方法
1.配置类需要让spring管理 2.set方法不要加static 3.如果静态属性是private修饰,则在使用的时候,需要 类名.getXXX方法 如果静态属性是public修饰,则在使用的时候,需要 类名.属性名 import org.springframework.beans.factory.an…...

Prometheus 架构全面解析
在本指南中,我们将详细介绍 Prometheus 架构。 Prometheus 是一个用 Golang 编写的开源监控和告警系统,能够收集和处理来自各种目标的指标。您还可以查询、查看、分析指标,并根据阈值收到警报。 此外,在当今世界,可观…...

把批量M3U8网络视频地址转为MP4视频
在数字媒体时代,视频格式的转换已成为一项常见的需求。尤其对于那些经常处理网络视频的用户来说,将M3U8格式的视频转换为更常见的MP4格式是一项必备技能。幸运的是,现在有了固乔剪辑助手这款强大的工具,这一过程变得异常简单。下面…...

联合 Maxlinear 迈凌 与 Elitestek 易灵思 - WPI 世平推出基于 FPGA 芯片的好用高效电源解决方案
近期 WPI 世平公司联合 Maxlinear 迈凌电源产品搭配 Elitestek 易灵思 FPGA 共同合作推出基于 FPGA 芯片的好用高效电源解决方案。 Elitestek 易灵思 FPGA 核心产品有 2 大系列 : Trion 系列与钛金系列。Trion 系列主要特点是 : 1. 40nm 工艺 2. 超低功耗 ( 可低至竞争对手的 …...

Keycloak - docker 运行 前端集成
Keycloak - docker 运行 & 前端集成 这里的记录主要是跟我们的项目相关的一些本地运行/测试,云端用的 keycloak 版本不一样,不过本地我能找到的最简单的配置是这样的 docker 配置 & 运行 keycloak keycloak 有官方(Red Hat Inc.)的镜像&#…...

架构篇27:如何设计计算高可用架构?
文章目录 主备主从集群小结计算高可用的主要设计目标是:当出现部分硬件损坏时,计算任务能够继续正常运行。因此计算高可用的本质是通过冗余来规避部分故障的风险,单台服务器是无论如何都达不到这个目标的。所以计算高可用的设计思想很简单:通过增加更多服务器来达到计算高可…...
Python 有用的库模块
简介 Python中有许多常用的库或者模块,在写代码的时候或多或少会遇到,本文对其进行总结,方便日后查阅。 pprint Python中的pprint模块是用于打印数据结构(如字典,列表等)的模块,提供了一种以…...

vivado DDS学习
实现DDS通常有两种方式,一种是读取ROM存放的正弦/余弦信号的查表法,另一种是用DDS IP核。这篇学习笔记中,我们要讲解说明的是VIVADO DDS IP核的应用。 目前本篇默认Phase Generator and SIN/COS LUT(DDS)的standard模式…...

微信小程序(十六)slot插槽
注释很详细,直接上代码 上一篇 温馨提醒:此篇需要自定义组件的基础,如果不清楚请先看上一篇 新增内容: 1.单个插槽 2.多个插槽 单个插糟 源码: myNav.wxml <view class"navigationBar custom-class">…...
gtest 单元测试
文章目录 前言一、Google Test介绍1.1 gtest源码下载编译1.2 常用API介绍1.3 gtest运行参数介绍 二、Google Mock参考资料 前言 Google Test(简称gtest)是一个开源的C单元测试框架。和常见的测试工具一样,gtest提供了单体测试常见的工具和组…...

掌握assert的使用:断言在错误检查和调试中不可或缺
断言在错误检查和调试中不可或缺 一、简介二、断言的基本语法和用法三、错误检查与断言四、 调试与断言五、避免滥用断言六、总结 一、简介 断言是一种在程序中用于检查特定条件是否满足的工具。一般用于验证开发者的假设,如果条件不成立,就会导致程序报…...
概念杂记--到底啥是啥?(数据库篇)
文章目录 1.聚集索引(clustered index)2.非聚集索引(Non-clustered index)3.聚集索引和非聚集索引区别?4.覆盖索引(covering index)5、复合索引 (Composite Index)6.索引…...

Ubuntu20.4 Mono C# gtk 编程习练笔记(四)
连续实时绘图 图看上去不是很清晰,KAZAM录屏AVI尺寸80MB, 转换成gif后10MB, 按CSDN对GIF要求,把它剪裁缩小压缩成了上面的GIF,图像质量大不如原屏AVI,但应该能说明原意:随机数据随时间绘制在 gtk 的 drawin…...
1 月 26日算法练习
文章目录 九宫幻方穿越雷区走迷宫 九宫幻方 小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个33的矩阵当中,使得每一行、每一列和每一条对角线的和都是相同的。 三阶幻方又被称…...

今日AI大热潮,明日智能风向标
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

03 SB实战 -微头条之首页门户模块(跳转某页面自动展示所有信息+根据hid查询文章全文并用乐观锁修改阅读量)
1.1 自动展示所有信息 需求描述: 进入新闻首页portal/findAllType, 自动返回所有栏目名称和id 接口描述 url地址:portal/findAllTypes 请求方式:get 请求参数:无 响应数据: 成功 {"code":"200","mes…...
Abaqus许可分析工具
在当今的知识产权保护和许可管理领域,一款高效、精准的许可分析工具对于企业来说至关重要。Abaqus许可分析工具凭借其强大的功能和卓越的性能,成为了企业优化知识产权许可管理的得力助手。 一、Abaqus许可分析工具的核心优势 1.全面性:Abaqus…...
【开发工具】从eclipse到idea的过度
背景 随着eclipse相比以前性能慢了不少,idea在开发工具领域越战越猛,市场份额也逐年增加,其体验得了软件工程师的热爱。 概要 本文只是做了一个简要的记录,简单描述下本人从eclipse到idea的过度的心态。 正文 在大厂都会研发自…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
基于鸿蒙(HarmonyOS5)的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...

《信号与系统》第 6 章 信号与系统的时域和频域特性
目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...