暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Kubernetes Pod 创建

DevOps架构实战 2021-01-08
957

1.Pod-使用

pod资源:至少由两个容器组成,pod基础容器和业务容器组成(最多1+4)

核心原则是:将多个应用分散到多个Pod中

原因:基于资源的合理应用;扩缩容,不同应用应该有不同的扩缩容策略等。

如果容器之间不是必须运行在一起的话,那么就放到不同的Pod里

如果容器之前是相互独立的组件,那么就放到不同的Pod里

如果容器之前扩缩容策略不一样,那么就放到不同的Pod里

结论:单Pod单容器应用,除非特殊原因

2.创建Pod资源

创建Pod可以使用两种方式,一种是通过命令行加各种命令行参数的方式,另一种是表单方式创建(推荐)。以下是一个创建Pod时的大概流程

流程

1:kubectl 向K8s API发送一个REST HTTP请求

2:调度器将其调度到一个工作节点上

3:被调度的工作节点上的kubelet会告知Docker拉取镜像,下载后运行容器。

2.1 k8s yaml的主要组成

apiVersion
: API版本
kind
: 资源类型,比如Pod资源
metadata
: 属性包括名称,名称空间,标签等
spec
: 详细,关于Pod内容的实际规格说明,例如Pod的容器,卷及其他数据。

2.2 使用yaml文件创建Pod资源

1.kubectl
命令进行创建

kubectl create -f k8s_pod.yml

2.Pod的yaml文件

apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: web
spec:
containers:
- name: nginx
image: 10.0.0.107/linux/nginx:v1.18.1
ports:
- containerPort: 80
imagePullSecrets:
- name: secret-name

2.3 Pod的基本管理

1.查看我们所创建的Pod资源,-o wide查看详细
,我们可以查看到Pod的IP,被调度的节点。

kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE
nginx 1/1 Running 0 1m 172.18.33.3 10.0.0.12

2.查看Pod的描述

当我们发现某个Pod迟迟无法创建时,我们就可以用kubectl describe pod [Pod名称]
来查看,定位问题。

3.查看pod的日志

kubectl logs nginx

容器日志在大于10M后会自动轮替,所以我们看到的是轮替后的日志,或者没有轮替的日志,即有可能不是完整的日志, 如果Pod有多个容器时,查看某个容器的日志时需要加参数-c

3.镜像的拉取策略

镜像的三种拉取策略

  • Always:总是从仓库拉取镜像

  • Never:从不拉取镜像

  • IfNotPresent:如果本地有镜像就走本地,没有再去拉取

    默认的pull
    策略为:Always

4.为Pod资源添加harbor私有仓库的secret

1.命令行创建一个secret

kubectl create secret docker-registry harbor-auth \  
--namespace=wordpress \
--docker-server=http://10.0.0.107 \
--docker-username=admin \
--docker-password=mzl123 \
--docker-email=470654150@qq.com

2.将secret
绑定到资源中,创建的资源必须要在同一namespace
中才能关联上。

imagePullSecrets:
- name: <secret-name>

与Pod绑定示例:

apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: web
spec:
containers:
- name: nginx
image: 10.0.0.107/linux/nginx:v1.18.1
ports:
- containerPort: 80
imagePullSecrets:

- name: harbor-auth









文章转载自DevOps架构实战,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论