栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

在kubernetes中运行的容器

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在kubernetes中运行的容器

Pod

首先了解到容器之间彼此是完全隔离的,但是我们期待是隔离的容器组,而不是单个容器,每个容器组内共享一些资源,而不是全部。kubernetes通过配置Docker让一个pod内的所有容器共享相同的linux命名空间。

pod内运行的容器位于相同的Network命名空间中,因此它们共享相同的IP地址和端口空间,也就是说,在同一个pod内的两个容器的服务不能占用同一个端口。每个pod可以通过其它pod的IP地址来实现互相访问。

创建Pod
#版本
apiVersion: v1
#资源类型
kind: Pod
#pod元数据,关于pod的一些属性
metadata:
#pod名称
  name: yfpod
  #pod标签
  labels:
    creation_method: manual
    ttag: test
    env: prod
#pod的规格/内容
spec:
#节点选择器,可以指定的将pod部署到符合要求的节点
  nodeSelector:
    gpu: "true"
  #容器
  containers:
  - name: yfpod
    image: luksa/kubia
    resources:
      limits:
        memory: "128Mi"
        cpu: "500m"
    #端口
    ports:
      - containerPort: 8080
        protocol: TCP

这里知识介绍个别的标签含义,可以使用命令来获取标签含义

kubectl explain pods

kubectl explain pod.spec
创建pod

写完yaml文件之后,在终端中切换到该目录下。

kubectl create -f test.yaml
查看程序日志

k8s管理的最小单位是pod,但是pod中有多个容器,每个容器都有日志,我们查看容器中的日志。

查看pod的日志

kubectl logs podname

查看pod中某一个容器的日志

kubectl logs podname -c containername
标签

在k8s中标签是很重要的,标签是可以附加到资源的任意键值对,一个资源可以拥有多个标签。

我们可以在创建pod的时候指定标签,也可以在既有pod中增加或修改标签

在创建pod时添加标签

apiVersion: v1
kind: Pod
metadata:
  name: yfpod
  namespace: test
  labels:#标签
    name: yfpod
    creation_method: manual
    ttag: test
    env: prod
spec:
  nodeSelector:
    gpu: "true"
  containers:
  - name: yfpod
    image: luksa/kubia
    resources:
      limits:
        memory: "128Mi"
        cpu: "500m"
    ports:
      - containerPort: 8080
        protocol: TCP

增加标签

kubectl label po podname create_method=manual

修改标签

kubectl label po podname create_method=test --overwrite

在修改标签时添加–overwrite,将原有的标签覆盖

根据标签查找pod
#查找有指定标签的pod,这里create_method是键名
kubectl get pods -l create_method
#查找指定值的标签
kubectl get pods -l create_method=manual
#查找没有指定标签的pod
kubectl get pods -l '!create_method'
#查找标签在指定范围的
kubectl get pods -l create_method in (manual, other)
#查找标签不在指定范围的
kubectl get pods -l create_method notin (manual, other)
将特定的pod调度到符合预期的节点

在创建时调度

apiVersion: v1
kind: Pod
metadata:
  name: yfpod
  namespace: test
  labels:
    name: yfpod
    creation_method: manual
    ttag: test
    env: prod
spec:
#节点选择器
  nodeSelector:
    gpu: "true"
  containers:
  - name: yfpod
    image: luksa/kubia
    resources:
      limits:
        memory: "128Mi"
        cpu: "500m"
    ports:
      - containerPort: 8080
        protocol: TCP

命名空间

命名空间可以对资源进行分组。

创建命名空间

kubectl create namespace test
停止和移除pod
#根据podname移除
kubectl delete po podname
#根据标签删除
kubectl delete po -l create_method=manual
#删除整个命名空间
kubectl delete ns namespace
#删除所有pods
kubectl delete all --all
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/334670.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号