pod是k8s项目中的最小编排单位,它是运行中的一组(一个或多个)容器,这些容器共享存储、网络、调度等资源,pod是一个逻辑概念,同一个名称空间下不同pod可以通过ip互相访问。

一、通过命令行方式管理

1.创建

在dev名称空间下创建名称为mynginx的pod,如果不指定-n参数,则默认创建在default名称空间下

kubectl run mynginx --image=nginx -n dev

2.查看dev名称空间下所有pod的简单信息

kubectl get pod -n dev

创建pod需要时间,尤其是节点上没有该镜像时,还需要下载镜像,可以看到pod的Status状态会随着时间而改变,最后变成Running表示pod启动成功

3.查看dev名称空间下所有pod的详细信息

kubectl get pod -n dev -owide --show-labels

结果截图如下

NODE:表示该pod被调度了哪个worker节点上

IP:k8s会为每个pod分配一个ip,集群中的任意一个机器以及任意的应用都能通过此ip来访问这个Pod

在master节点上可以通过curl ip访问pod

# 默认是80端口,所以访问的是pod中的nginx容器
curl 10.244.218.1

4.根据标签检索pod

kubectl get pod -n dev -owide --show-labels -l app=nginx

5.查看pod的描述信息

kubectl describe pod mynginx -n dev

其中Events事件可以查看到pod被创建的详细过程

6.查看Pod的运行日志

kubectl logs mynginx -n dev

7.进入pod容器

kubectl exec -it mynginx /bin/bash -n dev

更改nginx容器的index.html内容

echo "hello,pod" >> /usr/share/nginx/html/index.html

再次访问mynginx

curl 10.244.218.1

可以看到index.html首页内容已经发生了变化

8.监控pod状态命令

使用k8s的-w参数

kubect get pod -n dev -w

使用linux命令

watch -n 1 kubectl get pod -n dev

9.删除pod

kubectl delete pod mynginx -n dev

二、使用yaml管理

1.在pod里部署两个容器

一个pod里面不能部署相同镜像的容器,端口冲突

(1)创建yaml文件

vi pod-nginx-tomcat.yaml

(2)编写pod文件内容,定义两个容器,一个为nginx,一个为tomcat

apiVersion: v1
kind: Pod
metadata:
labels:
web: server
name: web-server
namespace: dev
spec:
containers:
- image: nginx
name: nginx
- image: tomcat:9.0

(3)使用kubectl apply创建pod

kubectl apply -f pod-nginx-tomcat.yaml

(4)自动监控创建过程

kubectl get pod -n dev -w

2.查看pod描述

kubectl describe pod web-server -n dev

3.在节点上访问pod

(1)查看pod的ip

kubectl get pod -n dev -owide

(2)通过此ip访问pod中的nginx容器

curl 10.244.218.2

(3)通过此ip访问pod中的tomcat容器

curl 10.244.218.2:8080

4.进入pod里面访问服务

(1)进入pod里面的nginx容器

kubectl exec web-server --container nginx -it /bin/bash -n dev

(2)在容器内,以下命令均可访问,证明了pod里网络共享

curl localhost
curl localhost:8080
curl 10.244.218.2
curl 10.244.218.2:8080

