全面解释“Kubernetes” 的基础知识
在本文中,我们全面解释了Kubernetes(K8s)的基础知识!
-
- 「Kubernetesという言葉をチラッと聞いたことがあるけど、よく分からん」
-
- 「何となく使ってはいるけど、何してんのかよく分からん」
- 「Dockerは使ってことあるけど、Kubernetesって何?」
如果你是这样的人,请务必继续阅读!
在未来的系统开发和项目管理中,作为一名工程师,如果负责大规模的服务,那么接触Kubernetes的机会肯定会增加。对于有上进心的工程师来说,了解它绝对不会有任何损失!
同样,我认为您应该阅读《Kubernetes詳しいぜ!》这本书,它介绍了更深入地了解Kubernetes的学习方法。
Kubernetes能做些什么?

简单来说,Kubernetes 是用来管理容器的。它可以帮助我们完成以下任务。
-
- コンテナの起動管理
-
- コンテナの起動ノードの自動選定
-
- コンテナとKubernetesクラスタ外部との接続や負荷分散
- コンテナとボリュームの連携
通常情况下,人们会倾向于与Docker这个最受欢迎且被广泛使用的容器化工具一起使用,因为它可以使得创建(容器化)容器本身成为可能!
我认为在云上部署服务的情况下,大多数情况下会选择将其容器化。如果是规模庞大的服务,则需要处理多个容器。在这种情况下,我们会使用 Kubernetes 进行协调。很多知名服务都在使用 Kubernetes。
如果要详细解释Kubernetes,需要对容器和Docker进行一些解释。我们将在以下章节中进行解释!
在解释Kubernetes之前,需要理解的事项
在介绍Kubernetes之前,本章将解释应该理解的内容。Kubernetes是一个负责处理与容器和Docker实现相对繁琐的部分的工具。因此,为了理解Kubernetes,需要理解容器、Docker以及使用中的挑战等。
-
- コンテナとは?
-
- Dockerとは?
-
- コンテナとDockerが解決してきたこと
- コンテナとDocker活用における課題
如果对于容器和Docker有足够的理解,几乎不需要阅读。只需要留意一下”容器和Docker利用中的挑战”!
容器是什么?
容器是一种虚拟化技术。它利用Linux内核的功能,将资源分配和命名空间从所有进程中分离出来。与其他虚拟化技术(如虚拟机)相比,容器具有资源消耗和无用处理(开销)较小的特点。
集装箱可以分为以下两类。
-
- システムコンテナ
- アプリケーションコンテナ
系统容器可以启动多个应用程序,而应用程序容器只能启动一个应用程序。
由于Docker构建的容器是应用程序容器,因此本文中频繁提及的”容器”基本上指的是应用程序容器。
Docker是什么?
Docker是一种容器化工具。它用于构建应用容器,并执行应用程序的开发、分发和运行。Docker在发布和系统开发者之间迅速普及的原因如下:
-
- 仮想マシンよりも軽量で高速
-
- 開発者のマシンリソースが節約可能
- 環境構築が簡単
Docker根据名为Dockerfile的文本文件的内容创建Docker镜像(Docker容器的基础)。

