Pod创建多个容器并访问指定容器


本文章案例是采用helm提供的模板来管理kubernates,如果您想了解helm,您可以访问helm docs进行了解。

文章目录

  • Pod创建多个容器并访问指定容器
  • 一、创建Deployment模板
  • 二、运行并查看Pod信息
  • 三、访问指定Pod中的某一个容器

一、创建Deployment模板

如果您对Kubernates还没有了解的话,建议您可以先访问kubernates中文文档, 否者以下内容可能让您觉得难以理解。

#版本号
apiVersion: apps/v1
#资源类型
kind: Deployment
# 源数据
metadata:name: {{ .Values.componentName }}## 命名空间namespace: {{ .Values.namespace }}## 标签labels:{{- include "seeker-file-server.labels" . | nindent 4 }}
spec:## 副本数replicas: {{ .Values.replicaCount }}selector:matchLabels:{{- include "seeker-file-server.selectorLabels" . | nindent 6 }}template:metadata:{{- with .Values.podAnnotations }}annotations:{{- toYaml . | nindent 8 }}{{- end }}labels:{{- include "seeker-file-server.selectorLabels" . | nindent 8 }}spec:{{- with .Values.imagePullSecrets }}## 镜像拉取时的认证imagePullSecrets:{{- toYaml . | nindent 8 }}{{- end }}serviceAccountName: defaultsecurityContext:{{- toYaml .Values.podSecurityContext | nindent 8 }}##Pod要运行的镜像,这里可以是多个。如果您以前的没有看懂也没关系,这里才是重点。  containers:#容器名字- name: "file-server"## file-server容器的镜像地址image: "{{ .Values.image.repository }}:{{ .Values.image.tag}}## 镜像拉取策略(IfNotPresent 默认值,表示宿主机上没有该镜像时才拉取。Always 表示每次创建pod时都会重新拉取镜像。Never 表示只使用本地镜像,从不主动拉取镜像。)imagePullPolicy: "IfNotPresent"## 启动容器时的命令command: [ "/bin/sh","-c","/bin/sh /opt/fileServer/startup.sh"]## 容器启动时的一些挂载信息resources:volumeMounts:- name: localtimemountPath: /etc/localtime省略......## 容器启动时一些环境变量的设置    env:- name: SERVER_PORTvalue: "80"- name: TZvalue: "Asia/Shanghai"- name: LANGvalue: "en_US.UTF-8"省略....ports:- name: http# 容器启动时的端口containerPort: "80"# 采用的协议protocol: TCP## 创建第二个容器- name: nginximage: "{{ .Values.image.nginxRepository }}:{{ .Values.image.nginxTag }}"imagePullPolicy: "IfNotPresent"ports:- name: nginxcontainerPort: {{ .Values.containerPort.nginx }}protocol: TCPenv:- name: TZvalue: "Asia/Shanghai"- name: LANGvalue: "en_US.UTF-8"resources:command: [ "/bin/sh", "-c", "nginx && tail -f /dev/null" ]volumes: - name: localtimehostPath:path: /etc/localtime- name: timezonehostPath:path: /etc/timezone省略...{{- with .Values.nodeSelector }}nodeSelector:{{- toYaml . | nindent 8 }}{{- end }}{{- with .Values.affinity }}affinity:{{- toYaml . | nindent 8 }}{{- end }}{{- with .Values.tolerations }}tolerations:{{- toYaml . | nindent 8 }}{{- end }}

以上模板其实就是创建一个deployment控制器,在containers有两个容器,一个是file-server,另一个是nginx。分别给它们挂载了一些信息和初始化一些环境变量。然后指定启动容器时的指令。

二、运行并查看Pod信息

如果只是使用k8s运行,那么就只需要使用命令kubectl create 文件名即可,如果采用helm指令,那么采用helm install 文件名
(1)查看Pod信息
kubectl get pod -n nameSpace,可以看到此时Pod在REDAY状态的已经有两个,也就是file-server和nginx容器。

(2)查看指定pod详细信息
kubectl describe pod podName -n nameSpace,比如我要查看rtm-dashboard-file-server-5c89974c9c-2mlrj的信息,我可以使用指令:kubectl describe pod rtm-dashboard-file-server-5c89974c9c-2mlrj -n shared

三、访问指定Pod中的某一个容器

