今日作业:
1.如何查看一个pod部署在哪个节点上
kubectl get pod -o wide
如果是查看某一个pod的话
kubectl get pod nginx-pod -o wide
2.如何查看一个pod里的容器日志
如果pod只有一个容器的话
kubectl logs -f nginx-tomcat
有指定pod中某一个容器的日志
kubectl logs -f nginx-tomcat nginx
3.如何查看一个pod的详细内容
[root@master ~/k8s_yml/POD]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-pod 0/1 ContainerCreating 0 9m7s
nginx-tomcat 2/2 Running 0 28m
kubectl describe pod nginx-tomcat
4.初始化容器的作用是什么?
5.初始化容器和启动钩子有什么区别?
6.什么是存活性探针,他的作用是什么?
7.什么是就绪性探针,他的作用是什么?
8.解释以下资源配置清单的每一行内容
apiVersion: v1 #api版本号
kind: Pod #yml类型是pod
metadata: #元数据,存在etcd的身份信息
name: nginx-pod #pod名称为nginx-pod
labels: #标签
app: nginx #标签的以键值的形式存储 键是app 值是nginx
spec: #pod运行的相关信息 规则
containers: #容器的意思
-
name: nginx #启动容器名nginx
image: nginx:1.14.0 #拉取镜像nginx 1.14.0版本
imagePullPolicy: IfNotPresent #镜像拉取方式本地有就从本地拉取,没有的话就从远程仓库下载
lifecycle: #生命周期
postStart: #nginx容器启动之前
exec: #执行
command: [/bin/sh, -c, 'echo ok > /usr/share/nginx/html/health.html'] #执行容器命令
preStop: #nginx容器停止后
exec: #执行
command: [/bin/sh, -c, 'echo beybey > /usr/share/nginx/html/stop.log'] #执行容器命令
livenessProbe: #存活性探针
exec: #执行
command: #基于查看这个文件是否存在来检查延时
- cat
- /usr/share/nginx/html/health.html
initialDelaySeconds: 3 #初始化延时3秒
periodSeconds: 3 #容器启动后每隔3秒检查一次
readinessProbe: #
httpGet: #基于http请求探测
path: /index.html #请求地址,如果这个地址返回状态码在200-400之间正常
port: 80 #请求端口
initialDelaySeconds: 30 #每一次启动探测在容器启动后30秒
periodSeconds: 3 #容器启动后,每隔3秒检查一次volumeMounts: #容器挂载目录
- name: data #容器挂载名称
mountPath: /usr/share/nginx/html/ #容器挂载路径
- name: data #容器挂载名称
volumes: #共享卷
- name: data #共享目录名字
hostPath: #主机路径
path: /code/ #主机挂载卷路径
操作题:想拿18K的必须完成
根据需求完成实验
在master主机上,创建镜像
1.基于nginx镜像使用dockerfile构建小鸟飞飞和神经猫游戏镜像
dockerfile
FROM centos:7
RUN yum localinstall http://nginx.org/packages/rhel/7/x86_64/RPMS/nginx-1.20.1-1.el7.ngx.x86_64.rpm -y
RUN rm -rf /root/*
RUN yum clean all
RUN mkdir /code
ADD code /code/
RUN cp /code/game.conf /etc/nginx/conf.d/game.conf
CMD ["nginx","-g","daemon off;"]
创建镜像
docker build -t game:v2 .
保存镜像到本地并发送给node1和node2
2.将制作好的游戏镜像导入到node1和node2节点上
vim game-service.yml
apiVersion: v1
kind: Service
metadata:
name: game-svc
spec:
selector:
app: game
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
nodePort: 30000
type: NodePort
编写game-service.yml资源配置清单,并创建pod
kubectl apply -f game-service.yml
3.编写k8s运行游戏的POD资源配置清单
4.资源配置需求
元数据名称:game
元数据标签:app: game
容器名称:game
镜像名称:game:V1
镜像拉取策略:本地优先
启动钩子:在POD代码目录创建index.html首页文件
停止钩子:在代码目录输出当前退出的时间到日志文件
存活性探针:首页文件存在 在容器启动10秒后第一次探测 每隔5秒探测一次 失败重试4次
就绪性探针:访问首页状态码200 在容器启动5秒后第一次探测 每隔3秒探测一次 失败重试2次
数据目录:使用存储卷挂载到宿主机的/code目录下,容器内目录为ngixn的代码目录
网络访问:资源配置清单已经写好,只需要应用即可,windows上绑定hosts解析,根据域名访问
vim game.yml
apiVersion: v1
kind: Pod
metadata:
name: game
labels:
app: game
spec:
containers:
- name: game
image: game:v2
imagePullPolicy: IfNotPresent
lifecycle:
postStart:
exec:
command: [/bin/sh, -c, 'echo start > /code/index.html']
preStop:
exec:
command: [/bin/sh, -c, 'echo $(date +%F) > /code/stop.log']
livenessProbe:
exec:
command:
- cat
- /code/sjm/index.html
initialDelaySeconds: 10
periodSeconds: 5
failureThreshold: 4
readinessProbe:
httpGet:
path: /index.html
port: 80
initialDelaySeconds: 5
periodSeconds: 3
failureThreshold: 2
volumeMounts:
- name: data
mountPath: /usr/share/nginx/html/
volumes:
- name: data
hostPath:
path: /code/
访问k8s.xiaoniao.com:30000 跳转到小鸟飞飞
访问k8s.sjm.com:30000 跳转到神经猫
电脑主机配置hosts解析
==============service资源配置==============
apiVersion: v1
kind: Service
metadata:
name: game-svc
spec:
selector:
app: game
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
nodePort: 30000
type: NodePort