以下是Dockerfile的简单例子。基于这个文件可以很容易地创建Docker容器,是不是觉得很简单呢?因此,如果容器的配置有所更新,也可以很容易地根据Dockerfile来比较更改的部分。
# syntax=docker/dockerfile:1
FROM ubuntu:22.04
COPY . /app
RUN make /app
CMD python /app/app.py
要理解 Kubernetes,理解 Docker 是必不可少的。如果你是 Docker 初学者,可以通过以下参考文章加深对 Docker 的理解。你可以先阅读以下 Docker 文章,再学习 Kubernetes;或者你也可以通过本文深入理解 Kubernetes,然后再阅读以下 Docker 文章,都可以。
参考文章:Docker初学者应该进行的3个选择。
容器和Docker已经解决的问题
在容器和Docker发布之前的系统开发中,我们可以选择在预先准备的开发服务器上进行开发,或者在虚拟机环境中进行开发。
本パートではコンテナとDocker(Dockerコンテナ)が解決してきたことを合計7つ解説します。後にDockerコンテナでは解決出来ないことについて解説します。この内容は前提となるため把握しておきましょう。
環境維持
コンテナはコンテナ内で環境が完結している特徴があります。そのため、Dockerコンテナを利用する場合はパッチ(最新版との相違点)の適応やOSアップデートへの対応はDockerfileを修正し、入れ替えるだけで済みます。
Dependent on the environment.
アプリケーションを実行するにはソースコード、ランタイム、ライブラリが必要不可欠です。アプリケーションの実行環境が変化すると、ランタイムやライブラリのバージョンが変化する場合があり、システムは正常に動作しません。しかし、Dockerコンテナによって作成されるイメージは環境から切り離されています。正常動作することが確認出来た時点で、実行環境を変更しても挙動は変化しません。
セキュリティの維持
コンテナを利用していない場合にセキュリティの脆弱性が発見されると、複数の環境で脆弱性に対して対応を進める必要があります。しかしコンテナを利用している場合はコンテナを新しいものに変更するだけで対応可能です。なぜならコンテナイメージは環境に依存していないためです。
またDockerコンテナを立ち上げるために必要なDocker Desktopと呼ばれるサービスでは、脆弱性を自動で発見してくれる脆弱性スキャンと言われる機能もあります。このような機能によってもコンテナを利用したセキュリティ維持の難易度は大幅に下がりました。
资源消耗的减少
コンテナはその他の仮想化技術に比べてリソース消費量が少ないと言われています。コンテナはおよそアプリケーションが必要とするリソースのみを要求するためコンテナ立ち上げにおける実行時間が短くて済みます。
由于应用程序构建的变化,开发速度提高了。
由于容器化的广泛应用,应用程序的架构从“单体式”转变为“微服务”模式。
-
- モノリシック
-
- 複数の機能を備えた1つの巨大で複雑なアプリケーション
-
- マイクロサービス
- それぞれの機能ごとに実装されたアプリケーションを連携する
モノリシックアーキテクチャを採用している場合は、1つの機能を修正するために全体のリビルドとテストを実行する必要がありました。しかし1つのアプリケーションしか立ち上げられないコンテナが普及したことで、機能ごとに実装されたアプリケーションを連携するマイクロサービスアーキテクチャの普及が進みました。
その結果、修正コストやデプロイの負担の減少に繋がりシステム開発の効率が格段に上がりました。
在容器和Docker利用方面的挑战。
次にコンテナとDocker(Dockerコンテナ)を活用するうえで生じた課題について解説します。1台のサーバでいくつかのコンテナを立ち上げるだけであれば何も問題は生じなさそうですよね。
しかし、より多くのコンテナを商用環境で動かすことを考えたらどうでしょうか?結構大変そうじゃないですか?ここらへんの内容を深掘って、コンテナとDockerだけを活用する場合の課題を解説します。
由于Kubernetes作为解决这些问题的服务,所以我们需要深入了解。
デプロイ
複数のコンテナを管理しながらデプロイを行うのは非常に手間のかかる作業です。例えば商用環境におけるデプロイではダウンタイムが発生しないデプロイの仕組みを考える必要があります。ダウンタイムが発生しないためのデプロイの仕組みは複数考案されていますが、どれも手作業で行うには手間がかかります。それに加えて複雑な作業を絶対にミス出来ない緊張感も伴います。
多个容器的管理、协作和运营
高可用性(システムを常に使える状態にする)の観点からコンテナは複数のサーバー上で管理されます。そのため複数コンテナを管理する運用者はどのサーバー上でコンテナが起動しているかを把握する必要があります。加えてサービスの継続における優先順位の高いコンテナを優先的に起動させるために優先順位の低いバッチ処理のコンテナなどは停止しておくべきです。
このように起動するコンテナの数や場所を把握することでシステムの高可用性を担保する必要があります。しかしこれらを完璧に人間が管理するのは不可能です。
容器映像的操作与运维
如果使用容器镜像,即使只进行简单的修改,也需要每次重建。容器虽然轻量,但每次重建容器镜像都会添加修复部分,占用存储空间。因此,需要定期删除容器镜像或进行整理。不论是管理多个还是没有多个需要管理的容器,这项工作都很繁琐。
在发生货柜故障时的应对措施
アプリケーションの運用において予期せぬ障害にぶつかることは稀ではありません。単一のコンテナを利用しているのであれば、そのコンテナをロールバック(処理前の状態に戻す)すれば良いだけなのでそこまで手間では無いかもしれません。しかし複数のコンテナを利用している場合に、全てのコンテナ同士の手違いなくロールバックを行うことは現実的ではありません。
Kubernetes是什么?
在深入理解容器和Docker的应用挑战之后,我们终于可以开始介绍Kubernetes了。
Kubernetes是一种容器编排工具。容器编排工具可以实现容器的运维管理和自动化,并使容器的管理变得更加容易。通过Kubernetes提供的功能,可以解决在利用多个容器和Docker时遇到的许多问题。
Kubernetes 在多台机器(即节点)上管理容器化应用的执行。通过单个或多个节点构建集群,并在该集群中完成容器的启动等任务。它能够在最大5000个节点的集群中运行最多300,000个容器。
这是一个余论,Kubernetes有时会简称为K8s。这个缩写来自于K和s之间有8个字符这一事实。
Kubernetesを利用するメリットと必要性
再次强调,使用Kubernetes的好处是可以更轻松地管理多个容器。让我们假设在商业环境中管理容器的情况下,考虑一下可能面临的问题。您必须决定并执行以下所有事项!
-
- どのコンテナをどのサーバを用いて実行するのか
-
- 起動したコンテナに外部からリクエストを行うための設定は?
-
- ロードバランシングはどのように行うのか
-
- コンテナ間の通信可否をコントロールするには?
- ストレージを払い出す際に、コンテナにマウント/アンマウントする方法は?
诚实地说,这真的很麻烦。如果是由十几个容器组成的微服务,或许还能勉强应付,并以”哎呀,好麻烦啊”的心态度过。但如果规模再增加一个数量级,那就会变得令人发狂。为了降低系统的维护和运营成本,Kubernetes是必不可少的。
如果不需要Kubernetes或存在缺点
我要提及一下使用Kubernetes的不必要性和缺点。当然,并不是每个服务都需要使用Kubernetes。我认为在阅读这篇文章的Qiita用户中,很多人都没有接触过Kubernetes。
以下に3つのデメリットを紹介します。
总之学习成本很高。
Kubernetesはやれることが多い便利なサービスであるため、学習することが本当に沢山あります。 Kubernetesを触ったことがあるエンジニアが周りにいない場合もありうるので、自分で学ぶ覚悟が必要です。
2. Kubernetesのアップデートが頻繁
Kubernetesは3ヶ月に1度のアップデートがあります。そのため少し前にアップロードされたKubernetesの参考コードを使ってみても動かない、みたいな状況は頻繁に起こりえます。ただせさえ学習コストが高いKubernetesですが、常に知識をアップデートしておく必要があります。
3. 拡張性が高すぎて逆に困る
Kubernetesは拡張性が高いことで知られています。仕様上、複数サーバーの利用や外部のファイルシステムとの連携などを行う必要がありますがその際にどのサービスを使えば良いか迷ってしまうこともあります。Azure、AWS、GCPなどを用いていれば簡単にプラグインを決定出来そうな一方で、用いていない場合は複数のサービスを比較検討する必要があります。
これらがKubernetesを用いる上で考えられるデメリットです。いくつか書きましたが、やはり結局は「学習コストが高い」という点に集約されますね。
如果正在进行大规模服务的持续开发,建议使用Kubernetes;如果不是这种情况,那么没有必要引入它,因为那样只会增加学习成本而无实际需求。
让我们来比较一下 Kubernetes 和 Docker 的运行图像。
本章ではKubernetesとDockerの動作イメージを比較することでKubernetesについての理解を深めましょう。まずはKubernetes周りの用語や構成要素(コンポーネント)、構成を解説します。
Kubernetes的术语、组成要素和配置解释
Kubernetes的术语- Kubernetes
首先,我们将解释基本术语。下面是一个将基本术语整理成一个图表的示例。我们将结合术语进行解释。

