当前位置: 首页 > news >正文

Kubernetes第二天

1.pod运行一个容器

1.创建目录

mkdir -p /manifests/pod

2.编写pod资源清单文件

vim 01-myweb.yaml

说明:

apiVersion:指的是Api的版本

metadata:资源的元数据

spec:用户期望的资源的运行状态

status:资源实际的运行状态

由于拉取远程镜像失败,这里使用本地部署的harbor的镜像

3.创建pod资源清单

kubectl create -f  01-myweb.yaml

4.查看资源

kubectl get pods -o wide

2.pod运行多个容器

1.编写资源清单

vim 02-nginx-tomcat.yaml

apiVersion: v1
kind: Pod
metadata:name: nginx-tomcat
spec:containers:- name: nginximage: harbor.lxcedu.com/base-img/nginx:1.14.2- name: tomcatimage: harbor.lxcedu.com/base-img/tomcat:9-jre8-alpine

2.创建资源清单

kubectl create -f 02-nginx-tomcat.yaml

3.此时可以运行以下命令查看状态

kubectl describe pod nginx-tomcat

结果如图,这里截取部分信息

这个命令可以查看pod构建的容器的信息。

此时的容器属于同一个pod,共享ip。

3.容器使用宿主机网络

容器使用宿主机网络,相当于"docker run --network host"

spec:# 使用宿主机网络,相当于"docker run --network host"hostNetwork: true

4.由于容器没有阻塞,导致容器一直重启引发的故障的解决办法

containers:
# 给容器分配一个标准输入,默认值为false# stdin: true# 给容器分配一个启动命令,修改Dockerfile的CMD指令# args: ["tail","-f","/etc/hosts"]# 也可以修改command字段,相当于修改Dockerfile的ENTRYPOINT指令# command: ["sleep","15"]# args也可以和command命令搭配使用,和Dockfile的ENTRYPOINT和CMD效果类似command:- "tail"args:- "-f"- "/etc/hosts"

5.一个资源清单文件运行两个pod

apiVersion: v1
kind: Pod
metadata:name: nginx-multiple01
spec:containers:- name: nginximage: harbor.lxcedu.com/base-img/nginx:1.14.2---apiVersion: v1
kind: Pod
metadata:name: nginx-multiple02
spec:containers:- name: nginximage: harbor.lxcedu.com/base-img/nginx:1.14.2

6.故障案例一

pod清单如图所示

从图中可以得到这pod运行在同一个节点(k8s232),同时都使用了宿主机网络,导致第二个容器启动失败

可以直观看到这两个容器是由于端口占用是的第二个容器启动失败(两个nginx容器都占用了宿主机的80端口),但是实际生产环境可能无法通过清单文件看出来,所以此时需要进入到第二个启动失败的容器进行排查。

步骤一:修改清单文件,让第二个pod的容器保持启动状态

步骤二:创建资源清单并进入容器

kubectl apply -f 04-nginx-nginx.yaml

进入pod,由于只有一个容器,此处不需要指定容器,默认连接第一个容器

kubectl  exec nginx-multiple02 -it -- sh    (i是标准输入,t分配一个终端)

开始排查:

如图可以看出配置文件正确,端口被占用。


http://www.mrgr.cn/news/82156.html

相关文章:

  • 虚拟机Centos下安装Mysql完整过程(图文详解)
  • 在mac上通过Vundle安装YouCompleteMe(YCM)
  • 分布式光伏规模界点为什么是6MW?
  • 教程:从pycharm基于anaconda构建机器学习环境并运行第一个 Python 文件
  • JavaScript中如何创建对象
  • 亚远景-ASPICE与ISO 26262:汽车软件开发与功能安全的协同作用
  • Vue演练场基础知识(一)
  • Wireshark和科来网络分析系统
  • 掌握大数据处理利器:Flink 知识点全面总结【上】
  • C++ 设计模式:职责链模式(Chain of Responsibility)
  • pyside6总结
  • Docker新手:在tencent云上实现Python服务打包到容器
  • 【Unity3d】C#浮点数丢失精度问题
  • 【文献精读笔记】Explainability for Large Language Models: A Survey (大语言模型的可解释性综述)(二)
  • 1、pycharm、python下载与安装
  • 软件测试期末复习
  • 基于Python的社交音乐分享平台
  • 4.微服务灰度发布落地实践(消息队列增强)
  • C++ 设计模式:命令模式(Command Pattern)
  • AI与药学 | ChatGPT 在临床药学中的有效性以及人工智能在药物治疗管理中的作用
  • UCAS 24秋网络认证技术 CH15 Kerberos复习
  • leetcode之hot100---148排序链表(C++)
  • pg_wal 目录下 wal 日志文件异常累积过大
  • ACE之ACE_Message_Queue
  • 2、pycharm常用快捷命令和配置【持续更新中】
  • GPT分区 使用parted标准分区划分,以及相邻分区扩容