86、Kubernetes 容器应用部署与 Linux 系统获取指南

Kubernetes 容器应用部署与 Linux 系统获取指南

1. Kubernetes 容器应用操作

1.1 容器内通信测试

在容器中启动 shell 后,可使用 date ps 命令查看输出。通过 ps 能发现容器中运行的第一个进程(PID 1)是 server.js 脚本。之后,使用 curl 命令可与本地主机端口 8080 上的容器成功通信,示例命令如下:

root@kubernetes-bootcamp-5b48cfdcbd-lf9t2:/# curl localhost:8080
Hello Kubernetes bootcamp!|Running on:kubernetes-bootcamp-5b48cfdcbd-lf9t2|v=1
root@kubernetes-bootcamp-5b48cfdcbd-lf9t2:/# exit

1.2 服务暴露

若要使 kubernetes-bootcamp 容器能从运行它的工作节点的外部 IP 地址访问,可创建一个 NodePort 对象,具体步骤如下:
1. 检查容器是否运行

$ kubectl get pods
NAME                                   READY   STATUS    RESTARTS   AGE
kubernetes-bootcamp-765bf4c7b4-fdl96   1/1     Running   0          26m
  1. 检查服务 :查看默认命名空间中运行的服务,此时只有 kubernetes 服务可用,且没有服务将 kubernetes-bootcamp 容器暴露在集群外部。
$ kubectl get services
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   31m
  1. 创建服务 :创建一个使用 NodePort 的服务,使容器能通过主机上的特定端口号(8080)访问。
$ kubectl expose deployment/kubernetes-bootcamp \
    --type="NodePort" --port 8080
service/kubernetes-bootcamp exposed
  1. 查看新服务 :查看服务在主机上可用的 IP 地址和端口号。
$ kubectl get services
NAME                TYPE      CLUSTER-IP   EXTERNAL-IP  PORT(S)        AGE
kubernetes          ClusterIP 10.96.0.1    <none>       443/TCP        33m
kubernetes-bootcamp NodePort  10.96.66.230 <none>       8080:32374/TCP 5s

还可使用以下命令查看服务详细信息:

$ kubectl describe services/kubernetes-bootcamp
Name:                     kubernetes-bootcamp
Namespace:                default
Labels:                   app=kubernetes-bootcamp
Annotations:              <none>
Selector:                 app=kubernetes-bootcamp
Type:                     NodePort
IP:                        10.96.66.230
Port:                     <unset>  8080/TCP
TargetPort:               8080/TCP
NodePort:                 <unset>  30000/TCP
Endpoints:                172.17.0.6:8080
Session Affinity:         None
External Traffic Policy:  Cluster
  1. 获取分配的节点端口 :将分配给服务的端口号赋值给 $NODE_PORT 变量。
$ export NODE_PORT=$(kubectl get services/kubernetes-bootcamp \
-o go-template='{{(index .spec.ports 0).nodePort}}')
$ echo NODE_PORT=$NODE_PORT
NODE_PORT=30000
  1. 访问服务 :使用 curl 命令检查服务是否可通过 NodePort 访问(使用 Minikube 实例的 IP 地址)。
$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp!|Running on:kubernetes-bootcamp-765bf4c7b4-fdl96|v=1

1.3 服务标签操作

1.3.1 检查容器标签

使用以下命令检查容器的标签,目前 kubernetes-bootcamp 是分配给容器的唯一标签。

$ kubectl describe deployment
Name:                   kubernetes-bootcamp
Namespace:              default
CreationTimestamp:      Fri, 14 Feb 2020 05:43:49 +0000
Labels:                 run=kubernetes-bootcamp
Annotations:            deployment.kubernetes.io/revision: 1
1.3.2 添加标签

为容器添加额外标签(v1),先获取容器名称,再添加新标签。

$ export POD_NAME=$(kubectl get pods -o go-template --template \
 '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}') ; \
echo Name of the Pod: $POD_NAME
Name of the Pod: kubernetes-bootcamp-765bf4c7b4-fdl96
$ kubectl label pod $POD_NAME app=v1
pod/kubernetes-bootcamp-765bf4c7b4-fdl96 labeled
1.3.3 检查并使用标签

