linux怎么查看本机内存大小
284
2022-09-08
K8s-Pod
K8s-Pod
文章目录
K8s-Pod
基础结构
网络存储
实践Deployment
Pod是一组容器(一个或者多个),是k8s中的最小调度单位,可以把Pod理解为传统的虚拟机,Pod中的容器就是虚拟机中运行的进程,k8s无法直接操作和调度容器,只能通过编排Pod来调度容器,Pod为其中运行的容器提供共享的网络,存储和命名空间
基础结构
网络
Pod中的容器共享Pod的网络资源:
一个Pod只有一个IP地址,Pod中的容器共享该Pod的IP地址和端口
Pod中容器间的通信:
通过共享卷通信
使用主机中的一个共享目录作为通信,pod中的一个容器向共享卷中写入数据,其他容器读取共享卷中的数据
进程间通信(IPC)
Pod中的容器共享同一个IPC命名空间,这意味着它们可以使用标准的进程间通信方式来互相通信,比如SystemV信号量和POSIX共享内存。
容器间的网络通信
Pod中的容器可以通过“localhost”来互相通信,因为他们使用同一个网络命名空间。而且,对容器来说,hostname就是Pod的名称。因为Pod中的所有容器共享同一个IP地址和端口空间,你需要为每个需要接收连接的容器分配不同的端口。也就是说,Pod中的应用需要自己协调端口的使用。
存储
Pod 可指定一组存储卷,Pod 中多容器均可以访问该存储卷,以便互相共享数据,Pod 中的共享卷可以持久保存,防止容器重启丢失数据
实践
发布一个pod
编写pod的yaml文件
apiVersion: v1kind: Podmetadata: name: nginxspec: containers: - name: nginx # 指定镜像 image: nginx:alpine # 指定暴露端口 ports: - containerPort: 80
根据配置文件部署pod
kubectl apply -f nginx.yaml
查看pod运行状态:如果状态是running,则pod部署成功
kubectl get pods
使用-o wide可获取到nginx这个pod的ip
kubectl get pods nginx -o wide
每个 pod 都有一个IP地址,直接访问IP地址获取内容
通过kubectl exec可以进入到Pod内部,如果 Pod 中有多个容器,使用kubectl exec -c 指定容器
kubectl exec -it nginx sh
可以看到nginx已经暴露了80端口
netstat -tan
访问下nginx
wget -q -O - localhost
Deployment
在K8s中编排应用可以更好的做弹性扩容,负载均衡,竟然要做负载均衡,那么一个Pod是不够的,需要部署多个pod
在k8s中管理Pod的成为controller,可以使用Deployment这种controller对pod进行扩容,回滚,滚动升级等
发布一个deployment:
apiVersion: apps/v1kind: Deploymentmetadata: name: nginx-deployment # deployment名称spec: selector: matchLabels: app: nginx # service负载均衡的选择标签 replicas: 3 # 部署的pod数量 template: # 指定部署的pod metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:alpine ports: - containerPort: 80
发布:
kubectl apply -f nginx-deployment.yaml
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~