MicroShift is Developer Preview software only.
For more information about the support scope of Red Hat Developer Preview software, see Developer Preview Support Scope.CLI 工具
了解如何使用 MicroShift 的命令行工具
摘要
第 1 章 红帽构建的 MicroShift CLI 工具
用户在红帽使用 MicroShift 构建的同时构建、部署和管理应用程序和集群。
红帽构建的 MicroShift 可以使用不同的命令行界面(CLI)工具,通过允许用户从终端执行各种管理和开发操作来简化这些任务。这些工具提供简单的命令来管理部署,并与系统的每个组件交互。
除了内置的 microshift
命令类型和 Linux CLI 工具外,如果您已经熟悉了 OpenShift Container Platform 和 Kubernetes,可以使用带有启用命令子集的可选 OpenShift CLI (oc
) 工具。
第 2 章 OpenShift CLI 入门
要使用 OpenShift CLI (oc
)工具,您必须独立于您的 {microshift-short} 安装下载并安装它。
2.1. 安装 OpenShift CLI
您可以通过下载二进制文件或使用 Homebrew 来安装 OpenShift CLI (oc
)。
2.1.1. 通过下载二进制文件安装 OpenShift CLI
您可以安装 OpenShift CLI (oc
)来使用命令行界面与红帽构建的 MicroShift 交互。您可以在 Linux、Windows 或 macOS 上安装 oc
。
如果安装了旧版本的 oc
,则无法使用 Red Hat build of MicroShift 4.12 中的所有命令。下载并安装新版本的 oc
。
在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc
)二进制文件。
红帽构建的 MicroShift 版本编号与 OpenShift Container Platform 版本号匹配。使用与 {microshift-short} 版本匹配的 oc
二进制文件,并具有适当的 RHEL 兼容性。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 产品变体 下拉列表中选择架构。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 Linux Client 条目旁的 Download Now 来保存文件。
解包存档:
tar xvf <file>
$ tar xvf <file>
Copy to Clipboard Copied! 将
oc
二进制文件放到PATH 中的目录中
。要查看您的
PATH
,请执行以下命令:echo $PATH
$ echo $PATH
Copy to Clipboard Copied!
安装 OpenShift CLI 后,可以使用 oc
命令:
oc <command>
$ oc <command>
在 Windows 上安装 OpenShift CLI
您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc
)二进制文件。
红帽构建的 MicroShift 版本编号与 OpenShift Container Platform 版本号匹配。使用与 {microshift-short} 版本匹配的 oc
二进制文件,并具有适当的 RHEL 兼容性。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 Windows Client 条目旁的 Download Now 来保存文件。
- 使用 ZIP 程序解压存档。
将
oc
二进制文件移到PATH 中的目录中
。要查看您的
PATH
,请打开命令提示并执行以下命令:path
C:\> path
Copy to Clipboard Copied!
安装 OpenShift CLI 后,可以使用 oc
命令:
oc <command>
C:\> oc <command>
在 macOS 上安装 OpenShift CLI
您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc
)二进制文件。
红帽构建的 MicroShift 版本编号与 OpenShift Container Platform 版本号匹配。使用与 {microshift-short} 版本匹配的 oc
二进制文件,并具有适当的 RHEL 兼容性。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.12 macOS Client 条目旁的 Download Now 来保存文件。
- 解包和解压存档。
将
oc
二进制文件移到 PATH 的目录中。要查看您的
PATH
,请打开终端并执行以下命令:echo $PATH
$ echo $PATH
Copy to Clipboard Copied!
安装 OpenShift CLI 后,可以使用 oc
命令:
oc <command>
$ oc <command>
2.1.2. 使用 Homebrew 安装 OpenShift CLI
对于 macOS,您可以使用 Homebrew 软件包管理器安装 OpenShift CLI(oc
)。
先决条件
-
已安装 Homebrew(
brew
)。
流程
运行以下命令来安装 openshift-cli 软件包:
brew install openshift-cli
$ brew install openshift-cli
Copy to Clipboard Copied!
2.1.3. 使用 RPM 安装 OpenShift CLI
对于 Red Hat Enterprise Linux (RHEL),如果您的红帽帐户上已有有效的 MicroShift 订阅,您可以将 OpenShift CLI (oc
)安装为 RPM。
先决条件
- 必须具有 root 或 sudo 权限。
流程
使用 Red Hat Subscription Manager 注册:
subscription-manager register
# subscription-manager register
Copy to Clipboard Copied! 获取最新的订阅数据:
subscription-manager refresh
# subscription-manager refresh
Copy to Clipboard Copied! 列出可用的订阅:
subscription-manager list --available --matches '*OpenShift*'
# subscription-manager list --available --matches '*OpenShift*'
Copy to Clipboard Copied! 在上一命令的输出中,找到红帽构建的 MicroShift 订阅的池 ID,并将订阅附加到注册的系统:
subscription-manager attach --pool=<pool_id>
# subscription-manager attach --pool=<pool_id>
Copy to Clipboard Copied! 启用红帽构建 MicroShift 4.12 所需的存储库。
subscription-manager repos --enable="rhocp-4.12-for-rhel-8-x86_64-rpms"
# subscription-manager repos --enable="rhocp-4.12-for-rhel-8-x86_64-rpms"
Copy to Clipboard Copied! 注意不支持将 OpenShift CLI(
oc
)安装为 Red Hat Enterprise Linux(RHEL)9 的 RPM。您必须通过下载二进制文件来安装 OpenShift CLI for {op-system-base} 9。安装
openshift-clients
软件包:yum install openshift-clients
# yum install openshift-clients
Copy to Clipboard Copied!
安装 CLI 后,就可以使用oc
命令:
oc <command>
$ oc <command>
第 3 章 配置 OpenShift CLI
根据您的偏好配置 oc
以使用它。
3.1. 启用 tab 自动完成功能
您可以为 Bash 或 Zsh shell 启用 tab 自动完成功能。
3.1.1. 为 Bash 启用 tab 自动完成
安装 OpenShift CLI (oc
)后,您可以启用 tab 自动完成功能,以便在按 Tab 键时自动完成 oc
命令或建议选项。以下流程为 Bash shell 启用 tab 自动完成功能。
先决条件
-
已安装 OpenShift CLI (
oc
)。 -
已安装软件包
bash-completion
。
流程
将 Bash 完成代码保存到一个文件中:
oc completion bash > oc_bash_completion
$ oc completion bash > oc_bash_completion
Copy to Clipboard Copied! 将文件复制到
/etc/bash_completion.d/
:sudo cp oc_bash_completion /etc/bash_completion.d/
$ sudo cp oc_bash_completion /etc/bash_completion.d/
Copy to Clipboard Copied! 您也可以将文件保存到一个本地目录,并从您的
.bashrc
文件中 source 这个文件。
开新终端时 tab 自动完成功能将被启用。
3.1.2. 为 Zsh 启用 tab 自动完成功能
安装 OpenShift CLI (oc
)后,您可以启用 tab 自动完成功能,以便在按 Tab 键时自动完成 oc
命令或建议选项。以下流程为 Zsh shell 启用 tab 自动完成功能。
先决条件
-
已安装 OpenShift CLI (
oc
)。
流程
要在
.zshrc
文件中为oc
添加 tab 自动完成功能,请运行以下命令:cat >>~/.zshrc<<EOF if [ $commands[oc] ]; then source <(oc completion zsh) compdef _oc oc fi EOF
$ cat >>~/.zshrc<<EOF if [ $commands[oc] ]; then source <(oc completion zsh) compdef _oc oc fi EOF
Copy to Clipboard Copied!
开新终端时 tab 自动完成功能将被启用。
第 4 章 使用 oc
工具
如果您已熟悉 OpenShift Container Platform 和 Kubernetes,可以使用可选的 OpenShift CLI (oc
) 工具。
4.1. 关于 OpenShift CLI
通过 OpenShift 命令行界面(CLI),oc
命令,您可以从终端部署和管理 MicroShift 项目的红帽构建。OpenShift CLI 在以下情况下是理想的选择:
- 直接使用项目源代码
- 编写红帽构建的 MicroShift 操作
- 管理项目,同时受带宽资源的限制
4.2. 在 Red Hat build of MicroShift 中使用 OpenShift CLI
查看以下部分以了解如何使用 oc
CLI 在红帽构建的 MicroShift 中完成常见任务。
4.2.1. 查看 pod
使用oc get pods
命令查看当前项目的 pod。
当您在 pod 中运行 oc
且没有指定命名空间时,默认使用 pod 的命名空间。
oc get pods -o wide
$ oc get pods -o wide
输出示例
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE cakephp-ex-1-build 0/1 Completed 0 5m45s 10.131.0.10 ip-10-0-141-74.ec2.internal <none> cakephp-ex-1-deploy 0/1 Completed 0 3m44s 10.129.2.9 ip-10-0-147-65.ec2.internal <none> cakephp-ex-1-ktz97 1/1 Running 0 3m33s 10.128.2.11 ip-10-0-168-105.ec2.internal <none>
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
cakephp-ex-1-build 0/1 Completed 0 5m45s 10.131.0.10 ip-10-0-141-74.ec2.internal <none>
cakephp-ex-1-deploy 0/1 Completed 0 3m44s 10.129.2.9 ip-10-0-147-65.ec2.internal <none>
cakephp-ex-1-ktz97 1/1 Running 0 3m33s 10.128.2.11 ip-10-0-168-105.ec2.internal <none>
4.2.2. 查看 pod 日志
使用oc logs
命令查看特定 pod 的日志。
oc logs cakephp-ex-1-deploy
$ oc logs cakephp-ex-1-deploy
输出示例
--> Scaling cakephp-ex-1 to 1 --> Success
--> Scaling cakephp-ex-1 to 1
--> Success
4.2.3. 列出支持的 API 资源
使用oc api-resources
命令查看服务器上支持的 API 资源列表。
oc api-resources
$ oc api-resources
输出示例
NAME SHORTNAMES APIGROUP NAMESPACED KIND bindings true Binding componentstatuses cs false ComponentStatus configmaps cm true ConfigMap ...
NAME SHORTNAMES APIGROUP NAMESPACED KIND
bindings true Binding
componentstatuses cs false ComponentStatus
configmaps cm true ConfigMap
...
4.3. 获得帮助
您可以通过以下方式获得 CLI 命令和红帽构建的 MicroShift 资源的帮助信息。
使用
oc help --flag
来获取有关特定 CLI 命令的信息:示例:获取
oc create
命令的帮助信息oc create --help
$ oc create --help
Copy to Clipboard Copied! 输出示例
Create a resource by filename or stdin JSON and YAML formats are accepted. Usage: oc create -f FILENAME [flags] ...
Create a resource by filename or stdin JSON and YAML formats are accepted. Usage: oc create -f FILENAME [flags] ...
Copy to Clipboard Copied! 使用
oc explain
命令查看特定资源的描述信息和项信息:示例:查看
Pod
资源的文档oc explain pods
$ oc explain pods
Copy to Clipboard Copied! 输出示例
KIND: Pod VERSION: v1 DESCRIPTION: Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts. FIELDS: apiVersion <string> APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources ...
KIND: Pod VERSION: v1 DESCRIPTION: Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts. FIELDS: apiVersion <string> APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources ...
Copy to Clipboard Copied!
4.4. 红帽构建的 MicroShift 中的 oc 命令错误
并非所有 OpenShift Container Platform CLI 工具(oc
)命令都与 MicroShift 部署的红帽构建相关。当您使用 oc
对不受支持的 API 发出请求调用时,oc
二进制文件通常会生成有关无法找到资源的错误消息。
输出示例
例如,当运行以下 new-project
命令时:
oc new-project test
$ oc new-project test
可能会出现信息:
Error from server (NotFound): the server could not find the requested resource (get projectrequests.project.openshift.io)
Error from server (NotFound): the server could not find the requested resource (get projectrequests.project.openshift.io)
当 get projects
命令运行时,可以会产生另一个错误,如下所示:
oc get projects
$ oc get projects
error: the server doesn't have a resource type "projects"
第 5 章 使用 oc 和 kubectl 命令
Kubernetes 命令行界面(CLI)kubectl
可以用来对 Kubernetes 集群运行命令。因为 Red Hat build of MicroShift 是一个经过认证的 Kubernetes 发行版本,所以您可以使用 Red Hat build of MicroShift 附带的受支持的 kubectl
二进制文件,或使用 oc
二进制文件来获取扩展功能。
5.1. oc 二进制文件
oc
二进制文件提供与 kubectl
二进制文件相同的功能,但它被扩展为原生支持额外的红帽构建的 MicroShift 功能,包括:
路由资源
Route
资源对象特定于红帽构建的 MicroShift 发行版本,基于标准 Kubernetes 原语构建。附加命令
例如,借助附加命令
oc new-app
可以更轻松地使用现有源代码或预构建镜像来启动新的应用程序。
如果安装了旧版本的 oc
二进制文件,则无法使用 Red Hat build of MicroShift 4.12 中的所有命令。如果需要最新的功能,您必须下载并安装与红帽构建的 MicroShift 服务器版本对应的 oc
二进制文件的最新版本。
非安全 API 更改至少涉及两个次发行版本(例如,4.1 到 4.2 到 4.3)来更新旧的 oc
二进制文件。使用新功能可能需要较新的 oc
二进制文件。一个 4.3 服务器可能会带有版本 4.2 oc
二进制文件无法使用的功能,而一个 4.3 oc
二进制文件可能会带有 4.2 服务器不支持的功能。
X.Y ( |
X.Y+N footnote:versionpolicyn[其中 N 是一个大于或等于 1 的数字] ( | |
X.Y (Server) |
|
|
X.Y+N footnote:versionpolicyn[] (Server) |
|
|
完全兼容。
oc
客户端可能无法访问服务器的功能。
oc
客户端可能会提供与要访问的服务器不兼任的选项和功能。
5.2. kubectl 二进制文件
提供 kubectl
二进制文件的目的是为来自标准 Kubernetes 环境的新红帽构建的 MicroShift 用户或者希望使用 kubectl
CLI 的用户支持现有工作流和脚本。kubectl
的现有用户可以继续使用二进制文件与 Kubernetes 原语交互,而无需更改红帽构建的 MicroShift 集群。
如果您下载了 oc
二进制文件,则 kubectl
二进制文件会包括在存档中。
如需更多信息,请参阅 kubectl 文档。
第 6 章 OpenShift CLI 命令参考
本参考提供了 OpenShift CLI (oc
) 命令的描述和示例命令。您必须具有 cluster-admin
或同等权限才能使用这些命令。
运行 oc adm -h
以列出所有管理员命令或运行 oc <command> --help
获取特定命令的更多详情。
使用 oc <command> --help
列出所有 oc
命令的详情。并非所有 oc
命令都适用于使用 MicroShift 的红帽构建。
6.1. oc command list for Red Hat build of MicroShift
以下列出了几个 oc
命令示例,可用于管理、部署和观察红帽构建的 MicroShift 节点。
6.1.1. oc apply
通过文件名或 stdin 将配置应用到资源
用法示例
Apply the configuration in pod.json to a pod
# Apply the configuration in pod.json to a pod
oc apply -f ./pod.json
# Apply resources from a directory containing kustomization.yaml - e.g. dir/kustomization.yaml
oc apply -k dir/
# Apply the JSON passed into stdin to a pod
cat pod.json | oc apply -f -
# Apply the configuration from all files that end with '.json' - i.e. expand wildcard characters in file names
oc apply -f '*.json'
# Note: --prune is still in Alpha
# Apply the configuration in manifest.yaml that matches label app=nginx and delete all other resources that are not in the file and match label app=nginx
oc apply --prune -f manifest.yaml -l app=nginx
# Apply the configuration in manifest.yaml and delete all the other config maps that are not in the file
oc apply --prune -f manifest.yaml --all --prune-whitelist=core/v1/ConfigMap
6.1.2. oc delete
通过文件名、stdin、资源和名称或者资源和标签选择器删除资源
用法示例
Delete a pod using the type and name specified in pod.json
# Delete a pod using the type and name specified in pod.json
oc delete -f ./pod.json
# Delete resources from a directory containing kustomization.yaml - e.g. dir/kustomization.yaml
oc delete -k dir
# Delete resources from all files that end with '.json' - i.e. expand wildcard characters in file names
oc delete -f '*.json'
# Delete a pod based on the type and name in the JSON passed into stdin
cat pod.json | oc delete -f -
# Delete pods and services with same names "baz" and "foo"
oc delete pod,service baz foo
# Delete pods and services with label name=myLabel
oc delete pods,services -l name=myLabel
# Delete a pod with minimal delay
oc delete pod foo --now
# Force delete a pod on a dead node
oc delete pod foo --force
# Delete all pods
oc delete pods --all
6.1.3. oc get
显示一个或多个资源
用法示例
List all pods in ps output format
# List all pods in ps output format
oc get pods
# List all pods in ps output format with more information (such as node name)
oc get pods -o wide
# List a single replication controller with specified NAME in ps output format
oc get replicationcontroller web
# List deployments in JSON output format, in the "v1" version of the "apps" API group
oc get deployments.v1.apps -o json
# List a single pod in JSON output format
oc get -o json pod web-pod-13je7
# List a pod identified by type and name specified in "pod.yaml" in JSON output format
oc get -f pod.yaml -o json
# List resources from a directory with kustomization.yaml - e.g. dir/kustomization.
oc get -k dir/
# Return only the phase value of the specified pod
oc get -o template pod/web-pod-13je7 --template={{.status.phase}}
# List resource information in custom columns
oc get pod test-pod -o custom-columns=CONTAINER:.spec.containers[0].name,IMAGE:.spec.containers[0].image
# List all replication controllers and services together in ps output format
oc get rc,services
# List one or more resources by their type and names
oc get rc/web service/frontend pods/web-pod-13je7
# List status subresource for a single pod.
oc get pod web-pod-13je7 --subresource status