检查 v1 标签是否已分配给容器,并使用该标签列出容器信息。

$ kubectl describe pods $POD_NAME
Name:         kubernetes-bootcamp-765bf4c7b4-fdl96
Namespace:    default
Priority:     0
Node:         minikube/172.17.0.62
Start Time:   Fri, 14 Feb 2020 05:44:08 +0000
Labels:       app=v1
              pod-template-hash=765bf4c7b4
              run=kubernetes-bootcamp
$ kubectl get pods -l app=v1
NAME                                   READY   STATUS    RESTARTS   AGE
kubernetes-bootcamp-765bf4c7b4-fdl96   1/1     Running   0          60m

1.4 删除服务

若不再使用服务,可将其删除,但这不会删除部署本身,操作步骤如下:
1. 检查服务 :确保 kubernetes-bootcamp 服务仍然存在。

$ kubectl get services
NAME                TYPE      CLUSTER-IP   EXTERNAL-IP PORT(S)       AGE
kubernetes          ClusterIP 10.96.0.1    <none>      443/TCP       63m
kubernetes-bootcamp NodePort  10.96.66.230 <none>   8  080:32374/TCP 30m
  1. 删除服务 :使用标签名删除服务。
$ kubectl delete service -l run=kubernetes-bootcamp
service "kubernetes-bootcamp" deleted
  1. 检查服务和部署 :确保服务已删除,但部署仍然存在。
$ kubectl get services
NAME                TYPE      CLUSTER-IP   EXTERNAL-IP  PORT(S)      AGE
kubernetes          ClusterIP 10.96.0.1    <none>       443/TCP      64m
$ kubectl get deployment
NAME                 READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp  1/1     1            1           65m

1.5 应用扩展

Kubernetes 的强大功能之一是能根据需求扩展应用。以下步骤将 kubernetes-bootcamp 部署从运行一个容器扩展到多个容器:
1. 获取部署信息 :列出 kubernetes-bootcamp 部署的信息,注意此时只有一个副本集(rs)处于活动状态。

$ kubectl get deployments
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   1/1     1            1           107s
$ kubectl get rs
NAME                             DESIRED   CURRENT   READY   AGE
kubernetes-bootcamp-5b48cfdcbd   1         1         1       3m4s
  1. 扩展副本集 :将部署扩展到四个副本集。
$ kubectl scale deployments/kubernetes-bootcamp --replicas=4
deployment.extensions/kubernetes-bootcamp scaled
  1. 检查新副本 :列出部署,确保现在有四个副本就绪并可用。
$ kubectl get deployments
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   4/4     4            4           8m44s
  1. 检查容器 :此时应该有四个 kubernetes-bootcamp 容器在运行,每个容器在集群内都有自己的 IP 地址。
$ kubectl get pods -o wide
NAME                       READY   STATUS    RESTARTS AGE   IP
   NODE      NOMINATED NODE   READINESS GATES
kubernetes-bootcamp-5b4... 1/1     Running   0        8m43s 
172.18.0.4
   minikube  <none>           <none>
kubernetes-bootcamp-5b4... 1/1     Running   0        12s   
172.18.0.8
   minikube  <none>           <none>
kubernetes-bootcamp-5b4... 1/1     Running   0        12s   
172.18.0.6
   minikube  <none>           <none>
kubernetes-bootcamp-5b4..  1/1     Running   0        12s   
172.18.0.7
   minikube  <none>           <none>
  1. 查看部署详细信息 :查看部署中副本增加的详细信息。
$ kubectl describe deployments/kubernetes-bootcamp
Name:                   kubernetes-bootcamp
Namespace:              default
...
Replicas:    4 desired | 4 updated | 4 total | 4 available | 0 
unavailable
...
NewReplicaSet:   kubernetes-bootcamp-5b48cfdcbd (4/4 replicas 
created)
Events:
  Type    Reason             Age    From                   Message
  ----    ------             ----   ----                   -------
  Normal  ScalingReplicaSet  17m    deployment-controller  Scaled 
up
     replica set kubernetes-bootcamp-5b48cfdcbd to 1
  Normal  ScalingReplicaSet  9m25s  deployment-controller  Scaled 
up
replica set kubernetes-bootcamp-5b48cfdcbd to 4

