K8s第三节课

存储
数据层面复用问题
docker -V 是挂载在宿主机上
k8s中,
pod是容器的载体,为容器提供共享的数据存储和网络.
Volume挂载的emptyDir其实是挂载pod中

在这里插入图片描述
kubectl create -f pod-emp.yaml
kubectl exec -it empty-pod /bin/sh
进入到容器中,发现有个/data目录
宿主机是看不到/data的,因为挂载到了pod的临时目录
在这里插入图片描述
在这里插入图片描述
kubectl create -f pod-empty.yaml

Gitrepo(empty的基础上增加git命令) 用的不多
hostPath(宿主机目录映射) 用的不多
在这里插入图片描述
kubectl create -f pod-hostpath.yaml
kubectl get pods -o wide

在这里插入图片描述
kubectl exec -it host-pod /bin/sh
可以看到容器内的/data目录下创建文件,work2宿主机也会同步创建的文件
下次创建pod如果跑到work1,数据岂不是还得重复同步一遍过去,所以这种宿主机方式用得少,破坏pod的自由

nfs共享服务用的多(第三方网络存储) 如阿里云的oss
nfs安装
yum install -y nfs-utils
启动
systemctl start nfs
showmount -e
在这里插入图片描述
在master机器中,
vim /etc/exports 写入
/data/volumes *(rw,no_root_squash)
systemctl restart nfs
mkdir -p /data/volumes

work2中执行,
建立目录 mkdir /nfs
使用nfs挂载一个目录 挂载在/nfs
mount -t nfs master:/data/volumes /nfs
测试:
在master的 /data/volumes/目录下创建文件

在这里插入图片描述
在work2的/nfs目录下可以直接看到
在这里插入图片描述
ip是提供nfs服务的机器ip
在这里插入图片描述
kubectl create -f vol-nfs.yaml
master下,直接访问nginx地址会显示403,因为没有文件
在这里插入图片描述
在这里插入图片描述
使用命令 创建文件
echo ‘

NFS success

’ > /data/volumes/index.html
再次访问成功
在这里插入图片描述
网络服务,挣脱掉数据束缚
在这里插入图片描述
运维层面,两类人:
1,系统资源的管理者(有没有能提供20g的资源),定制资源,这个pv是25g的规格 pv
2,部署人员,使用者(申请20g),向管理者申请资源 pvc

namespace 命令空间 ,资源隔离作用,比如不同工作组
kubectl get namespace
在这里插入图片描述
kubectl get pods --namespace kube-system 查找命名空间kube-system下的所有pod
kubectl get pods 默认后面不写是查找default命名空间的pod
在这里插入图片描述
在这里插入图片描述
kubectl get pods --namespace default 等价于 kubectl get pods

pv与namespace是平级资源,pvc可以归属到namespace下
在这里插入图片描述
vim vol-pv.yaml
生成5g的资源供人使用
在这里插入图片描述
kubectl create -f vol-pv.yaml
查看命令生成的pv
kubectl get pv
在这里插入图片描述
申请1g的资源,使用模式是ReadWriteMany,并发读写,同时支持多个pod来写,读
在这里插入图片描述
创建一个pvc
kubectl create -f vol-pvc.yaml
查看创建好的pvc
kubectl get pvc
在这里插入图片描述

kubectl get pv
在这里插入图片描述
一个pv被pvc使用后,就不能被其他的pvc拿去使用了
cat vol-pod.yaml 两个之间用 — 进行分隔,工作中常用写法
在这里插入图片描述
pvc删除后之前绑定pv会变为released状态
在这里插入图片描述
为了测试 创建pod并绑定pvc一体功能,先把pv也一起删掉
kubectl get pvc
kubectl delete pvc nfs-pvc
先创建pv,后创建一个pod,下方的pod中创建资源中已经指定好了pv
kubectl create -f vol-pv.yaml
kubectl create -f vol-pod.yaml

服务pod停掉了,再启动时,挂载的还是原来的pvc
cat stateful.yaml 有状态的用这个,重启后我还是要使用之前存储的地方,不能变化 ,一般开发人员用不到stateful
在这里插入图片描述
kubectl create -f stateful.yaml
删除控制器,myapp deployment
kubectl get sts 查询控制器
kubectl delete sts myapp
所有环境清除ok之后
kubectl create -f pv.yaml
kubectl create -f stateful.yaml

在这里插入图片描述
创建一个configmap,名字为nginxconf ,存入键值对 db.host=192.168.11.111
kubectl create configmap nginxconf --from-literal=db.host=192.168.11.111
kubectl get cm
在这里插入图片描述
kubectl describe cm nginxconf
在这里插入图片描述
在这里插入图片描述
kubectl get pod
进入容器
kubectl exec -it cmpod /bin/sh
容器内部执行命令可以看到结果
env|grep DB_HOST
在这里插入图片描述

docker中容器的通信模式
在这里插入图片描述
K8s中同一pod的哦容器,共享一个网络ip
在这里插入图片描述
在这里插入图片描述
kubectl create -f net-pod.yaml
kubectl get pod
kubectl exec -it netpod /bin/sh
默认是进到资源文件中配置的第一个容器,本例中是进到的nginx
在这里插入图片描述
kubectl exec -it netpod -c tomcat /bin/sh 指定进名字为tomcat的容器
两个pod之间的通信,同一node的pod,在一个子网中,本身就能访问通
在这里插入图片描述
跨node的通信,需要网络组件的协调,比如flannel
在这里插入图片描述
在这里插入图片描述
添加路由命令
route add -net 172.17.0.0 netmask 255.255.255.0 gw 192.168.100.166
意思是只要访问到172.17.*.*就直接给我转到192.168.100.166去访问
查看ip转发
iptables -t filter -nvL FORWARD
在这里插入图片描述
k8s需要记住网关对应关系,路由表
数据记录在k8s的etcd服务中
在这里插入图片描述
secret其实就是个configmap,只不过里面放的数据转码加密了,保密性

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值