Kubernetes和EKS学习记录 第一部分
大纲
由于工作需要使用Kubernetes (AWS的EKS) ,我将学习相关知识。
我打算将学习步骤安排如下。
-
- 理解Kubernetes的基本术语
-
- 尝试完成Kubernetes官方教程
-
- 理解EKS的基本术语
- 尝试在EKS上创建服务
本次是第一步「理解Kubernetes的基本术语」。
这篇文章是有关这些笔记和总结的。
已经设置了几个项目。
由于是边试错边进行的,所以作为步骤可能不需要。只是用来做备忘录。
基本的词汇
Node(ノード)
仮想マシンだったり実物のサーバだったり、実際のサーバー部分に当たります。Node = 1台のサーバーの認識。
Podを稼働させているワーカーノードと、それを管理するためのマスターノードの2種類があります。
Pod
Podは常にノード上で動作します。Podの中にコンテナがあり、Podでは最低一つ以上のコンテナが稼働します。
https://kubernetes.io/ja/docs/tutorials/kubernetes-basics/explore/explore-intro/
集群和控制平面、数据平面
首先,我们需要了解最大的框架。
Kubernetes 集群由控制平面(Master 节点)和数据平面(运行容器的 Worker 节点)组成。
- コントロールプレーン
控制平面包括保持集群信息的etcd,控制Pod在哪个节点上运行的kube-scheduler,以及提供API的kube-apiserver等。
- データプレーン
在每个工作节点上运行着一个名为kubelet的代理,每个Pod通过这个kubelet来执行。

部署与副本集
首先我们要深入理解数据平面部署。
-
- DeploymentはReplicaSetと生成・管理し、ReplicaSetはPodを生成・管理する。
- ReplicaSetのみでも作成は可能だが、DeploymentでReplicaSetを作成できるので、手動でReplicaSetを作成するような利用する場面はほとんどないらしい
首先,我们要理解上述内容,然后从 ReplicaSet 中进行确认。

复制集合
复制集 ReplicaSet 管理 Pod 的数量。有时会简称为 RS。
例如,如果设置 replicas: 3 来维持 3 个 Pod,如果 Pod 数量不足/过多,它会自动进行调整以保持在 3 个。
似乎文件清单如下。
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: frontend
labels:
app: guestbook
tier: frontend
spec:
# ケースに応じてレプリカを修正する
replicas: 3 #起動したいpod数
selector:
matchLabels:
tier: frontend
template:
metadata:
labels:
tier: frontend
spec:
containers:
- name: php-redis
image: gcr.io/google_samples/gb-frontend:v3
我們將在這一帶使用基本部署來進行。
部署
Deployment 是用来管理 replicaSet 的。详见 https://kubernetes.io/ja/docs/concepts/workloads/controllers/deployment/。
-
- Containerのイメージが更新されたら新しいReplicaSetを作成し、ReplicaSetの新旧入れ替えをローリングアップデートで行ってくれる
- 過去のReplicaSetを保持させ、必要であればロールバックさせることができる
有以下这些功能。
清单文件看起来是这样的。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
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
理解我認為當更新ReplicateSet時,如需將nginx版本從1.25.0升級到1.25.3,將如下所示。

在这种情况下,由于v1的ReplicaSet仍然存在,因此可以进行切换回去。
服务 (fú wù)
服务决定将流量路由到哪个Pod中。
这个服务有时候会被简称为”SVC”。
详情请参考以下链接:
https://kubernetes.io/ja/docs/concepts/services-networking/service/
https://kubernetes.io/ja/docs/tutorials/kubernetes-basics/expose/expose-intro/
通过使用标签,可以决定将流量路由到哪个Pod中。
标签是键值对,例如
-
- 開発、テスト、および本番用のオブジェクトを指定する
-
- バージョンタグを埋め込む
- タグを使用してオブジェクトを分類する

虽然还不够深入,但我理解了每个术语。
因为肯定还有一些我不了解的术语,所以我会边动笔边做笔记。
我在draw.io上创建了一些图形,但是图标没有名称,所以我参考了下面的文章来创建它们。
https://qiita.com/yosshi_/items/2db0a0e66a16711bfe5f