1.6 负载均衡检查

为检查流量是否在四个复制的容器之间分配,可获取 NodePort 并使用 curl 命令进行测试:
1. 列出服务详细信息 :查看 kubernetes-bootcamp 服务的详细信息。

$ kubectl describe services/kubernetes-bootcamp
Name:            kubernetes-bootcamp
Namespace:       default
Labels:          run=kubernetes-bootcamp
Annotations:     <none>
Selector:        run=kubernetes-bootcamp
Type:            NodePort
IP:              10.99.183.8
Port:            <unset>  8080/TCP
TargetPort:      8080/TCP
NodePort:        <unset>  31915/TCP
Endpoints:       172.18.0.4:8080,172.18.0.6:8080,172.18.0.7:8080 + 
1 more...
  1. 获取 NodePort :将分配给服务的端口号赋值给 $NODE_PORT 变量。
$ export NODE_PORT=$(kubectl get services/kubernetes-bootcamp \
  -o go-template='{{(index .spec.ports 0).nodePort}}')
$ echo NODE_PORT=$NODE_PORT
NODE_PORT=31915
  1. 运行 curl 命令 :多次运行 curl 命令查询服务,若每次访问的容器不同,则说明负载均衡正常工作。
$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp!|Running on:kubernetes-bootcamp-5b48cfdcbd-9j4xp|v=1

1.7 应用缩减

若要缩减部署中定义的副本集数量,只需将副本数量更改为较低的值:
1. 缩减副本集 :将部署的副本数量更改为 2。

$ kubectl scale deployments/kubernetes-bootcamp –replicas=2
deployment.extensions/kubernetes-bootcamp scaled
  1. 检查部署 :查看部署是否已设置为 2 个副本,且只有两个容器在运行。
$ kubectl get deployments
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   2/2     2            2           52m
$ kubectl get pods -o wide
NAME                       READY   STATUS    RESTARTS AGE   IP
   NODE      NOMINATED NODE   READINESS GATES
kubernetes-bootcamp-5b4... 1/1     Running   0        8m43s 
172.18.0.4
   minikube  <none>           <none>
kubernetes-bootcamp-5b4... 1/1     Running   0        12s   
172.18.0.8

1.8 相关工具和资源

