第2章-便捷性设置以及集群插件的安装
原创
本博客原创文章,转载请注明出处
- name: 原创
desc: 本博客原创文章,转载请注明出处
bgColor: '#F0DFB1'
textColor: '#1078E6'
2
3
4
# 第2章-便捷性设置以及集群插件的安装
在上一章中,我们已经成功部署了 K8s 集群。在本章中将进行一些额外的配置,使得今后的工作更加便捷和高效。
本章要点 |
---|
配置命令行Tab自动补全 |
优化vim参数 |
掌握集群插件的部署 |
# 11. 命令行Tab自动补全
我们使用的 K8s 命令行工具主要有两个:kubeadm
和kubectl
。前者是集群的管理,后者是集群的应用。
默认情况下,这两个工具都不支持 Tab 键命令补全,如果能够使用该功能,则会为我们的命令输入带来极大的便捷性(听闻高版本的 K8s 已经自带了 Tab 补全,但经过测试并没有......还是得自己配置)。
1、编辑/etc/profile
文件,在文件上方添加以下内容,然后刷新配置。
# 编辑文件
vim /etc/profile
# 在文件中添加以下内容,添加完成后保存退出!注意!符号 < 和 ( 之间没有空格
source <(kubeadm completion bash)
source <(kubectl completion bash)
# 刷新配置
source /etc/profile
2
3
4
5
6
7
8
9
2、在命令行输入以下命令,边输入 边按 Tab 键,测试是否能够自动补全。
# 创建新的 token 并打印加入集群的命令
kubeadm token create --print-join-command
2
# 22. vim配置
我们经常使用 vim 来编辑文件,在 K8s 中也有大量的配置文件等着我们编写。
配置 vim 相关参数,让我们编辑得更加顺畅(也不一定非得 vim,你用别的编辑器也行)。
1、编辑~/.vimrc
文件,添加以下内容。
set nu
:编辑文件时,显示行号。syntax on
:开启文件着色。set tabstop=X
:设置制表符的长度为 X 个字符。set shiftwidth=X
:设置自动缩进的长度为 X 个字符set expandtab
:用相等数量的 空格 来替换 缩进。set autoindent
:自动缩进。
# 编辑文件
vim ~/.vimrc
# 在文件中添加以下内容,添加完成后保存退出
set nu
syntax on
set tabstop=4 shiftwidth=4 expandtab autoindent
2
3
4
5
6
7
2、保存退出后,再次打开文件,左边已经显示了行号,说明刚刚的配置生效了。
# 33. 安装calico网络
在 K8s 集群中,Pod 一般都部署在不同的主机上,想要实现 Pod 之间的跨主机通信,就必须安装 CNI 网络插件。
本篇教程选择 calico (opens new window) 网络。
1、安装之前,查看集群状态,所有节点的状态都为 “NotReady”(未准备就绪),说明存在问题。
kubectl get nodes
2、在 master 节点上,下载 calico 的配置文件。然后使用grep
命令筛选出 安装过程中需要用到的镜像名称。
筛选出了五个镜像条目,其中有两个是重复的,实际上只有 3 个镜像。
# 下载
wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/calico.yaml
# 筛选需要的镜像名称
grep image calico.yaml
2
3
4
5
3、在所有节点上,运行以下命令,将三个镜像下载到本地。
提示
集群内所有节点都需要下载镜像,保证每个 master 和 worker 节点上都有镜像
# 通过for循环拉取每一个镜像(时间可能较长,需要耐心等待)
for i in docker.io/calico/cni:v3.26.0 docker.io/calico/node:v3.26.0 docker.io/calico/kube-controllers:v3.26.0 ; do ctr -n k8s.io i pull $i ; done
2
4、在 master 节点上,编辑calico.yaml
文件,修改其中的 Pod 网段。
在上一章中, kubeadm 初始化时指定的网段为10.244.0.0/16
,所以此处也要设置为相同的值。
5、修改文件之后,在 master 节点上运行以下命令,安装 calico 网络。
kubectl create -f calico.yaml
笔记
一些用户可能喜欢用kubectl apply
来创建 calico 应用。
但官方文档 (opens new window)里提到:由于 CRD 捆绑包的大小很大,使用kubectl apply
可能会超出请求限制。所以,请使用kubectl create
或kubectl replace
。
6、安装 calico 网络之后,等待一段时间,所有节点的状态都会变为 “Ready” 。
图:节点状态依次变为 Ready
图:所有节点的状态都变为 Ready ,Pod 网络环境配置成功。
# 44. 安装metrics-server监控
如果想查看 K8s 集群里每个 节点或Pod 的工作负载(例如 CPU、内存使用情况),则需要安装监控类插件。
此处选择 metrics-server (opens new window) 监控。
1、尝试运行kubectl top nodes
和kubectl top pods
命令,出现错误 “度量API不可用”
2、在 master 主机上,下载 metrics-server 的配置文件。
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
3、查找所需镜像名称,然后通过阿里云源 下载相应镜像,并修改镜像名称。
提示
集群内所有节点都需要下载镜像,并修改镜像名称,保证每个 master 和 worker 节点上都有正确的镜像
# 查找所需镜像名称
grep image components.yaml
# 拉取镜像(对所有节点执行该操作)
ctr -n k8s.io i pull registry.aliyuncs.com/google_containers/metrics-server:v0.6.3
# 修改镜像名称(对所有节点执行该操作)
ctr -n k8s.io i tag registry.aliyuncs.com/google_containers/metrics-server:v0.6.3 registry.k8s.io/metrics-server/metrics-server:v0.6.3
ctr -n k8s.io i ls | grep metr
2
3
4
5
6
7
8
9
图:搜索和下载镜像
图:修改镜像名称
4、在 master 主机上,编辑components.yaml
文件,添加两个运行参数。
hostNetwork: true
,使用主机的物理 IP 地址,而非 Pod 虚拟网络地址。
- 该参数是为了确保 集群内的节点 能够与 metrics-server 应用进行通信。
--kubelet-insecure-tls
,允许不安全的 TLS 连接,不检查证书。
- kubelet 证书需要由 集群证书颁发机构 签名,配置证书的步骤较为繁琐。但由于我们只是学习 K8s,所以忽略证书检查(在 生产环境 中不建议这样做,因为这不安全)。
如果不添加以上两个参数,则 metrics-server 无法正常运行。
5、修改文件之后,运行以下命令,安装 metrics-server 监控。
kubectl apply -f components.yaml
6、等待一段时间后,运行以下命令,查看 节点/pod 的工作负载。
# 查看节点工作负载
kubectl top nodes
# 查看所有Pod工作负载
kubectl top pods -A
2
3
4
5
成功查看 CPU和内存 使用情况。
# 55. 小结
在本章中,我们完成了 K8s 集群的便捷性配置 以及 相关插件的安装,现在可以正式投入使用。
在下一章中,将介绍 K8s 的一些常用命令及操作。