深入Pod
设计思想
Pod是最小调度单位
本质还是容器的隔离
Pause容器
容器只能运行一个服务,是单进程的。
项目 7-pod
1、pod-network
kubectl apply -f pod-network.yaml # 查看有两 REDAY启动两个 # 部署到w2 kubectl get pods -o wide
在w2上查看
docker ps|grep network
进入容器
docker exec -it 1abf0453d138 sh netstat -ntlp # 容器之中相互访问网络是通的 wget localhost:8080/hello?name=fffff # 查看IP ifconfig # 进入另一容器 docker exec -it 876115a652fc sh ifconfig # 查看ip是一样的,共享IP
2、pod-volume
共享目录
kubectl apply -f pod-volume.yaml kubectl get pods -o wide # 运行机器 docker ps|grep volume # 进入dubbo容器 docker exec -it 4bad00e5f65d sh # 在 /shared-dubbo/ 创建: touch 123123 # 进入web容器的共享目录。 /shared-web 同步了 123123 内容
查看 host
# 查看hosts和主机无关,保持一一致的,不能在容器上修改hosts文件 docker exec -it 4b4184cce642 cat /etc/hosts docker exec -it 4bad00e5f65d cat /etc/hosts
增加配置 hostAliases
kubectl apply -f pod-volume.yaml
查看host已经加上了
docker exec -it 6932b1752b07 cat /etc/hosts
docker exec -it 747d3ac98fd8 cat /etc/hosts
配置
hostNetwork: true # 增是否使用宿主机的网络
hostPID: true # 增使用宿主机的PID namespace
docker exec -it a178d98baafb sh # 进程和端口包括宿主机的 ps nestart
增容器启动停止时执行命令
lifecycle:
kubectl apply -f pod-volume.yaml # 登入web容器,查看日志 docker exec -it 8291babf900e sh # 可以查看启动是插入的数据日志 tail -f /var/log/messages
pod的几种状态
Pendding containerCreating Running Succeeded Failed Ready CreashLoopBakOff # 循环补偿,启动失败状态 Unknown # 未知状态
3、ProjectedVolume 项目
Secret 配置
kubectl get secret # 用于和apiserver交互授权的。查看定义。 kubectl get secret default-token-blxt7 -o yaml
# 查看pods. secret用法。 kubectl get pods springboot-web-demo-7f8ff6b8bc-qcjsz -o yaml """ # 定义 volumes: defaultMode: 420 #权限
# 挂载位置 volumeMounts """
# 进入容器,查看挂载目录,为bas64解密。
docker exec -it a178d98baafb sh
创建、使用
#### 创建。 存储到etcd中, 在pod中使用 # kubectl apply -f secret.yaml #### 使用。在pod使用 kubectl apply -f pod-secret.yaml # 查看部署位置 kubectl get pods -o wide # 进入容器 docker ps|grep secret docker exec -it cfe77e3942d0 sh cd db-secret/ # 查看secret名称 cat username
configmap配置
配置文件方式
#### 创建,指定文件 kubectl create configmap web-game --from-file game.properties # 查看 kubectl get cm web-game -o yaml #### 使用,在pod kubectl apply -f pod-game.yaml #查看现有的配置文件 cd /etc/config/game game.properties # 和上面创建的一样的。 程序可以通过配置文件拿到一些属性值 # 可以修改配置 kubectl edit cm web-game # 登录容器查看修改后的配置 docker exec -it 42fa6b0a3509 sh cat /etc/config/game/game.properties
环境变量方式
#### 创建。 配置文件形式创建 kubectl apply -f configmap.yaml #### 使用。 通过环境变量使用 kubectl apply -f pod-env.yaml
# 进入容器 docker exec -it 91cd70a02112 sh / # env|grep LOG # 查看环境环境变量已经设置到了容器中。程序可以通过环境变量使用了
cmd方式
kubectl apply -f pod-cmd.yaml
docker exec -it 91cd70a02112 sh
downwardapi配置
让程序能取到pod对象本身的一些信息
kubectl apply -f pod-downwardapi.yaml docker exec -it d99ae589e81e sh cd /etc/podinfo # 查看拿到pod定义信息
end...