2022-03-05 day97 作业

今日作业:
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/ #容器挂载路径

volumes: #共享卷

  • name: data #共享目录名字
    hostPath: #主机路径
    path: /code/ #主机挂载卷路径

操作题:想拿18K的必须完成
根据需求完成实验
在master主机上,创建镜像


image.png

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;"]
image.png

创建镜像

docker build -t game:v2 .

image.png

保存镜像到本地并发送给node1和node2


image.png
image.png

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


image.png

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 跳转到神经猫

image.png
image.png

电脑主机配置hosts解析


image.png

==============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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第1章 常用资源类型1.工作负载类型RC ReplicaController 副本控制器RS Replic...
    zhaocheng690阅读 241评论 0 0
  • https://www.yuque.com/fairy-era/yg511q/od4gy0#72eaf3c6[ht...
    燚旻阿阅读 149评论 0 0
  • 第一章k8s介绍 1.应用部署方式的演变 (1)传统部署方式 (2)虚拟化部署方式 (3)容器化部署 2.3个容器...
    玩转Linux与MySQL阅读 2,876评论 0 0
  • Kubernetes 简介 Kubernetes 是什么? Kubernetes 是一个可移植的、可扩展的开源平台...
    王勇1024阅读 760评论 0 2
  • 污点、容忍度 给了节点选则的主动权,我们给节点打一个污点,不容忍的 pod就运行不上来,污点就是定义在 节点上的键...
    菜头_355f阅读 759评论 0 2