理解Pod
运行中的一组容器,Pod是kubernetes中应用的最小单位。
每个Pod,k8s都会分配给它一个IP,IP的范围是由之前主节点初始化时设置:
kubeadm init \
--apiserver-advertise-address=172.31.0.2 \
--control-plane-endpoint=cluster-endpoint \
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=192.168.0.0/16
集群中任意机器以及任意应用都可以通过Pod分配的ip来访问这个Pod。
一个Pod可以有多个容器:
操作Pod
- 使用命令行操作Pod:
# 默认在default名称空间
kubectl run mynginx --image=nginx
# 查看default名称空间的Pod
kubectl get pod
# 查看描述
kubectl describe pod Pod名
# 使用docker命令可以看出只有对应节点下载并运行nginx镜像
docker ps|grep mynginx
docker images
# 查看Pod的运行日志
kubectl logs mynginx
# 删除Pod
kubectl delete pod mynginx -n 名称空间
# 查看更详细的Pod信息
kubectl get pod -owide
# 使用Pod的ip+Pod里面运行容器的端口访问应用
curl 192.168.169.136
# 进入容器里修改文件
kubectl exec -it mynginx -- /bin/bash
- 使用YAML文件创建Pod:
pod.yaml
apiVersion: v1
kind: Pod
metadata:
labels:
run: mynginx
name: mynginx
spec:
containers:
- image: nginx
name: mynginx
kubectl apply -f pod.yaml
kubectl delete -f pod.yaml
- 可以使用可视化界面操作
多容器Pod操作
使用资源配置文件创建Pod:
multicontainer-pod.yaml
apiVersion: v1
kind: Pod
metadata:
labels:
run: myapp
name: myapp
spec:
containers:
- image: nginx
name: nginx
- image: tomcat:8.5.68
name: tomcat
kubectl apply -f multicontainer-pod.yaml
同一Pod的两个容器共享网络空间和存储。同一Pod的多个容器不能占用同一端口。