K8S创建pod(三)

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

image.png

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容