若想继续学习更高级的 Kubernetes 教程,可返回主 Kubernetes 教程页面(https://kubernetes.io/docs/tutorials/)。此外,Kubernetes By Example 网站(https://kubernetesbyexample.com)也提供了更多使用 Kubernetes 的信息。

1.9 企业级 Kubernetes 平台 - OpenShift

Red Hat OpenShift 容器平台(www.openshift.com)旨在提供企业级的 Kubernetes 平台,可用于关键任务应用程序。作为混合云平台,OpenShift 可部署在裸机和云环境中。

与开源的 Kubernetes 项目不同,基于 Kubernetes 的产品(如 OpenShift)提供了稳定且受支持的平台,企业可依赖其开展业务。OpenShift 有多种变体,可安装在自己的数据中心或云环境(如 AWS 和 Azure)中,也可使用 Red Hat 维护的专用 OpenShift 集群。

Red Hat 构建到 OpenShift 中的 Kubernetes 功能经过了全面测试和支持,并围绕这些功能提供了培训和文档。此外,还内置了更复杂的功能,如高级政府合规功能和与各种云环境的紧密集成。

Red Hat OpenShift 具有直观的 Web 控制台,便于初学者使用。可从 https://try.openshift.com 获得 OpenShift 的免费试用版,还有开源的上游项目 OKD(www.okd.io)可供免费使用。

2. Linux 系统获取与安装

2.1 Linux 系统获取概述

若未购买预装 Linux 的计算机或未让他人安装,可通过多种方式获取 Linux 发行版并在计算机上安装或实时运行。Linux 发行版通常可从其官方网站下载 ISO 镜像。

ISO 镜像是一种以 ISO 9660 文件系统格式格式化的磁盘镜像,可用于创建可引导的 USB 闪存驱动器、CD 或 DVD 介质。在 Linux 中,ISO 镜像可通过回环模式挂载,以便查看或复制其内容。当 ISO 镜像包含 Linux Live CD 或安装镜像时,可从 CD 或 DVD 启动计算机,而无需从硬盘启动,这样可以在不更改或损坏硬盘数据的情况下运行不同的操作系统。

2.2 获取不同的 Linux 发行版

2.2.1 获取 Fedora

可从 GetFedora.org(https://getfedora.org/en/workstation/download)获取 64 位 Fedora Workstation 镜像。若使用 64 位计算机,必须使用 64 位 ISO 镜像。例如,Fedora 31 Workstation 的具体 ISO 镜像链接为:
https://download.fedoraproject.org/pub/fedora/linux/releases/31/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-31-1.9.iso

最新的 Fedora Workstation ISO 镜像无法存储在 CD 上,需刻录到 DVD 或 USB 闪存驱动器。下载步骤如下:
1. 从 GetFedora.org 选择 Workstation 或 Server(建议选择 Workstation)。
2. 点击“Download Now”按钮,再点击“Download”按钮,弹出窗口询问对 ISO 镜像的操作。
3. 选择保存 ISO 镜像,根据设置可能会询问保存位置,或直接下载到默认文件夹(在 Linux 中可能是 Downloads 文件夹)。
4. 若提示选择保存位置,选择有足够空间的文件夹,并记住该位置,以便后续刻录。

此外,还可从 GetFedora.org 页面底部下载特殊配置的 Fedora ISO 镜像(spins),例如:
- KDE 桌面版:适合喜欢 KDE 桌面而非 GNOME 桌面的用户。
- 轻量级桌面版:如 Xfce 和 LXQt 版本,适合内存或处理能力较低的计算机。
- 桌面特效版:MATE - Compiz 版本提供更丰富的桌面特效。
- 儿童友好桌面版:SOAS 桌面是 Sugar 学习平台的一个版本,提供简化的设置和儿童友好的图形界面,可通过 USB 驱动器携带并在任何可用计算机上运行。

2.2.2 获取 Red Hat Enterprise Linux

许多大型企业、政府机构和大学使用 Red Hat Enterprise Linux 运行关键任务应用程序。虽然 Red Hat Enterprise Linux 的源代码是免费的,但包含安装包的 ISOs(通常称为二进制文件)仅对拥有 Red Hat 客户门户(https://access.redhat.com)账户的用户或通过评估副本提供。

若没有账户,可尝试注册 30 天试用版。若有账户,可从 https://access.redhat.com/downloads 下载所需的 Red Hat Enterprise Linux 服务器 ISO 镜像或申请评估副本。Red Hat 不提供 Red Hat Enterprise Linux 的实时版本,而是提供可安装的 DVD 镜像。

2.2.3 获取 Ubuntu

许多 Linux 新手通过下载和安装 Ubuntu 开始使用 Linux。Ubuntu 拥有庞大的粉丝群体和众多活跃的贡献者,若遇到问题,可在活跃的论坛上获得帮助。

若已安装 Ubuntu 系统,可跟随大部分操作。可从 http://www.ubuntu.com/download/ubuntu 下载 Ubuntu 的 Live ISO 镜像或安装介质。下载步骤如下:
1. 点击“Download”按钮,默认下载最新的 64 位 Ubuntu 桌面 Live ISO 镜像。
2. 根据设置,可能会询问保存位置,或直接下载到默认文件夹。
3. 若提示选择保存位置,选择有足够空间的文件夹,并记住该位置,以便后续刻录。

下载完成后,可使用后续介绍的方法将 ISO 镜像刻录到 DVD。还可从 http://www.ubuntu.com/download/alternative-downloads 找到其他类型的 Ubuntu 安装介质。

2.3 从 USB 驱动器启动 Linux

可将 Linux 系统安装到 USB 驱动器上,而非刻录 ISO 镜像到 CD 或 DVD。USB 驱动器具有可读写的优点,可在不同会话之间保存内容。大多数现代计算机可从 USB 驱动器启动,但可能需要在启动过程中中断 BIOS,选择从 USB 驱动器而非硬盘或 CD/DVD 驱动器启动。

以下是将 Fedora 和 Ubuntu 安装到 USB 驱动器的方法:
- Fedora :使用名为 Live USB Creator 的工具,可在 Windows 或 Linux 系统中将 Fedora ISO 镜像安装到 USB 驱动器。插入 USB 驱动器,重启计算机,在 BIOS 启动时中断(可能是 F12),选择从 USB 驱动器启动。具体操作步骤可参考 https://docs.fedoraproject.org/en-US/quick-docs/creating-and-using-a-live-installation-image/index.html。
- Ubuntu :Ubuntu 提供了在 Windows、MacOS 或 Linux 系统上创建可引导 USB 驱动器的方法。可在 Ubuntu 下载页面的“Easy ways to switch to Ubuntu”部分找到相应的“如何创建可引导 USB 驱动器”的操作步骤,具体链接为 https://ubuntu.com/tutorials/tutorial-create-a-usb-stick-on-ubuntu#1-overview。

2.4 创建 Linux CDs 和 DVDs

下载 Linux CD 或 DVD 镜像后,可使用多种工具创建可引导的 CDs 或 DVDs,用于安装或实时运行 Linux。在开始之前,需要准备以下内容:
- DVD 或 CD ISO 镜像 :下载代表物理 DVD 或 CD 的 ISO 镜像,如今大多数 Linux ISO 镜像太大,无法存储在 CD 上(包括 RHEL、Fedora 和 Ubuntu)。
- 空白 DVDs/CDs :需要空白的 DVDs 或 CDs 来刻录镜像,CD 容量约为 700MB,DVD 单层容量约为 4.7GB。
- CD/DVD 刻录机 :需要能够刻录 CDs 或 DVDs 的驱动器,并非所有 CD/DVD 驱动器都能刻录 DVD(尤其是较旧的驱动器),可能需要找到具有相应功能的计算机。

以下是在不同系统中刻录可引导 CDs 和 DVDs 的方法:

2.4.1 在 Windows 中刻录
  • Windows 自带功能 :在最新的 Windows 版本中,刻录 ISO 镜像到 CD 或 DVD 的功能已内置。下载 ISO 镜像后,插入可写的 CD 或 DVD,右键单击下载的 ISO 镜像图标,选择“Burn Disc Image”。当 Windows Disc Image Burner 窗口出现时,选择“Burn”进行刻录。
  • Roxio Creator :这是一款第三方 Windows 应用程序,具有多种刻录和复制 CDs 和 DVDs 的功能,可参考 http://www.roxio.com/en/products/creator/ 了解更多信息。
  • Nero CD/DVD Burning ROM :Nero 是 Windows 系统中流行的 CD/DVD 刻录软件,可访问 http://www.nero.com 了解更多信息。
2.4.2 在 MacOS 系统中刻录

MacOS 操作系统内置了 CD/DVD 刻录软件,刻录步骤如下:
1. 在 MacOS 系统上下载所需的 ISO 镜像,桌面上会出现代表 ISO 镜像的图标。
2. 根据镜像大小,插入合适的空白 CD 或 DVD。
3. 右键单击刚下载的 Linux ISO 镜像图标,选择“Burn ‘Linux’ to Disk”,弹出窗口询问是否确认刻录。
4. 填写要给 ISO 镜像的名称和写入速度,然后选择“Burn”,镜像开始刻录到磁盘。
5. 刻录完成后,弹出磁盘,即可在合适的计算机上启动 CD 或 DVD。

2.4.3 在 Linux 中刻录

Linux 提供了图形和命令行工具用于将 CD 和 DVD 镜像刻录到物理介质,以下是使用 K3b 或 cdrecord(或 wodim)刻录 ISO 镜像的示例:
- 安装工具
- 对于 Fedora 或 RHEL:

# yum install k3b
# yum install wodim
- 对于 Debian 或 Ubuntu:
# apt-get install k3b
# apt-get install wodim
  • 使用 K3b 从桌面刻录
    1. 将所需的 ISO 镜像下载到计算机硬盘(CD 镜像大小通常小于 700MB,单层 DVD 镜像大小小于 4.7GB)。
    2. 打开 CD/DVD 刻录应用程序,建议使用 K3b CD and DVD Kreator(http://www.k3b.org)。在 Fedora 中,选择“Activities”并输入“K3b”(或在终端窗口中输入“k3b”),打开“K3b – The CD and DVD Kreator”窗口。
    3. 从 K3b 窗口中选择“Tools ➪ Burn Image”以刻录 CD 或 DVD ISO 镜像,选择要刻录的镜像文件。
    4. 选择下载或复制到硬盘的镜像文件,选择后会出现“Burn Image”窗口和镜像的校验和。
    5. 插入空白 CD 或 DVD 到 CD/DVD 驱动器(可能是组合驱动器),若弹出“CD/DVD Creator”窗口,可关闭它。
    6. 检查“Burn Image”窗口中的设置(通常默认设置即可,但如果刻录失败,可尝试降低写入速度),还可选择“Simulate”复选框在实际写入 CD/DVD 之前进行测试,然后点击“Start”继续。
    7. 刻录完成后,弹出磁盘,并标记相关信息(如发行版名称、版本号、日期和 ISO 镜像名称)。
  • 使用 cdrecord 从命令行刻录 :若没有图形界面或喜欢使用命令行,可使用 cdrecord 命令刻录 ISO 镜像。插入空白 CD 或 DVD,将要刻录的 ISO 镜像放在当前目录下,使用以下简单命令将 CD 镜像刻录到 CD 或 DVD:
# cdrecord -v whatever.iso

可通过 man cdrecord 查看 cdrecord 命令的其他选项。

2.5 总结

Kubernetes 已成为在大型数据中心部署容器化应用程序的首选平台,其集群由主节点(指导集群活动)和工作节点(实际运行容器化负载)组成。使用 Kubernetes 运行容器化应用程序时,可创建部署来定义应用程序的状态,例如部署多个代表应用程序的容器副本,将应用程序标识为服务,并设置应用程序可从运行节点的指定端口访问。

当需要在稳定且受支持的环境中运行关键任务应用程序时,可选择基于 Kubernetes 的产品,如 Red Hat OpenShift 容器平台。OpenShift 可在多种环境中运行支持的 Kubernetes 集群配置,包括裸机和各种云环境。

同时,可根据自身需求从不同渠道获取 Linux 发行版,并使用相应的工具将其安装到计算机或 USB 驱动器上,以便在计算机上运行 Linux 系统。

2.6 练习

以下是一些尝试 Kubernetes 的练习任务:
1. 在本地系统上安装 Minikube 或通过外部方式访问 Minikube 实例(如通过 Kubernetes.io 教程)。
2. 查看 Minikube 版本、kubectl 客户端版本和 Kubernetes 服务版本。
3. 创建一个管理运行 hello-node 容器镜像(gcr.io/hello-minikube-zero-install/hello-node)的部署。
4. 使用适当的 kubectl 命令查看 hello-node 部署并详细描述该部署。
5. 查看与 hello-node 部署关联的当前副本集。
6. 将 hello-node 部署扩展到三个(3)副本。
7. 使用 LoadBalancer hello-node 部署暴露在 Kubernetes 集群外部。
8. 获取 Minikube 实例的 IP 地址和暴露的 hello-node 服务的端口号。
9. 使用 curl 命令通过上一步的 IP 地址和端口号查询 hello-node 服务。
10. 使用 kubectl 命令删除 hello-node 服务和部署,然后使用 minikube 命令停止 Minikube 虚拟机。

3. 操作流程总结与对比

3.1 Kubernetes 操作流程总结

操作类型 操作步骤
容器内通信测试 1. 启动 shell
2. 使用 date ps 命令查看输出
3. 用 curl 命令测试与本地主机端口 8080 通信
服务暴露 1. 检查容器是否运行: kubectl get pods
2. 检查服务: kubectl get services
3. 创建服务: kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080
4. 查看新服务: kubectl get services
5. 获取分配的节点端口: export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')
6. 访问服务: curl $(minikube ip):$NODE_PORT
服务标签操作 1. 检查容器标签: kubectl describe deployment
2. 添加标签:先获取容器名称,再添加新标签
3. 检查并使用标签: kubectl describe pods $POD_NAME kubectl get pods -l app=v1
删除服务 1. 检查服务: kubectl get services
2. 删除服务: kubectl delete service -l run=kubernetes-bootcamp
3. 检查服务和部署: kubectl get services kubectl get deployment
应用扩展 1. 获取部署信息: kubectl get deployments kubectl get rs
2. 扩展副本集: kubectl scale deployments/kubernetes-bootcamp --replicas=4
3. 检查新副本: kubectl get deployments
4. 检查容器: kubectl get pods -o wide
5. 查看部署详细信息: kubectl describe deployments/kubernetes-bootcamp
负载均衡检查 1. 列出服务详细信息: kubectl describe services/kubernetes-bootcamp
2. 获取 NodePort export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')
3. 运行 curl 命令: curl $(minikube ip):$NODE_PORT
应用缩减 1. 缩减副本集: kubectl scale deployments/kubernetes-bootcamp –replicas=2
2. 检查部署: kubectl get deployments kubectl get pods -o wide

3.2 Linux 系统获取与安装流程总结

graph LR
    A[选择 Linux 发行版] --> B[下载 ISO 镜像]
    B --> C{安装方式}
    C -->|CD/DVD| D[刻录 ISO 到 CD/DVD]
    C -->|USB 驱动器| E[安装到 USB 驱动器]
    D --> F[从 CD/DVD 启动安装]
    E --> G[从 USB 驱动器启动安装]

3.3 不同 Linux 发行版获取对比

发行版 获取方式 特点
Fedora 从 GetFedora.org 下载,有多种桌面版本可选 适合测试和学习,有丰富的桌面选择
Red Hat Enterprise Linux 需 Red Hat 客户门户账户或评估副本 用于关键任务应用,有专业支持
Ubuntu 从 http://www.ubuntu.com/download/ubuntu 下载 新手友好,社区活跃

4. 常见问题解答

4.1 Kubernetes 相关问题

  • :在扩展应用时,副本集数量设置有什么限制吗?
    :副本集数量理论上没有严格限制,但要考虑集群资源,如 CPU、内存等。若资源不足,可能导致部分副本无法正常启动。
  • :删除服务后,容器会怎样?
    :删除服务不会删除部署和容器,只是无法通过该服务访问容器。

4.2 Linux 系统相关问题

  • :下载的 ISO 镜像太大,CD 装不下怎么办?
    :可选择刻录到 DVD 或 USB 驱动器。大多数现代 Linux 发行版 ISO 镜像都较大,建议使用 DVD 或 USB 驱动器。
  • :从 USB 驱动器启动 Linux 时,无法进入系统怎么办?
    :首先检查 USB 驱动器是否正确制作,可重新制作。其次,在 BIOS 中确保正确选择了从 USB 驱动器启动。

5. 未来趋势与展望

5.1 Kubernetes 发展趋势

Kubernetes 作为容器编排领域的领导者,未来将继续发展和完善。可能会在以下方面有更多进展:
- 自动化管理 :进一步提高自动化水平,减少人工干预,如自动扩展、自动修复等。
- 多集群管理 :支持更便捷的多集群管理,满足企业大规模部署需求。
- 安全增强 :加强安全机制,保障容器化应用的安全运行。

5.2 Linux 发行版发展趋势

Linux 发行版将继续多样化发展,不同发行版会针对不同用户群体和应用场景进行优化:
- 云原生支持 :更好地支持云原生应用,与 Kubernetes 等云原生技术深度集成。
- 用户体验提升 :不断提升用户体验,如更简洁的安装过程、更友好的界面等。

6. 总结与建议

6.1 总结

本文详细介绍了 Kubernetes 容器应用的操作,包括容器内通信测试、服务暴露、标签操作、删除服务、应用扩展和缩减等,还介绍了 Linux 系统的获取与安装方法,涵盖 Fedora、Red Hat Enterprise Linux 和 Ubuntu 等发行版,以及从 USB 驱动器启动和刻录 ISO 镜像的操作。

6.2 建议

  • Kubernetes 方面 :在进行操作时,要注意集群资源的使用情况,合理设置副本集数量。同时,定期备份重要的配置和数据,以防意外情况。
  • Linux 系统方面 :根据自身需求选择合适的发行版,若为新手,建议选择 Ubuntu;若用于关键任务,可考虑 Red Hat Enterprise Linux。在安装过程中,严格按照操作步骤进行,确保安装成功。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值