原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
原文链接地址:『中级篇』K8S最小调度单位Pod(62)
k8s里面非常重要的一个概念pod,首先简单的介绍是pod是k8s最小的调度单位,一个pod里面可以包含一个或者多个container,一个pod共享一个namespace,它们之前可以通过localhost来进行通信。源码:https://github.com/limingios/docker/tree/master/No.9
![](https://img.haomeiwen.com/i11223715/eb02916d559c6d53.png)
演示pod
- 下载源码
![](https://img.haomeiwen.com/i11223715/89d0834b3de4e4dd.png)
- pod_nginx.yml 演示
k8s api里面的格式
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
![](https://img.haomeiwen.com/i11223715/a65b814c7c41f60d.png)
- 开始运行pod节点
确认k8s通过minikube单节点没有问题
kubectl version
#创建pod
kubectl create -f pod_nginx.yml
#查看pod状态
kubectl get pods
#查看pod状态ip状态
kubectl get pods -o wide
![](https://img.haomeiwen.com/i11223715/69e3b7e8165c3901.png)
![](https://img.haomeiwen.com/i11223715/31c96532e3b9cb6f.png)
![](https://img.haomeiwen.com/i11223715/42bba73c4bb91892.png)
进入minikube 查看docker ps,内部其实就是docker
minikube start
docker ps
docker exec -it nginxId
exit
![](https://img.haomeiwen.com/i11223715/27b0536d1a5c3677.png)
查看pod nginx的网络
docker network ls
#查看到nginx的ip是172.17.0.4
docker network inspect bridge
exit
kubectl get pods -o wide
![](https://img.haomeiwen.com/i11223715/24c10ab0a1280362.png)
![](https://img.haomeiwen.com/i11223715/b11aec3c1ffbe1f4.png)
![](https://img.haomeiwen.com/i11223715/33256f24c545add6.png)
上边这种是不是感觉很麻烦,如果想进入容器,还需要想进入虚拟机然后docker ps 找到id,最后docker exec的方式。其实不用那么复杂。
#进入nginx的容器
kubectl exec -it nginx sh
#了解下进入容器的所有的命令
kubectl exec -it -h
![](https://img.haomeiwen.com/i11223715/eb84627299e991d7.png)
![](https://img.haomeiwen.com/i11223715/7db3ab1eef592256.png)
# nginx这个pods的所有详细信息
kubectl describe pods nginx
![](https://img.haomeiwen.com/i11223715/7bf65e432dcf344f.png)
通过ip的方式,看看nginx启动起来没?
minikube ssh
ping 172.17.0.4
curl 172.17.0.4
![](https://img.haomeiwen.com/i11223715/bbf7cf5857109d0b.png)
老铁 现在你最想的是什么?我最想的是:在本机可以访问到nginx的服务,而不是在内部。在原来学docker的时候可以进行-p 端口映射的方式。在k8s的kubectl 同样可以看命令。
kubectl port-forward nginx 8080:80
![](https://img.haomeiwen.com/i11223715/91b3aff4735a054e.png)
PS:最后把容器内的nginx暴露出来了可以在外部访问了,是不是觉得美滋滋,这次主要讲了如果pod的方式创建容器,由k8s进行管理,获取到nginx的ip地址,映射容器内的端口,其实我感觉有点类似docker-swarm,但是这个好像比docker-swarm灵活点。也留个小问题,现在是用的port-forward它得一直开着,如果关闭了,直接就访问不了了,这种该如何解决。下次我来说!
网友评论