1:POD创建
创建文件pod_test.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-20191117
labels:
app: web
spec:
containers:
- name: nginx-20191117
image: nginx
ports:-
containerPort: 80
hostPort: 30011
执行命令kubectl create -f pod_test.yaml
image.png
kubectl get pod查看pod状态,可以看到当前节点状态为ContainerCreating
kubectl get pod -o wide-----还可以查看pod调度到了哪个node节点
image.png
kubectl describe pod nginx-20191117 查看pod日志
image.png
从日志上可以看到,镜像下拉失败,需要修改默认的镜像地址(docker search 查找地址)
image.png
-
修改后,正常下发镜像和创建pod
image.png image.png
镜像下来会暂时存储在/var/lib/docker/tmp目录
注:如果要提高pod速度,在生产环境,最好使用私有镜像
pod和node的关系:K8S创建一个pod资源,控制docker启动两个容器,例如一个业务容器nginx,另一个外pod容器,两个容器使用同一个地址
2:pod副本
在yaml中replicas: 2来定义副本数量,当删除其中一个pod后,K8S会自动创建一个pod应用,让pod一直保持着双副本。
创建文件pod_test.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: rc-nginx
spec:
replicas: 2
selector:
app: rc-nginx
template:
metadata:
labels:
app: rc-nginx
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent ##镜像下拉策略,如果本地有从本地创建
执行命令kubectl create -f pod_test.yaml
kubectl delete pod rc-nginx-cvqnp删除其中一个pod,由于双副本,立刻会重新创建一个pod,状态立刻为running
rc根据标签来选择pod,使用命令 kubectl get rc -o wide
image.png
kubectl edit pod nginx ---------可以修改pod资源
此时我们的两个nginx服务已经在pod上创建好,curl -I 172.16.52.3发现是可以正常返回,但是通过浏览器发现无法正常访问,所以就需要引入service资源的概念
image.png
学习docker的时候我们知道,容器创建的时候我们可以宿主机做端口映射,通过这种方式,直接访问宿主机的地址和映射端口就可以访问容器的服务了。但是K8S不一样,例如pod在3副本的情况下,node中的pod服务一直会维护在三副本,当其中一个节点出现问题,会立刻新创建出一个pod,此时pod的ip地址就会发生变化,并且pod的地址都是私有地址,此时就需要通过service资源来访问
image.png
注:K8S还有如下特性
支持三种重启策略(restartPolicy),分别是:Always、OnFailure、Never
支持三种镜像拉取策略(imagePullPolicy),分别是:Always、Never、IfNotPresent
网友评论