『中级篇』K8S最小调度单位Pod(62)
2018-10-16 18:07:46
李明
  • 访问次数: 379
  • 注册日期: 2018-07-09
  • 最后登录: 2020-03-30

原创文章,欢迎转载。转载请注明:转载自 IT人故事会,谢谢!
原文链接地址: 『中级篇』K8S最小调度单位Pod(62)

k8s里面非常重要的一个概念pod,首先简单的介绍是pod是k8s最小的调度单位,一个pod里面可以包含一个或者多个container,一个pod共享一个namespace,它们之前可以通过localhost来进行通信。源码: https://github.com/limingios/docker/tree/master/No.9

1667c4f3c29111c5?w=1117&h=368&f=png&s=12

演示pod

  1. 下载源码

https://github.com/limingios/docker/tree/master/No.9

1667c4f3c2ee788d

  1. pod_nginx.yml 演示

k8s api里面的格式

apiVersion: v1 kind: Pod metadata:   name: nginx   labels:     app: nginx spec:   containers:   - name: nginx     image: nginx     ports:     - containerPort: 80

1667c4f3c2d33926?w=510&h=350&f=png&s=421

  1. 开始运行pod节点

确认k8s通过minikube单节点没有问题

kubectl version #创建pod kubectl create -f pod_nginx.yml #查看pod状态 kubectl get pods #查看pod状态ip状态 kubectl get pods -o wide

1667c4f3c42fa930?w=1202&h=148&f=png&s=12
1667c4f3c3ebdc1c?w=642&h=68&f=png&s=2694
1667c4f3c453db1e?w=749&h=169&f=png&s=791

进入minikube 查看docker ps,内部其实就是docker

minikube start docker ps docker exec -it nginxId exit

1667c4f3e4ea3764?w=1240&h=628&f=png&s=51

查看pod nginx的网络

docker network ls #查看到nginx的ip是172.17.0.4 docker network inspect bridge exit kubectl get pods -o wide

1667c4f3f6042f1b?w=959&h=697&f=png&s=200
1667c4f4654f4bf9?w=1240&h=680&f=png&s=10
1667c4f45e7cab91?w=1240&h=771&f=png&s=10

上边这种是不是感觉很麻烦,如果想进入容器,还需要想进入虚拟机然后docker ps 找到id,最后docker exec的方式。其实不用那么复杂。

#进入nginx的容器 kubectl exec -it nginx sh #了解下进入容器的所有的命令 kubectl exec -it -h

1667c4f4e88504cc?w=596&h=136&f=png&s=419
1667c4f4ee859458?w=970&h=506&f=png&s=247

# nginx这个pods的所有详细信息 kubectl describe pods nginx

1667c4f4e8c470d9?w=1240&h=906&f=png&s=11

通过ip的方式,看看nginx启动起来没?

minikube ssh ping 172.17.0.4 curl 172.17.0.4

1667c4f4f1256dbf?w=964&h=850&f=png&s=264

老铁 现在你最想的是什么?我最想的是:在本机可以访问到nginx的服务,而不是在内部。在原来学docker的时候可以进行-p 端口映射的方式。在k8s的kubectl 同样可以看命令。

kubectl port-forward nginx 8080:80

1667c4f4f5e6efa8?w=1240&h=640&f=png&s=19

PS:最后把容器内的nginx暴露出来了可以在外部访问了,是不是觉得美滋滋,这次主要讲了如果pod的方式创建容器,由k8s进行管理,获取到nginx的ip地址,映射容器内的端口,其实我感觉有点类似docker-swarm,但是这个好像比docker-swarm灵活点。也留个小问题,现在是用的port-forward它得一直开着,如果关闭了,直接就访问不了了,这种该如何解决。下次我来说!

1666220af4526825