クラスター
Kubernetesのリソースを管理する集合体をクラスターと呼びます。Kubernetesを活用するマイクロサービスでは、複数のクラスターによって構成されています。
ノード
クラスターは、複数のノードから構成されています。ノードはマスターノードと通常のノードに分類することが可能です。マスターノードはKubernetesを管理するために利用され、通常のノードはアプリケーションなどを実際に実行する役割を持ちます。
ポッド
ポッドはコンテナの集合体です。ポッドは通常のノードの中に存在し、最低1つのコンテナを有しています。Kubernetesにデプロイする場合は、ポッド単位で行われます。
コンテナ
このコンテナはDockerコンテナのことです。1つのアプリケーションの立ち上げが可能です。
请确保掌握并理解这些术语!接下来,将详细介绍Kubernetes的构成要素。
・Kubernetes的组成元素
以下是描述Kubernetes配置的图表。我们将详细说明节点和主节点的内容。

我刚才在图中添加了新的元素。这些元素是Kubernetes中相当重要的组成要素。首先,我将解释一下主节点的内容!以下是总结主节点内容的表格。
マスターノードの中身は以下のようになっています。これらは、Kubernetesを管理する役割を果たします。またマスターノードはControl Planeと呼ばれています。
次に通常のノードの解説を行います。一般的に通常のノードはworkerノードと呼ばれています。このノードはユーザーが動かしたい各種コンテナを実行するためのノードです。
以下,我将通过以下部分来解释它们的构成!
Kubernetes的配置和操作图像
在上述中,我們解釋了Kubernetes的結構要素。下面的圖表展示了各個結構要素之間的連接關係。

