前一天我们建立好了 Kubernetes 的环境,今天就来实际使用看看,将应用程序透过 Pod 部属到 k8s 内部。
在 Kubernetes 有着各式元件,有负责建置容器,也有负责管理网路的。使用 K8s 的方法就是根据需求来建置所需要的元件,这里就来介绍最基本的 Node 以及 Pod 。
Node 是 Kubernetes 的硬体单位,可以是实体机或虚拟机,作为工作节点提供运算资源。
Pod 是 Kubernetes 的最小运行单位,由一个或多个容器所组成,一个 Pod 对应一个应用程序。
实际情况来说,在一个 k8s 丛集上会有许多 Node,代表实际的运算资源,里面安装了如 Docker 的容器平台,而 k8s 就会以 Pod 为单位将容器放入到 Node 上做运行。
要如何建立、管理 Kubernetes 的元件,可以使用Kubectl
工具,我们就来实际练习看看。
进入 Cloud Shell 网站,点击终端机输入指令
列出所有的 project ,找到之前所创建专案的 PROJECT_ID
gcloud projects list
PROJECT_ID
,开启专案 Terminal在前一篇中已经设置好了kubectl
工具了,现在使用kubectl get <type>
就能够查看丛集上的各种元件。
kubectl get nodes
(输出结果)
NAME STATUS ROLES AGE VERSION
gke-lab-default-pool-9638ad20-l69n Ready <none> 7m50s v1.20.9-gke.701
gke-lab-default-pool-9638ad20-tnlg Ready <none> 7m50s v1.20.9-gke.701
gke-lab-default-pool-9638ad20-x3jm Ready <none> 7m50s v1.20.9-gke.701
这里对应着 GCP 上的三台 VM ,被加入到 k8s 作为工作节点,使用kubectl describe <type> <object name>
就能查看详细资料。
<object name>
改为你任一 Node 的名称kubectl describe node <object name>
会输出这个 Node 的资讯,包括 IP、系统资源、事件等等。
要如何在 Kubernetes 建立元件,可以在一个 yaml 文件中描述,下面就来使用 yaml 档来建置 Pod 。
cd && mkdir k8s-test
cd ~/k8s-test && touch mypod.yaml
左上 Explorer -> Open Folder -> 选择 k8s-test 资料夹 -> Open
mypod.yaml
档案并贴上以下内容,并将<your iamge name>
改成之前建立的 Image Name这里的 Image 是在 Day08 所建立的 Node 应用
apiVersion: v1
kind: Pod
metadata:
name: mypod
labels:
app: myapp
spec:
containers:
- name: mycontainer
image: <your iamge name>
ports:
- containerPort: 8080
apiVersion
kind
metadata
spec
containers
建好了 yaml 档案,就可以使用kubectl apply -f <file>
指令,Kubernetes 会根据 yaml档的内容建立相应元件。
mypod.yaml
建立元件kubectl apply -f mypod.yaml
使用kubectl get <type>
就能够查看 Pod 元件。
kubectl get pods
(输出结果)
# 刚建立时输入
NAME READY STATUS RESTARTS AGE
mypod 0/1 ContainerCreating 0 5s
# 建立完成後输入
NAME READY STATUS RESTARTS AGE
mypod 1/1 Running 0 14s
可以看到mypod
建立成功并成功运行,使用kubectl describe <type> <object name>
查看详细资料。
mypod
详情kubectl describe pod mypod
(输出结果 -> Event)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 90s default-scheduler Successfully assigned default/mypod to gke-lab-default-pool-9638ad20-l69n
Normal Pulling 89s kubelet Pulling image "gcr.io/ninth-bonito-324214/node-project:v1"
Normal Pulled 79s kubelet Successfully pulled image "gcr.io/ninth-bonito-324214/node-project:v1" in 9.834570297s
Normal Created 78s kubelet Created container mycontainer
Normal Started 78s kubelet Started container mycontainer
会显示 Pod 详细资讯,包括容器使用了什麽 Image 、运行事件等等。
建立好了 Pod 後,要怎麽跟里面的容器进行互动,常见的有两种方式
这里使用第一种方式,利用kubectl port-forward <pod> <本机 port>:<pod port>
,可以将 Pod 中的某个 Port 跟本机端做映射。
kubectl port-forward mypod 8080:8080
(输出结果)
Forwarding from 127.0.0.1:8080 -> 8080
此时透过 cloud shell 的 8080 Port 就能获取 Pod 里的服务。
网页预览->透过以下通讯预览 : 8080
看到回传讯息,成功的与容器进行互动。
Ctrl +c
停止 port-forward今天学习到了 kubectl 基本指令,以及如何透过 yaml 档案来建置 Pod 元件,下一章将会介绍 service 元件,建立 Pod 的沟通管道。
<<: Leetcode 挑战 Day 09 [344. Reverse String]
>>: Day6 梯度提升树(Gradient Boosting Decision Tree)
昨天我们介绍了如何用 KDoc 语法标记程序码并用 Dokka 来产生 API 文件,今天我们要将产...
实作 -『如何启用 WAF日志以及汇入 BI 进行分析』, Data Analytics Pipel...
课程目标 课程前半段主要让学员建立Angular开发框架相关基本观念,并透过Angular CLI建...
上次介绍完前面两个修饰符,今天就来把它学习完吧!!! .stop .prevent .capture...
今天来做按钮功能 一、创立UI按钮 二、撰写点击事件(方法) 接着搭配脚本,把脚本拉进去 publi...