POD管理,资源清单

pod是可以创建和管理kubernetes计算的最小可部署单位,一个pod代表着集群中运行的一个进程,每个pod都有一个唯一的ip。
一个pod包含一个或多个容器,多个容器间共享IPC、Network、UTC namespace
一个容器重建之后,之前的数据都没了。
Pod提供了一个公共存储的网络栈。
数据可以被存储在pod内。

server2 不参加调度,和docker swarm不一样,docker swarm是master也参加调度。server2上有个污点,3和4是work,优先往3,4上调。
kubectl run nginx --image=nginx #创建并运行
kubectl get pod -o wide #查看
curl 10.244.2.2 这些地址只允许在集群内访问。
kubectl delete pod nginx
kubectl get pod
kubectl describe nodes server2 | grep Tain 这是它的调度关系。
创建副本,控制状态的弹缩。
kubectl deployment my-dep --image=myapp:v1 --replicas=3 #deployment 控制器,创建控制器。
kubectl get pod -o wide
在集群访问地址
有控制器的前提下,k8s的容器是有自愈能力的
kubectl expose deployment my-dep --port=80 --target-port=80
kubectl get svc
kubectl describe svc my-dep

从集群外部访问地址访问不通,如果想要访问得通的话。

server2
kubectl edit svc my-dep #编辑svc资源。

在这里插入图片描述

kubectl get svc #是做了一个端口映射
宿主机
curl 172.25.0.2:32225
curl 172.25.0.2:32225/hostname.html #显示出得页面是显示不同容器得id的。

pod的扩容与缩容

server2 master
kubectl scale --replicas=6 deployment my-net
kubectl get pod -o wide
kubectl set image deployment my-dep myapp=myapp:v2 --record #record可以查看滚动历史 ,但已经废弃。
kubectl rollout history deployment my-dep

ls控制副本,更新一个版本就创建一个ls。

kubectl rollout undo deployment my-dep --to-revision=1 //回滚版本

创建清单
在这里插入图片描述
在这里插入图片描述

cat kube-flannel.yml
server2
cd
ls
mkdir pod
cd pod/
ls
vim demo.yaml
kubectl delete deployment.apps my-net
kubectl get pod
kubectl delete svc my-dep
kubectl get svc
kubectl run demo --image=nginx
kubectl get pod -o yaml #输出为一个yaml文件
kubectl get pod -o yaml > demo.yaml
kubectl delete -f demo.yaml
rm -f demo.yaml
vim demo.yaml
kubectl api-versions #查看版本
kubectl explain pod #查看pod文档
kubectl explain pod.spec

在这里插入图片描述

kubectl apply -f demo.yaml 执行yaml文件
kubectl get pod

以下为创建pod
在这里插入图片描述

kubectl delete -f demo.yaml #删除

一般不需要在集群内部做端口映射。
service称为微服务,专门用来暴露port。定义了一个服务的多个pod逻辑合集和访问pod的策略。如何让集群外的客户端访问到集群内的port应用。我们很少对一个容器或者是Pod做一个端口映射,往往是整体对外暴露。
把外部所有的访问流量均衡到集群内的所有port,并且暴露出去。
端口资源只有一份。
以下为端口映射
在这里插入图片描述

server 映射到哪个机器上就在哪个机器上做
iptables -t nat -nL | grep :80

limit限制,cpu:2表示一个port最多需要2个cpu ,否则不能调度 ,这个是上限
requests: cpu:2表示一个port最少需要2个cpu,同上,这个是下限
以下是资源限制
在这里插入图片描述

查看cpu
M是以1000换算的,Mi是以1024换算的。后面这个更精确。一个cpu会分成1000毫核

节点
lscpu
server2
kubectl apply -f demo.yaml
kubectl describe pod demo

在这里插入图片描述
为什么一开始调度到哪个机器上,之后就一直哪个机器上。因为此前这个机器上nginx或者是其他需要的镜像,所以在部署的时候,部署到这台机器上的效率更高。所以会优先调度到之前运行的节点上。
如果想控制节点选择。
在这里插入图片描述

server2
kubectl get nodes --show-labels #显示节点标签
server1
cd
docker pull yakexi007/game2048

在这里插入图片描述
修改镜像
在这里插入图片描述
每次做新实验之前需要 删除demo.yaml kubectl delete -f demo.yaml

server2
kubectl apply -f demo.yaml
kubectl get pod #会出现报错。因为私有仓库需要认证,否则镜像拉取失败。恢复到之前的镜像

k8s中有专门保存密钥的类型,secret。
hostNetwork:这个不是镜像映射,而是直接使用宿主机网络做直通。port直接和宿主机使用一个网络栈
在这里插入图片描述
iptable是包过滤防火墙
hostNetwork之后不需要经过防火墙。但是这种模式不能运行相同副本。
想要在创建的pod中运行多个容器。
sur命令需要镜像

server1
docker search busybox

在这里插入图片描述
myapp是服务式镜像,busyboxplus是交互式的。交互式镜像必须给一个终端,否则就会退出有问题。tty是终端,stdin支持终端录入。
kubectl explain pod.spec.containers
在这里插入图片描述

server2
kubectl describe pod demo
kubectl attach demo -c busybox -it #-c指定容器名称,-it交互式
ip addr
curl localhost 访问的是80端口,通过回环就能访问到
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值