绝大数情况下,一个pod应该只创建一个类型的容器,但是也有偶然情况。就好上面模板在一个pod中创建了两种容器,一个叫file-server,一个叫nginx,如果使用 kubectl exec -it podName -n nameSpace bash`命令进入容器,那么k8s会默认进入第一个容器。但是如果我想进入第二个容器怎么办呢?
使用指令:kubectl exec -it pod/podName -c containerName -n nameSpace bash
以刚刚创建的Pod为例,创建了两个容器,分别叫file-server和nginx。
(1)通过kubectl get pod -n nameSpace查看pod名字,看到Pod的名字叫rtm-dashboard-file-server-5c89974c9c-2mlrj

(2) 进入nginx容器
kubectl exec -it pod/rtm-dashboard-file-server-5c89974c9c-2mlrj -c nginx -n shared bash,可以查到已经进入了nginx这个容器。

(3) 进入file-server容器
kubectl exec -it pod/rtm-dashboard-file-server-5c89974c9c-2mlrj -c file-server -n shared bash

Pod创建多个容器并访问指定容器相关推荐

  1. 指定docker容器内存_Docker指定容器使用内存

    如果是还没有生成的容器,你可以从指定镜像生成容器时特意加上run -m 256m 或 --memory-swap=512m来限制. -m操作指定的是物理内存,还有虚拟交换分区默认也会生成同样的大小,而 ...

  2. docker(5、网络2) 1、容器间通信的三种方式 2、 容器如何访问外部 3、 外部如何访问容器

    1.容器之间可通过 IP,Docker DNS Server 或 joined 容器三种方式通信 自定义网络 根据业务需要可通过 bridge 驱动创建类似前面默认的 bridge 网络 1.自定义网 ...

  3. oracle 创建一个用户,只能访问指定的对象

    今天在开发接口时候,需要给接口开发公司提供一个ORACLE 用户,只能访问指定的表或视图,把过程记录到此 1.创建一个ORACLE 的用户 create user username identifie ...

  4. Docker build创建指定容器镜像

    Docker build: Build an image from a Dockerfile. 按照Dockerfile文件所定义内容创建临时性容器,把Docker中所定义的每行命令在临时容器中执行, ...

  5. docker 创建容器时指定容器ip

    docker 创建容器时指定容器ip Docker创建容器时默认采用bridge网络,自行分配ip,不允许自己指定. 在实际部署中,我们需要指定容器ip,不允许其自行分配ip,尤其是搭建集群时,固定i ...

  6. sqlserver SQL Server Management Studio和Transact-SQL创建账户、创建访问指定数据库的只读用户

    文章目录 前言 1. Create a Login 2. 创建访问指定数据库的只读用户 备注:服务器角色 前言 1. Create a Login sqlserver创建用户 Transact-SQL ...

  7. linux配置sftp访问指定目录,Linux创建用户,SFTP只允许访问指定目录

    首先创建用户 useradd lus1 passwd lus1 我这里配置lus1这个用户目录,为sftp指向目录,即/home/lus1/ vim /etc/ssh/sshd_config //这个 ...

  8. Serverless 场景下 Pod 创建效率优化

    作者 | 张翼飞  阿里云技术专家 来源|阿里巴巴云原生公众号 导读:众所周知,Kubernetes 是云原生领域的基石,作为容器编排的基础设施,被广泛应用在 Serverless 领域.弹性能力是 ...

  9. docker容器的网络配置,允许docker可以被宿主机以外的其它主机访问以及局域网内可以直接访问docker容器ip

    自从Docker容器出现以来,容器的网络通信就一直是被关注的焦点,也是生产环境的迫切需求.容器的网络通信又可以分为两大方面:单主机容器上的相互通信,和跨主机的容器相互通信. 一.端口映射(局域网,外网 ...

最新文章

  1. java 内部类的理解
  2. java接口示例_【基础篇】java-接口及其示例
  3. 如何设置XMind思维导图线条
  4. JS进阶之---函数,立即执行函数
  5. session_cache_limiter(private,must-revalidate)是什么意思
  6. C++ select模型简单聊天室
  7. 这个爬虫是你五一假期所需要的!
  8. PHP网站安全日志系统开发与部署
  9. 吃一堑长一智,作为程序员的我们记住这几点,2021年Android开发实战
  10. 纯HTML5+CSS3仿B站首页
  11. 618的优惠券去哪了?
  12. 研发团队管理经验总结(持续更新... ...)
  13. python 画雷达图设置背景颜色
  14. 【IDEA保姆级教程】快捷键
  15. [深度应用]·DC竞赛轴承故障检测开源Baseline(基于Keras1D卷积 val_acc:0.99780)
  16. 自由复制360doc个人图书馆的文档
  17. VIVADO时序约束之Input Delay(set_input_delay)
  18. android vsync,VSYNC  |  Android 开源项目  |  Android Open Source Project
  19. 基于JAVA学生健康管理系统计算机毕业设计源码+系统+数据库+lw文档+部署
  20. 网易图灵学院python公开课_图灵学院 Python全系列教程全栈工程师 python视频教程下载...

热门文章

  1. 易语言多线程大漠多线程模板UI更新
  2. 阜阳计算机技能大赛,[2018年最新整理]2016阜阳技能大赛物联网技术应用与维护竞赛规程.doc...
  3. Java实现HmacSHA1加密
  4. 黑马程序员 一、java 概述与基础知识
  5. 混乱的国内软件外包公司
  6. BC26通过LWM2M接入电信AEP平台(非透传模式 Json格式)
  7. 计算机毕设(附源码)JAVA-SSM京东仓库管理系统
  8. 使用Rufus安装Windows系统
  9. labview编程概述(一)
  10. xbox解锁服务器和语言,微软终于还是没忍住!国行Xbox One实现解锁了