Day12-你好 安安 对不起我要去洗澡了 如何跟pod互动

前一章介绍如何建立,删除pod之後,就要来谈谈如何对pod本身进行互动了。
当我们建立完有应用程序的pod,会需要跟pod内的应用程序进行互动。
但是在没有特别设定的情况下,是没办法直接跟pod内应用程序交流的。
要跟pod内的应用程序交流,有两种办法,一个是利用port-forward,一个是用service。
service的部分会留到下一章说明,这边先说明用port-forward跟pod沟通。

透过yaml建立范例pod

在上一章我们使用image建立了一个pod,不过用这种方式没办法详细设定pod的内容。
因此这边会讲解如何用写好的yaml来建立pod(之後的service Deployment等等也会用这种方式建立)

范例yaml

# redis.yaml
apiVersion: v1
kind: Pod
metadata:
  name: redis
spec:
  containers:
  - name: redis
    image: redis

首先将上面yaml内容复制起来,在本机开个档案叫redis_example.yaml,并将内容贴上。
上面可以看到

  • apiVersion
    这是目前k8s该元件的版本号,以这个范例的kind为pod,则他的版本号就是v1(代表第一个稳定释出的版本)。
    如果要用其他元件,则版本号可以从官网的Kubernetes API去查询。
  • Kind
    指定的元件类型,在这边就是pod,k8s判断你建立的是service还是pod也是看这边。
  • metadata
    下面会有name labels 以及 annotations, name就是这个pod叫什麽名字,label会在後面章节提到,主要是让k8s去分配管理用,而annotations则是单纯注解,不支援查找跟分类。
  • spec
    定义容器内容,在这边是指定名称为redis,并使用redis image。

建立pod

要透过yaml建立pod,需要在yaml档的目录执行下面指令

kubectl create -f redis_example.yaml

这样他就会建立出你yaml档所设定的pod了,这时用get pod就可以看到下图。
https://ithelp.ithome.com.tw/upload/images/20210920/20129607A0uBflHovK.png

要测看看有没有正常,则可以使用exec指令

kubectl exec -ti redis bash

指定要对redis这个pod操作,进去之後就可以用redis-cli来确认是否有正常运作
https://ithelp.ithome.com.tw/upload/images/20210920/20129607US6wlil51t.png

尽管可以透过上面这种方式跟pod内的应用程序互动,但是这并不算从外部跟pod互动,因此接下来会开始介绍port-forward

port-forward

port-forward这个指令能够将本机的port去mapping到pod上的port,藉以从外部去呼叫pod内的应用程序。
指令如下

kubectl port-forward redis 7788:6379

(从官网抓下来的redis imgae预设帮你开好了6379)
这时在本机用redis-cli去连接7788port,就可以连入pod内,像下图那样:
https://ithelp.ithome.com.tw/upload/images/20210920/20129607XgnzmfIq35.png

可以看到第一次连接7788 port是无法连通的,但是在port-forward之後,就可以连入pod。
也可以取得前面测试时set的key。

在这章说明完如何透过port-forward去跟pod互动,下一章则会开始介绍另一种跟pod互动的方式,也就是service。


<<:  入门魔法 - 运算子的优先性与相依性

>>:  Day05 建构Project(1)

Day 27 让我胆战心惊的微服务 Vol.1

来来来!小笠宏树 老师报名牌有没有在听!看这支,上礼拜老师讲过的,看到没有一直涨一直涨一直涨,你都不...

Day 6 图片去背 ( 路径 )

图片去背 ( 路径 ) 教学原文参考:图片去背 ( 路径 ) 这篇文章会介绍使用 GIMP 的路径工...

[DAY 3] Browser-server model的演进

昨天简单介绍了网路服务的C/S与B/S的差别,今天简单介绍browser-server model的...

[Day8] [笔记] React Props (下)

前言 昨天我们了解到如何透过 Props 来传递资料给子元件。而今天我们要来认识如何在元件中间包裹内...

Day 10-自动化是工作标准化与效率的体现,Github Action 做 Terraform 自动化

本篇介绍 Terraform 透过 Github Action 自动化执行 课程内容与代码会放在 G...