1、部署上一节中的hello-world应用到 k3s中,创建create_pod.yaml文件
apiVersion: v1 #与k8s集群版本有关,使用 kubectl api-versions 即可查看当前集群支持的版本
kind: Pod #指定要创建的类型
metadata: #译名为元数据,即 Pod 的一些基本属性和信息
name: k3s-test #这个pod 的名称
labels: #标签,可以灵活定位一个或多个资源,其中key和value均可自定义,可以定义多组,目前不需要理解
app: k3s-test-pod #app 为key ,k3s-test 为value,还可以定义多个
spec: #关于这个pod 的描述
containers: #要加载的docker 的容器
- name: k3s-test #容器名称
#容器要挂载的镜像
image: hello-world-app:latest
imagePullPolicy: Never #使用本地镜像,不远程拉取。前提你需要配置k3s使用Docker作为镜像仓库,而不是containerd
ports: #容器可输出的端口
- containerPort: 3000
接下来执行创建命令即可。
#create 命令也可以创建,但一般强烈推荐使用apply 命令
sudo kubectl apply -f create_pod.yml
#输出内容
pod/k3s-test created
#通过命令检查是否创建成功
sudo kubectl get pods -o wide
#得到输出结果
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
k3s-test-b99475bdf-56cdf 1/1 Running 0 8m12s 10.42.0.53 ai <none> <none>
k3s-test-b99475bdf-bftkp 1/1 Running 0 8m12s 10.42.0.52 ai <none> <none>
k3s-test-b99475bdf-fgx8f 1/1 Running 0 8m12s 10.42.0.51 ai <none> <none>
#其中关键的节点解析
STATUS : Running 表示Pod 已经成功执行
RESTARTS: 表示重启的次数
IP 为Kubernetes 给这个Pod 分配的可访问的ip地址(外网无法访问)
NODE: 表示这个Pod 被分配到哪个Node节点上。
访问结果如下:
在k3s服务器上访问
ubuntu@server:~$ curl http://10.42.0.26:3000
#输出
Hello, World!
#在本机外部环境访问(如果浏览器)
#输出
curl http://10.42.0.26:3000
#输出
#没有结果
总结
当在Kubenetes 创建了Pod后,Kubenetes 都会自动分配出唯一IP地址,这个IP地址可以在Kubenetes内网任意节点内进行访问。但对于外界来说是一个被隔离的环境,至于怎么能够打通与外界的联系呢?以及怎么玩弹性伸缩呢? 这属于service 和deployment 的职能范围了, 我们下一篇再讲。