当用户部署Kubernetes时,会展开像图中所示的集群。操作人员通过名为kubectl的命令行工具来控制Kubernetes。
KubernetesではYAML形式で記述された「マニフェスト」と言われるDockerで言うところのDockerfileのようなものが存在します。マニフェストにKubernetes内で実現したいことを記述することで指定のコンテナを設定したり、起動したり出来ます。
マニフェストがインストールされKubernetesがデプロイされると、マスターノードのkube-controller-managerやkube-schedulerがkube-api-serverからの命令を受け取り「指定のコンテナをどのノードで実行するのか?」を決定します。
その情報を受け取ったkube-api-serverがノード(workerノード)のkuberletやkube-proxyに司令を渡しポッドの中に存在する実際のコンテナを起動させます。
上述是Kubernetes的操作图解示例。
Kubernetes基本功能概述
これまでの内容を踏まえたうえで、Kubernetesの基本機能を解説します!全ての機能を列挙するのは不可能なので、以下の6つに絞って解説します!
-
- サービス検出と負荷調整
-
- ストレージの自動化
-
- 自動化されたデプロイ管理
-
- 自己回復
-
- 自動化されたスケジューリング機能
- 秘密情報と設定の管理
每个人都应该了解这些都是基本功能!
服务检测和负载调整
Kubernetesはポッドという単位でコンテナのグループを実行管理しています。ポッドには「ラベル」が定義されており、Kubernetesの「サービス」と呼ばれる設定したラベルにマッチするポッドを抽出して負荷分散を行う機能があります。このサービス機能を用いることで、Kubernetesクラスタの内外からリクエストを受け付け対象となるポッドに接続します。
例えば以下の図のように、アプリケーションコンテナが減少した場合もサービス機能を用いることで増加したコンテナにリクエストを流し負荷分散を行うことができます。

ストレージの自動化
Kubernetesにはポッド内のコンテナで様々なストレージを利用するためのボリューム(データの永続化)プラグインが組み込まれています。設定ファイルとして記述されるマニフェストファイルを記述するだけでボリュームの作成、ボリューム利用の準備などが自動で行われます。これらの機能をストレージオーケストレーションと呼んでいます。これらの機能によって以下のことが可能になります。
-
- 空の共有ボリュームを払い出して、同一ポッド内のコンテナでデータを共有する
-
- Kubernetesに設定した秘密情報や設定情報をボリュームとしてマウントすることで利用する
- Kubernetesクラスタ外部のクラウドストレージなどを利用する
また近年ではCIS(Container Storage Interface)と呼ばれる自由にストレージプラグイン作成し使用することのできる機能が提供されました。より柔軟なストレージやボリュームの活用が可能です。
自动化部署管理
Kubernetes采用了声明式API架构。声明式API是通过清单(配置)文件定义“应该的状态”,并由Kubernetes自动实现和维护。采用这种架构,Kubernetes可以实现各种功能。
apiVersion: app/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
例えば上記のマニフェストにおいては、下図のようにDeploymentというリソースを用いることでアプリケーションのデプロイ(ロールアウト)やそのリセット(ロールバック)などを自動で行うことが可能です。

