k8s–基础–12.4–pod–创建自主式pod
1、查看 部署一个pod时需要哪些字段
1.1、命令
kubectl explain pods
1.2、字段说明
1.2.1、status
- 最近观察到的pod的状态。
- 此数据可能不是最新的。
- Status不需要在pod或者其他资源中定义,这个默认是存在的
1.2.2、apiVersion
定义了此对象表示的版本化模式。
服务器应将已识别的模式转换为最新的内部值,并可能拒绝无法识别的值。
1.2.2.1、查看k8s集群支持的apiVersion有哪些
[root@master1 ~]# kubectl api-versions
admissionregistration.k8s.io/v1
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1
coordination.k8s.io/v1beta1
crd.projectcalico.org/v1
discovery.k8s.io/v1beta1
events.k8s.io/v1beta1
extensions/v1beta1
metrics.k8s.io/v1beta1
networking.k8s.io/v1
networking.k8s.io/v1beta1
node.k8s.io/v1beta1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1
1.2.3、kind
此对象的资源类型,如deployment、statefulset、pod、service、ingress。
1.2.4、metadata
对象的元数据
1.2.5、spec
指定容器的所需行为
2、创建pod
- 通过定义资源清单yaml文件(就是以yaml结尾的文件)创建pod
- 在k8s的master节点操作
2.1、查看资源清单需要哪些字段
# 查看 pods 需要哪些字段
kubectl explain pods
# 查看 apiVersion 需要哪些字段
kubectl explain pods.apiVersion
# 查看 kind 需要哪些字段
kubectl explain pods.kind
# 查看 spec 需要哪些字段
kubectl explain pods.metadata
# 查看 spec 需要哪些字段
kubectl explain pods.spec
2.2、定义一个pod
vim /root/k8s/test/pod.yaml
内容
apiVersion: v1
kind: Pod
metadata:
name: web
namespace: default
labels:
web1: tomcat
spec:
containers:
- name: tomcat1
image: tomcat:8.5-jre8-alpine
imagePullPolicy: IfNotPresent
2.3、创建一个pod
kubectl apply -f /root/k8s/test/pod.yaml
3、pod操作
3.1、查看pod创建的情况
kubectl get pods
3.2、查看pod的详细信息
kubectl describe pods web
内容
[root@master1 test]# kubectl describe pods web
Name: web
Namespace: default
Priority: 0
Node: node1/192.168.187.155
Start Time: Sun, 10 Apr 2022 09:44:48 +0800
Labels: web1=tomcat
Annotations: cni.projectcalico.org/podIP: 10.244.1.41/32
Status: Running
IP: 10.244.1.41
IPs:
IP: 10.244.1.41
Containers:
tomcat1:
Container ID: docker://a553044eeddcb7333a4f62a522dfeb1cd33878f80790d782df91e165490e4635
Image: tomcat:8.5-jre8-alpine
Image ID: docker-pullable://tomcat@sha256:04feaf74f8bb54b43ea136b150bbc7b58e8a3062aead67ab871f2dbbd5dac5d1
Port: <none>
Host Port: <none>
State: Running
Started: Sun, 10 Apr 2022 09:44:50 +0800
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-8z75k (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
default-token-8z75k:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-8z75k
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 48s default-scheduler Successfully assigned default/web to node1
Normal Pulled 47s kubelet Container image "tomcat:8.5-jre8-alpine" already present on machine
Normal Created 47s kubelet Created container tomcat1
Normal Started 47s kubelet Started container tomcat1
[root@master1 test]#
3.3、删除pod.yaml定义的所有资源
kubectl delete -f/root/k8s/test/pod.yaml
3.4、查看pod调度到哪个节点
kubectl get pods -o wide
3.5、查看pod日志
kubectl logs web
3.6、查看pod里指定容器的日志
kubectl logs -c tomcat1 web
3.7、进入到刚才创建的pod,刚才创建的pod名字是web
kubectl exec -it web -- /bin/bash
3.8、假如pod里有多个容器,进入到pod里的指定容器,按如下命令:
kubectl exec -it web -c tomcat1 -- /bin/bash