k8s入门之pod(四)的更多相关文章

  1. k8s入门你至少需要会哪些

    body { margin: 0; overflow: auto; font: normal 14px Verdana; background: rgba(255, 255, 255, 1); pad ...

  2. k8s入门之集群搭建(二)

    一.准备三台节点 从上篇文章 k8s入门之基础环境准备(一)安装的Ubuntu虚拟机克隆出三台虚拟机,如图所示 启动这三台虚拟机节点,分别做如下配置 虚拟机名称 IP HostName k8sMast ...

  3. k8s入门系列之guestbook快速部署

    k8s集群以及一些扩展插件已经安装完毕,本篇文章介绍一下如何在k8s集群上快速部署guestbook应用. •实验环境为集群:master(1)+node(4),详细内容参考<k8s入门系列之集 ...

  4. k8s入门系列之扩展组件(一)DNS安装篇

    DNS (domain name system),提供域名解析服务,解决了难于记忆的IP地址问题,以更人性可读可记忆可标识的方式映射对应IP地址. Cluster DNS扩展插件用于支持k8s集群系统 ...

  5. K8s 入门

    中文文档:https://www.kubernetes.org.cn/kubernetes%E8%AE%BE%E8%AE%A1%E6%9E%B6%E6%9E%84 小结大白话 Portainer 挺好 ...

  6. 反手来个K8S入门到跑路

    layout: post title: 反手来个K8S入门到跑路 category: linux date: 2019-06-09 tags: linux k8s 反手来个K8S入门到跑路 前言 放假 ...

  7. k8s 中的 Pod 细节了解

    k8s中Pod的理解 基本概念 k8s 为什么使用 Pod 作为最小的管理单元 如何使用 Pod 1.自主式 Pod 2.控制器管理的 Pod 静态 Pod Pod的生命周期 Pod 如何直接暴露服务 ...

  8. WCF入门教程(四)通过Host代码方式来承载服务

    WCF入门教程(四)通过Host代码方式来承载服务 之前已经讲过WCF对外发布服务的具体方式. WCF入门教程(一)简介 Host承载,可以是web,也可以是控制台程序等等.比WebService有更 ...

  9. Docker入门教程(四)Docker Registry

    Docker入门教程(四)Docker Registry [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它 ...

随机推荐

  1. Redis系统学习

    准备写一些关于Redis学习的文章的,发现网上有N多资料有人已经做了总结.查看这些Redis资料,按次序浏览这些Redis资料,相信想学习Redis的同学会很快熟悉: 1.Redis学习手册(目录) ...

  2. Apache HBase MTTR 优化实践

    HBase介绍 HBase是Hadoop Database的简称,是建立在Hadoop文件系统之上的分布式面向列的数据库,它具有高可靠.高性能.面向列和可伸缩的特性,提供快速随机访问海量数据能力. H ...

  3. 这些OAuth2客户端的认证方式你未必了解

    OAuth2客户端按照它们与授权服务器进行安全认证的能力可以分为机密类型(Confidential)和公共类型(Public). 机密类型的自身会有个密码凭据,比如Web服务器后端程序:而公共类型则没 ...

  4. 半吊子菜鸟学Web开发1 --配置开发环境

    先说说我自己的情况,我算是一个半吊子菜鸟,对web开发熟练度为0,但是对熟悉C++和Python 所以这里开始记录我学习Web开发的历程,看看我这里学习的程序,能够学到什么地方. 首先是配置环境,我的 ...

  5. kmp-getNext

    #include <iostream> using namespace std; void getNext(char a[]){ int k=-1,i=0,next[10]; next[0 ...

  6. 一条SQL语句执行得很慢的原因有哪些

    说实话,这个问题可以涉及到 MySQL 的很多核心知识,可以扯出一大堆,就像要考你计算机网络的知识时,问你"输入URL回车之后,究竟发生了什么"一样,看看你能说出多少了. 之前腾讯 ...

  7. 使用docker-compose+nginx+uwsgi+django部署项目

    (1)centos上下载docker + docker-compose (2)基础目录 (3)首先创建一个纯净的python+django+uwsgi的镜像,便于后期使用(也可不用创建,后期docke ...

  8. 在并发情况下,Elasticsearch 如果保证读写一致?

    1.可以通过版本号使用乐观并发控制,以确保新版本不会被旧版本覆盖,由应用 层来处理具体的冲突: 2.另外对于写操作,一致性级别支持 quorum/one/all,默认为 quorum,即只 有当大多数 ...

  9. JVM 选项 -XX:+UseCompressedOops 有什么作用? 为什么要使用?

    当你将你的应用从 32 位的 JVM 迁移到 64 位的 JVM 时,由于对象的指针从 32 位增加到了 64 位,因此堆内存会突然增加,差不多要翻倍.这也会对 CPU 缓存(容量比内存小很多)的数据 ...

  10. 数组(Array)和列表(ArrayList)有什么区别

    Array可以包含基本类型和对象类型,ArrayList只能包含对象类型 Array大小固定,ArrayList的大小是动态变化的. ArrayList提供了更多的方法和特性:比如 :addAll() ...