自己回復
Kubernetesの「あるべき状態」を目指す宣言的APIアーキテクチャは、自己回復(Self-healing)機能も備えています。何かしらの理由でポッドがクラッシュしてしまった場合、宣言的APIに従ってKubernetesは自動で再起動を行います。これはポッドに限った話ではなく、Kubernetesの関与するコンテナやネットワークにおいても同様です。
例如,可以举出以下类似的自我恢复功能的例子。
-
- 起動しておくポッド数の維持
-
- Kubernetesと連携する外部負荷分散システムの再作成や設定値の復元
- ネットワーク上の位置を特定可能なサービスディスカバリ機能を提供するiptablesや ipvsなどの設定値の復元
これらの自己回復機能によりKubernetesはユーザーの「こんな状態を保ってほしい」という要望に常に自動で応え続けることが可能です。
自动化的排程功能
Kubernetes会根据以下信息自动确定哪个工作节点来运行POD。
-
- ポッド内のコンテナ群が必要とするリソース情報
-
- 各ノードのCPU
- ノードに設定されたラベルの情報
ポッドを実行させるにあたって最適なノードを自動で選択することで以下のような要件を実現可能です。
-
- ノードの空きリソースが限られている場合はポッドAよりもポッドBを優先的に実行したい
- 異なるworkerノードにポッドを分散配置することで可用性を高めたい

顺便提一下,这些自动调度功能被称为”自动装箱功能”。
秘密情報と設定の管理
これはKubernetes特有の機能というよりも、Kubernetesを用いる場合の秘密情報と設定の管理ツールが存在しているという紹介になります。
コンテナアプリケーションでは環境変数や秘密情報をコンテナ内に持ち込まずに、コンテナ外から設定値を渡す構成を構築します。この機能をKubernetesで提供するのは「Secret」と「ConfigMap」です。
Secret主要处理机密信息,ConfigMap处理其他配置值。Secret数据保存在内存中而不是存储中,ConfigMap使用Base64编码方式保证安全性。
また実際にポッドからそれらの情報を利用する際には、以下の方法を取ることができます。
-
- ボリュームマウント
-
- 環境変数
- マニフェスト上で展開される変数
Kubernetesとクラウド・プロバイダー間の互換性
Kubernetesは様々なクラウド、プロバイダーとの互換性があります。多くのサービスが対応している中でもKubernetesマネージドサービスは特に利用しやすいと言われています。
Kubernetesマネージドサービスとは、Kubernetesのデプロイ、管理、運用をクラウドプロバイダーが行うサービスのことです。このようなサービスを用いることでKubernetes導入時のクラスタ設定、メンテナンスの手間を省くことが可能です。手間を省くことでより多くの時間を要件定義や開発に割くことが出来ます。
各家公司提供了以下这样的Kubernetes托管服务。
-
- GKE : Google Kubernetes Engine (Google)
-
- AKS : Azure Kubernetes Service (Microsoft)
-
- EKS : Amazon Elastic Kubernetes Servic (Amazon)
-
- Red Hat OpenShift (Red Hat)
-
- IDCFクラウド コンテナ (IDCフロンティア)
- OKE : Oracle Cloud Infrastructure Container Engine for Kubernetes (Oracle)
余程の理由がない限りKubernetes導入予定のプロジェクトで利用されているクラスドサービスに紐づくKubernetesマネージドサービスを利用しましょう。
如果您想更深入了解Kubernetes,可以…

