练习题-1
# 课后练习题-1
# 理论练习(开放性试题)
涵盖第 1 章的内容。
- 在部署 kubernetes 集群之前,需要对主机参数进行配置,为 kubernetes 创造一个良好的运行环境。主机参数配置共需要配置六项内容,是哪六项?
- kubernetes 需要安装哪些软件?
- 主机参数和软件都已经准备就绪。从部署到加入集群,需要几步?
答案
- IP地址配置、主机名配置、系统安全措施配置(设置防火墙和关闭selinux)、关闭交换分区、配置yum源、设置内核参数。
- 共六个软件,三个主要软件(kubeadm、kubectl 和 kubelet),三个依赖软件(containerd、runC 和 CNI plugins)。
- 三步,第一步初始化 master 节点,第二步在 master 节点上生成配置文件,第三步在 worker 上加入集群。
# 实操练习
涵盖第 2 章和第 3 章的内容。
- 查看集群的完整信息。
- 查看集群中共有多少台主机。
- 找出命名空间
kube-system
中,CPU 消耗最高的 pod 是哪一个。 - 创建命名空间
ns1
,切换至命名空间ns1
,删除命名空间ns1
。 - 将一个节点设置成维护模式,然后将其从集群中彻底删除。
- 如果忘记了 worker 用于加入集群的命令,该怎么获取一个新的加入命令?
- 命令行工具 kubectl 和 kubeadm 的子命令及其选项,都是不能使用 Tab 键自动补全的。应该如何配置,才能使其支持 Tab 补全?请写出步骤(三步)。
答案分隔线
答案分隔线
答案分隔线
答案分隔线
答案分隔线
答案分隔线
答案分隔线
答案分隔线
答案分隔线
# 实操练习答案
# 1. 查看集群的完整信息
kubectl cluster-info dump
# 搭配输出重定向
kubectl cluster-info dump > info.json
1
2
3
4
2
3
4
# 2. 查看集群中共有多少台主机
运行以下命令之后,数一下共有多少台主机。
kubectl get nodes
1
搭配管道符,获得一个具体的主机数量:
wc -l
:统计行数
如果返回数字 4,则说明集群内有 3 台主机。为什么是 3 台?因为kubectl get nodes
的结果中包含一行标题,四行内容去掉一行标题,剩下的三行就是主机信息,所以是 3 台主机。
kubectl get nodes | wc -l
1
再搭配 expr 算术命令,自动减去一行标题,获得的结果数字就是实际的主机数量:
kubectl get nodes | expr $(wc -l) - 1
1
# 3. 找出命名空间kube-system
中,CPU 消耗最高的 pod 是哪一个
运行以下命令,然后看第一行的 CPU 信息即可:
--sort-by cpu
:根据 CPU 使用情况进行降序排序
kubectl top pods -n kube-system --sort-by cpu
1
# 4. 创建命名空间ns1
,切换至命名空间ns1
,删除命名空间ns1
即使你位于 ns1 中,你也可以直接删除 ns1。
kubectl create ns ns1
kubectl config set-context --current --namespace ns1
kubectl delete ns ns1
1
2
3
4
5
2
3
4
5
# 5. 将一个节点设置成维护模式,然后将其从集群中彻底删除
删除之后 自己尝试加回来。
kubectl drain <节点名称> --force --ignore-daemonsets
kubectl delete nodes <节点名称>
1
2
3
2
3
# 6. 如果忘记了 worker 用于加入集群的命令,该怎么获取一个新的加入命令
加入集群的命令可以忘,但是获取它的命令不能忘。
kubeadm token create --print-join-command
1
# 7. 命令行工具 kubectl 和 kubeadm 的子命令及其选项,都是不能使用 Tab 键自动补全的。应该如何配置,才能使其支持 Tab 补全?请写出步骤(三步)
# 第一步,打开系统配置文件
vim /etc/profile
# 第二步,添加以下内容,然后保存退出。注意符号 < 和 ( 之间没有空格
source <(kubectl completion bash)
source <(kubeadm completion bash)
# 刷新配置文件,使配置立即生效
source /etc/profile
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
编辑 (opens new window)