开发者学堂课程【Kubernetes 极速入门:K8S 集群核心概念 pod_Pod 介绍及创建】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/658/detail/10910
K8S 集群核心概念 pod_Pod 介绍及创建
内容介绍:
一、场景
二、学习目标
三、学习步骤
四、课程内容
一、场景
通过前面课程学习,已经掌握了 k8s 集群中 NameSpace 操作,那么如果想在 k8s 集群中运行应用程序,应该使用什么资源对象呢
?由于 k8s 集群中是不能直接运行容器的, k8s 集群中最小调度单元为 Pod,因此要使用 Pod 来运行应用程序。
二、学习目标
1.了解 Pod 概念
2.了解查看 Pod 方法
3.了解创建 Pod 方法
4.了解 Pod 访问方法
5.了解删除 Pod 方法
三、学习步骤
1.Pod 介绍
2.查看 Pod
3.创建 Pod
4.Pod 访问
5.删除 Pod
四、课程内容
1.Pod 介绍
举个例子,拿豌豆荚与豌豆粒来说,在 k8s 集群来说,能够调度的最小管理单元是豌豆荚,即为 Pod,豌豆荚中的豌豆粒就相当于容器。
●Pod 是 kubernetes 集群能够调度的最小单元
●Pod 是容器的封装
2.查看 Pod
命令及输出
查看 defau1t 命名空间中的Pod(默认是 default 中的 pod)
[root@master1 ~]# kubect
l
get pod
NO resources found.
或
[root@master1 ~]# kubect1 get pods
NO resources found.
或
[root@master1 ~]# kubect1 get pods --namespace defau1t
(指定查看)
NO resources found.
[root@master1 ~]# kubect1 get pod --namespace default
NO resources found.
实际操作:
[ root@master1 yamldir]#kubectl get pod
No resources found in"default namespace.
You have new mail in ivar / spool/mail/ root
[ root@master1 yamldir]# kubectl get pod
No resources found in default namespace.
[ root@master1 yamldir]#kubectl get pods
No resources found in default namespace.
如果指定命令空间,先查看一下命名空间
[ root@master1 yamldir]#kubectl get namespace
NAME STATUS AGE
Default Active 16h
kube-node -lease Active 16h
kube - public Active 16h
kube-system Active 16h
[root@master1 yamldir]# kubectl get pods --namespace default
No resources found in default namespace.
如果想要节省时间,可以简化 namespace 为 n
[ root@master1 yamldir]#kubectl get pods -n default
No resources found in default namespace.
可以通过 kube-system 这个命令空间去看哪些命令空间中有相应的 pod
[ root@master1 yamldir]# kubectl get pod -n kube-system
3.创建 Pod
由于网络原因,建议提前准备好容器镜像。本次使用 nginx:latest 容器镜像。
主要在 worker1 和 worker2之中下载即可,master1默认情况下是不允许把用户作运行 pod 调动过来的,所以 master1不用运行。
具体操作:
[ root@worker1 ~]#docker pull nginx : latest
l
atest: Pulling from library /nginx
bc51dd8edc1b: Downloading 277.6kB/27.09MB
66ba67045f57 : Downloading244.9kB/23.88MB
bf317aal0aa5 : Download complete
编写用于创建 Pod 资源清单文件(示例文件 cat 02-create-pod.yaml)
[root@master1 yam
l
dir]# cat 02-create-pod.yam
l
apiversion: v1
(表示访问集群使用的API)
kind: Pod
(类型)
metadata:
name: pod1
(pod的名字)
spec:
(对pod的期望)
containers:
(容器列表)
- name : ngninx-pod
(容器的名字)
image: nginx :
l
atest
ports:
- name: nginxport
(容器端口的名字)
containerPort: 80
(容器所对应的端口)
对编写用于创建Pod资源清单文件的具体演示:
[ root@master1 yamldir]#ls
01-create-ns.yaml
[ root@masteri yamldir]# pwd
/ root/yamldir
[ root@master1 yamldir]# vim o2-create-pod . yaml
apiversion : v1
kind: Pod
metadata:
name : pod1
spec :
containers :
- name: nginx-container
image: nginx :latest
imagePuliPolicy: IfNotPresent
ports :
- name : nginxport
containerPort : 80
4.应用用于创建 Pod 资源清单文件
命令
[rootemaster1 yam1dir]# kubect1 app1y -f 02-create-pod .yam1
输出
pod/pod1 created
具体操作:
[ root@master1 yamldir]# kubectl apply -f 02-create-pod .yaml
pod/ pod1 created
5.验证 Pod 是否被创建
命令
查看已创建 pod
[rootemaster1 yam1dir]# kubect1 get pods
输出
NAME READY STATUS RESTARTS AGE
pod1 1/1 Running 0 88s
命令
通过指定默认命名空间查看已创建 pod
[root@master1 yam1dir]# kubect1 get pods -n default
输出
NAME READY STATUS RESTARTS AGE
pod1 1/1 Running 0 2m43s
具体操作:
[ root@master1 yamldir]#kubectl get pods
NAME READY STATUS RESTARTS AGE
pod1 1/1 Running 0 31s
命令
查看 pod 更加详细信息
[rootemaster1 yam1dir]# kubect1 get pods -o wide
输出
NAME READY STATUS RESTARTS AGE IP NODE
NOMINATED NODE READINESS GAT
pod1 1/1 Running 0 9m5s 172.16,1.2 node2
<none> <none>
查看 Pod 在哪个主机之中被创建
[ root@master1 yamldir]#
kubectl
get
pods -o
wide
(查看更加广泛的信息)
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
Pod 11/1 Running 0 94s 172.16 . 189.65 worker2 <none> <none>