在本文中,我们详细解释了Kubernetes的配置和可能实现的功能。然而,我认为你可能还有一个问题:“实际上该如何使用呢?”确实,技术是实际运用起来才有意义。
本パートではKubernetesを実際に利用したい方やもっと勉強したい方に向けた内容を提供します。実際に使いこなせるようになるまでには、次の2つの勉強方法があります。
-
- チュートリアルや技術書を読む(初学者向け)
- 最新の情報収集を行う(上級者向け)
我将介绍以下内容!
使用教程、技术书籍和资格考试(供初学者使用)
我在本文中将介绍适用于初次听说Kubernetes或听说过但从未实践过的人的学习方法。
如果要利用教程
Kubernetes公式のチュートリアル
GCPを利用している場合:Google Cloud Skills Boost
AWSを利用している場合:Introduction to Amazon EKS
Azureを利用している場合:Azure Kubernetes Service (AKS) – チュートリアル
首先,我推荐你先参考官方的教程。通过亲身经历官方的教程,你可以获取到在实际使用中所需的最基本的知识。如果你计划参与到利用Kubernetes在云上运用的项目中,那么你可以根据需要使用上述云服务商提供的官方教程。
如果需要在没有教程的云服务中运行Kubernetes,首先选择有经验的GCP、AWS、Azure服务,然后体验Kubernetes会比较好。
如果要充分利用技术书的话
Kubernetes実践入門
Kubernetesの基礎についてじっくり学びたい方向け
Kubernetes完全ガイド第2版
細かな機能までしっかりと把握しておきたい方向け
Docker/Kubernetes開発・運用のためのセキュリティ実践ガイド
セキュリティ周りについて深く理解したい方向け
这些是推荐的技术书籍。随着阅读顺序的推进,难度逐渐提高。如果您是真正的Kubernetes初学者,建议先阅读《Kubernetes实践入门》。之后,当您需要进行实际实现时,可以阅读《Kubernetes完全指南第2版》。如果您要考虑系统整体设计,如安全等方面的问题,建议阅读《Docker/Kubernetes开发运维安全实践指南》。
当你在工作中需要的时候,我认为你可以顺便阅读它。如果你有空的话,我觉得一次性全文阅读会更容易把握整体情况。
如果利用资格考试
- Linux Foundationが提供している資格試験
我推荐上述的资格考试给那些想要了解自己是否真的精通Kubernetes的人。这个考试是Linux Foundation提供的,旨在证明你能够熟练运用Kubernetes的资格考试(Certified Kubernetes Administrator – CKA)。
$395(約6万円)の試験料を支払う必要があるため、正直そんなお金があれば欲しいガジェットを買いたいですよね。モチベーションを上昇させたい場合や、会社が資格取得費用を負担してくれる場合は活用しても良いかもしれませんね。
进行情报收集(专为高级者而设计)
對於已經在某種程度上自由運用Kubernetes的人來說,可以透過以下方式來收集最新的更新資訊,並獲得初學者手冊中所無法取得的相關資訊。
Kubernetesの公式ドキュメント
一番最初に紹介するのは、Kubernetesの公式ドキュメントです。ブロク記事も執筆しているので更新された場合に一読しておくと良いでしょう。Kubernetesの各種機能の利用方法だけでなく、アーキテクチャについても詳しく説明されているのでおすすめできます。
Kubernetes Slack
次に紹介するのは、Kubernetes公式が提供しているSlackの無料コミュニティです。英語話者向けのチャンネルもあれば、日本語向けのチャンネルもあるので疑問点を解消させるために質問をしてみましょう。
Kubernetes Enhancement Proposals
Kubernetesの新機能追加や変更について詳しく知りたい方はKubernetes Enhancement Proposalsを参考にしましょう。機能追加、変更の背景が記述されているので、興味のある機能に該当するページを探して読んでみるといいですね。Kubernetesの機能についての理解を深めることが出来ますよ。
Kubernetes Meetup Tokyo
サイトというよりもコミュニティを求めている方にはKubernetes Meetup Tokyoをおすすめします。日本最大のKubnernetesコミュニティとして知られています。Kubernetesに関する最新の情報を日本語で学習する勉強会セッションが開かれているので、コミュニティを通して学習を深めたい場合はおすすめします!
总结
在这篇文章中,我们对Kubernetes的基础知识进行了详细解释。希望您主要了解其配置和学习方法,而不仅仅是具体应用方面。请告诉我您的看法如何?
我认为很多人都希望参与未来的大规模服务开发。为此,我希望您继续学习Kubernetes。
此外,Nuco也正在招聘工作伙伴!如果您有兴趣,请联系我们。
提供的參考資料
-
- Kubernetes公式ドキュメント
-
- Docker初学者がやるべきこと3選
-
- 数時間で完全理解!わりとゴツいKubernetesハンズオン
- Kubernetesの基本用語