Kubernetes新手从安装到启动Pod的过程
我叫@ぱんだま,我有半年的Web工程师经验,对使用Kubernetes进行微服务开发产生了兴趣,因此汇总了这个主题。
请把以下内容用中文进行本地化改写,仅需要提供一种选择:
内容
Kubernetes的概述:
在本地安装Kubernetes,
使用kubectl命令启动Pod以实际测试。
以下是针对那些尚未接触过Kubernetes或者正在入门的人的指南。
※如果有任何错误之处,请指正。
Kubernetes是什么呢?
Kubernetes是为了自动部署、扩展和应用容器运营自动化而设计的开源平台。通过Kubernetes可以迅速高效地应对需求。Docker是为了在单个服务器上运行容器而开发的,但与之相反,Kubernetes的核心是在多个服务器上分布式运行容器,并对其进行管理的容器编排功能。
Kubernetes的配置
Kubernetes集群由两个主要组件组成,即Master和Node,并且使用etcd来存储Kubernetes集群管理信息。
![kubernetes-12-638.jpg](https://cdn.silicloud.com/blog-img/blog/img/657d245037434c4406c2e467/8-0.jpeg)
主组件的服务配置
kube-apiserver =
kube-apiserver是Kubernetes集群中的核心组件。
是一项实施了Kubernetes操作API的服务,相当于Master组件的前端。
Kubernetes控制器管理器
一个用于管理Kubernetes处理的包括容器在内的各种资源状态的服务。
Kube调度器
管理云端的服务,负责对Kubernetes节点上容器的分配。
云控制器管理器
一种服务,用于管理Kubernetes与云供应商资源的整合。
节点组件的服务配置
kubelet->主机节点
这是一个管理节点的代理服务,与Master组件合作来管理容器的执行。
kube代理
与Master组件进行协作,控制将流量分散到多个容器的服务。
容器运行时
执行Docker等容器的运行时服务
Kubernetes的优点
アプリケーションやバッチなどのワークロードを組み合わせてサービスを構成する場合、複数のコンテナを実行して連携する必要があります。Kubernetesは複数のコンテナを実行するのに必要な様々な機能を備えており、これらの機能を利用することで以下のメリットが得られます。
・アプリを迅速に予定通りにデプロイする (コンテナをサーバー群へ展開する)
・稼働中にアプリをスケールする(稼働中にコンテナ数を変更する)
・新機能をシームレスに提供開始する (稼働中にロールアウトする)
・コンテナを共存させて稼働率を高くする
実際にDockerからKubernetesをインストールしてみる。
ここからは実際にKubernetesをインストールして使用してみましょう!
今回はローカル環境に開発用のKubernetesをインストールする方法となっています。
より本格的に使用する場合は各クラウドプロバイダが提供するkubernetesのサービスを利用したり複数のサーバにKubernetesをインストールしてクラスタを構築する事が必要です。
DockerはKubernetesをサポートしているため設定を有効化するだけでkubernetesをインストールできるみたいです!
(Kubenetesの設定はデフォルトでは無効化されているため次の手順で設定を有効化する必要があります。)
请从工具栏的“偏好设置”中打开设置界面。
打开Kubernetes选项卡,勾选“启用Kubernetes”复选框进行激活。
![スクリーンショット 2021-04-10 15.08.54.png](https://cdn.silicloud.com/blog-img/blog/img/657d245037434c4406c2e467/33-0.png)
当您点击“申请”按钮时,将开始安装Kubernetes。
![スクリーンショット 2021-04-10 15.17.38.png](https://cdn.silicloud.com/blog-img/blog/img/657d245037434c4406c2e467/35-0.png)
Kubernetesの操作は、専用のコマンドラインクライアントである「kubectl」を使用します。
DockerではKubernetesをインストールするとkubectlも一緒にインストールされるためすぐにコマンドを使う事ができます!
実際にkubectlを使用してKubernetesのクラスタ情報を取得してみましょう。
クラスタ情報は
kubectl cluster-info
↑ このコマンドを実行することで使用できます。
このコマンドを実際に入力してみると、、、
$ kubectl cluster-info
Kubernetes master is running at https://kubernetes.docker.internal:6443
KubeDNS is running at https://kubernetes.docker.internal:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
如果能够获取到上述的集群信息,那就算是成功了!
通过Deployment管理Pod
インストールが完了したらKubernetesを使用してコンテナを起動してみます。
Kubernetesは「マニフェスト」と呼ばれる定義ファイルに「リソース」を記述して登録することでコンテナを実行します。リソースはコンテナの管理や設定ファイルの管理といった用途に合わせて様々な種類が用意されており複数のリソースと組み合わせてコンテナの分散実行を実現しています。
コンテナの管理に使用するリソースとして「Pod」があります。Podは1つ以上のコンテナグループを表し、Kubernetesにおけるコンテナ管理の基本単位になっています。
マニフェストに定義したPodをKubernetesに登録することでコンテナを実行できますが複数のコンテナを分散実行するような場合にはその分だけ複数のPodを定義する事になり管理が複雑化します。そこで複数のPodを管理するために「Deployment」がkubernetesには用意されています。
接下来,我们将在Kubernetes中注册Deployment的定义,并检查容器是否能够启动。
首先将清单文件保存为deployment.yaml。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.15.7
ports:
- containerPort: 80
上述的yaml文件中记录了运行nginx容器的配置。
使用以下命令向Kubernetes注册清单文件的内容。
$ kubectl apply -f deployment.yaml
deployment.apps/nginx-deployment created
這樣pod的註冊就完成了!讓我們來確認一下實際註冊的Pod。
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-7d4d8467d9-4748n 1/1 Running 0 4m27s
nginx-deployment-7d4d8467d9-mc5t6 1/1 Running 0 4m27s
nginx-deployment-7d4d8467d9-ppnkg 1/1 Running 0 4m27s
我可以看到无事Pod已经启动了!
下次我想要更仔细地使用kubectl来探索Kubernetes!
非常感谢您的阅读!
参考文献・サイト
著者 五十嵐 綾様 「みんなのDocker・Kubernetes」 ~技術評論社~
Kubernetes 是什么?现在无法问人了。