Pod资源管理

  • 了解pod
    • Pod容器分类:
    • 1:infrastructure container 基础容器:维护整个Pod网络空间
    • 2:initcontainers 初始化容器
    • 3:container 业务容器
    • 镜像拉取策略(image PullPolicy)
    • 创建pods资源
  • k8s和Harbor服务过程
    • node节点配置连接私有仓库
    • 在node节点下载tomcat
    • 基于本地镜像创建tomcat
    • 上传镜像到harbor
    • 创建资源从harbor中下载镜像

了解pod

特点:

  • 最小部署单元

  • 一组容器的集合

  • 一个Pod中的容器共享网络命名空间

  • Pod是短暂的

Pod容器分类:

1:infrastructure container 基础容器:维护整个Pod网络空间

node节点操作

查看容器的网络

[root@localhost ~]# cat /opt/kubernetes/cfg/kubelet
--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0"

每次创建Pod时候就会创建,与Pod对应的,对于用户是透明的

[root@localhost ~]# docker ps
registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0   "/pause"

2:initcontainers 初始化容器

  • 先于业务容器开始执行,原先Pod中容器是并行开启,现在进行了改进

3:container 业务容器

  • 并行启动

镜像拉取策略(image PullPolicy)

  • IfNotPresent:默认值,镜像在宿主机上不存在时才拉取

  • Always:每次创建Pod都会重新拉取一次镜像

  • Never:Pod永远不会主动拉取这个镜像

创建pods资源

[root@localhost demo]# vim pod1.yamlapiVersion: v1kind: Podmetadata:name: mypodspec:containers:- name: nginximage: nginximagePullPolicy: Alwayscommand: [ "echo", "SUCCESS" ]

创建pode1

[root@localhost demo]# kubectl create -f pod1.yaml

如果发生CrashLoopBackOff:失败的状态的原因是因为命令启动冲突

我们删除SUCCESS

[root@localhost demo]# kubectl get pods
NAME                              READY   STATUS             RESTARTS   AGE
mypod                             0/1     CrashLoopBackOff   2          49s
//失败的状态的原因是因为命令启动冲突
删除 command: [ "echo", "SUCCESS" ]

同时更改一下版本

[root@localhost ~]# vim pod1.yaml
image: nginx:1.14

删除原有的资源[root@localhost demo]# kubectl delete -f pod1.yaml pod "mypod" deleted------------------------更新资源--------------------------------[root@localhost demo]# kubectl apply -f pod1.yaml [root@localhost demo]# kubectl get podsNAME                READY  STATUS   RESTARTS  AGEmypod               1/1   Running  0      34s--------------------查看分配节点---------------------------
[root@localhost demo]# kubectl get pods -o wide
NAME                              READY   STATUS    RESTARTS   AGE    IP            NODE              NOMINATED NODE
mypod                             1/1     Running   0          118s

在任意node节点使用curl 查看头部信息

node节点操作
[root@localhost ~]# curl -I 172.17.31.6
HTTP/1.1 200 OK
Server: nginx/1.14.2

k8s和Harbor服务过程

重新开启一个node节点

以下服务都是在有docker的前提下部署的!!!
安装docker-compose

[root@localhost ~]# chmod +x docker-compose
1

系统可以识别

 mv docker-compose /usr/local/bin/
1

查看是否安装

[root@localhost ~]# docker-compose -v
docker-compose version 1.21.1, build 5a3f1a3
12

安装harbor

[root@localhost ~]# tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
1

修改配置文件

[root@localhost ~]# cd /usr/local/harbor/
[root@localhost harbor]# vim harbor.cfg 5 hostname = 192.168.136.81
123

开启Harbor

[root@localhost harbor]# sh install.sh
1

输入地址查看

密码Harbor12345默认

node节点配置连接私有仓库

2个node节点都要配置

(注意后面的逗号要添加)

[root@localhost ~]# vim /etc/docker/daemon.json
{"registry-mirrors": ["https://05vz3np5.mirror.aliyuncs.com"],"insecure-registries":["192.168.136.50"]
}

开启服务

[root@localhost ~]# systemctl restart docker

登录harbor私有仓库

[root@localhost ~]# docker login 192.168.136.50Username: admin Password:   //输入密码Harbor12345

查看凭证文件

[root@localhost ~]# ls -a
.docker
[root@localhost ~]# cd .docker/ (查看凭证)
[root@localhost .docker]# cat config.json | base64  -w 0
ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjEzNi41MCI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0sCgkiSHR0cEhlYWRlcnMiOiB7CgkJIlVzZXItQWdlbnQiOiAiRG9ja2VyLUNsaWVudC8xOS4wMy4xMyAobGludXgpIgoJfQp9[root@localhost .docker]#

-w 0 禁用转行

在node节点下载tomcat

下载Tomcat镜像进行推送

[root@localhost ~]# docker pull tomcat
[root@localhost ~]# docker images  查看tomcat

web复制推送镜像

打标签

复制粘贴到node节点

[root@localhost ~]# docker tag tomcat 192.168.136.50/project/tomcat

推送成功

[root@localhost ~]# docker tag tomcat 192.168.136.50/project/tomcat

查看web游览器

基于本地镜像创建tomcat

在matser节点下载tomcat镜像

[root@localhost demo]# vim tomcat-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:name: my-tomcat
spec:replicas: 2template:metadata:labels:app: my-tomcatspec:containers:- name: my-tomcatimage: docker.io/tomcat:8.0.52ports:- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:name: my-tomcat
spec:type: NodePortports:- port: 8080targetPort: 8080nodePort: 31111selector:app: my-tomcat

node节点部署tomcat

[root@localhost ~]# docker pull tomcat:8.0.52

在master上发布服务

[root@localhost demo]# kubectl apply -f tomcat-deployment.yaml

查看端口

nginx-service   NodePort    10.0.0.193   <none>        80:41108/TCP     68m
[root@localhost ~]# kubectl get pods -o wide
NAME                         READY   STATUS    RESTARTS   AGE    IP            NODE             NOMINATED NODE
my-tomcat-7cd4fdbb5b-8b6bx   1/1     Running   0          3m1s   172.17.38.5   192.168.136.40   <none>
my-tomcat-7cd4fdbb5b-ss8nc   1/1     Running   0          3m1s   172.17.27.4   192.168.136.30   <none>

查看tomcat服务端口号


[root@localhost ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP   10.0.0.1     <none>        443/TCP          4d13h
my-tomcat    NodePort    10.0.0.216   <none>        8080:31111/TCP   71m

游览器192.168.136.40:31111

如果遇到处于Terminating状态的无法删除的资源如何处理

[root@localhost demo]# kubectl get podsNAME                READY  STATUS     RESTARTS  AGEmy-tomcat-57667b9d9-nklvj     1/1   Terminating  0      10hmy-tomcat-57667b9d9-wllnp     1/1   Terminating  0      10h//这种情况下可以使用强制删除命令:
kubectl delete pod [pod name] --force --grace-period=0 -n [namespace]

上传镜像到harbor

node01上操作(之前登陆过harbor仓库的节点)

镜像打标签

[root@localhost ~]# docker tag tomcat:8.0.52 192.168.136.50/project/tomcat

删除之前的镜像

上传镜像到harbor

[root@localhost ~]# docker push 192.168.136.50/project/tomcat8

查看登陆凭据

[root@localhost ~]# cat .docker/config.json |base64 -w 0
ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjEzNi41MCI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0sCgkiSHR0cEhlYWRlcnMiOiB7CgkJIlVzZXItQWdlbnQiOiAiRG9ja2VyLUNsaWVudC8xOS4wMy4xMyAobGludXgpIgoJfQp9

master节点创建

[root@localhost demo]# vim registry-pull-secret.yaml
apiVersion: v1
kind: Secret
metadata:name: registry-pull-secret
data:.dockerconfigjson:ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjEzNi41MCI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0sCgkiSHR0cEhlYWRlcnMiOiB7CgkJIlVzZXItQWdlbnQiOiAiRG9ja2VyLUNsaWVudC8xOS4wMy4xMyAobGludXgpIgoJfQp9
type: kubernetes.io/dockerconfigjson

创建secret资源

[root@localhost ~]# kubectl create -f registry-pull-secret.yaml

查看secret资源

[root@localhost ~]# kubectl get secret
NAME                   TYPE                                  DATA   AGE
default-token-w6xph    kubernetes.io/service-account-token   3      4d22h
registry-pull-secret   kubernetes.io/dockerconfigjson        1      40s

创建资源从harbor中下载镜像

[root@localhost ~]# kubectl create -f registry-pull-secret.yaml  删除原有的镜像
[root@localhost demo]# vim tomcat-deployment.yaml
spec:imagePullSecrets:  下面添加- name: registry-pull-secret  containers:image: 192.168.195.80/project/tomcat ports:

创建资源

kubectl create -f tomcat-deployment.yaml

私有仓库中的镜像被下载了2次

Pod资源管理(pod容器分类,k8s添加harbor私库,上传下载私库)相关推荐

  1. CI在mimes.php添加对apk文件上传下载的支持

    CI在mimes.php添加对apk文件上传下载的支持 'apk' => array('application/x-zip', 'application/zip', 'application/x ...

  2. 滤了asa,cer,cdx,php,aspx等脚本类型的上传情况下添加一个ashx的上传类型

    今天日一站 发现后台可以设置上传类型,但是asp,asa,cer等等都不行,上传之后就提示下载 尝试着关闭了下了,还是不行,后来找到了一位前辈写的文章 过滤了asa,cer,cdx,php,aspx等 ...

  3. taro开发微信小程序-添加开发者预览,上传测试版本(十四)

    taro开发微信小程序,上传测试版本,如果需要访问网络需要打开调试模式,如果配置了https协议的服务,提示对应的服务器证书无效,那么必须正确配置ssl证书,可以在阿里云或者腾讯云申请. 添加开发者预 ...

  4. harbor上传下载镜像

    客户端登录: docker login -u admin -p Harbor12345 https://harbor.wmmzz.com 上传本地镜像之前,先给本地镜像打个标签,比如ID号为" ...

  5. k8s的pod资源管理与配置使用凭证的harbor仓库

    文章目录 一: Pod 的基础概念 1.1 pod 是什么 1.2 pod 的两种使用(运行方式) 1.3 工作方式 1.4 pause 容器的功能 1.4.1 提供pid命名空间,作为pid等于1的 ...

  6. SSM框架-添加信息及图片上传到本地MultipartResolver-foreknow_cms

    MultipartResolver 用于处理文件上传,当收到请求时 DispatcherServlet 的 checkMultipart() 方法会调用 MultipartResolver 的 isM ...

  7. php图片传入及改名代码,WordPress添加媒体中文名图片上传改名(优化版)

    WordPress是国外程序,对中文命名的图片不友好,所以上传后就会出现错误.但是我们有时候保存在桌面或者其他地方的图片就是中文命名,现在要上传到WordPress多媒体中,或者上传到文章中,我们改怎 ...

  8. SharePoint上传循环添加label并获取上传文件名字的扩展名和文件大小(Session[demo] = new ListLabel();方法实现)...

    前台 <div><asp:Button ID="Button2" runat="server" OnClick="Button2_C ...

  9. 添加附件按钮,并上传文件

    <button name="check_appendix" string="附件检查" type="object" class=&qu ...

最新文章

  1. 【迁移学习(Transfer L)全面指南】基于迁移学习完成图像分类任务(Pytorch)
  2. 关于Spring的构造函数,init-method,和依赖注入的先后顺序
  3. 你绝对能懂的“机器学习”(二)
  4. Liunx操作系统的引导过程(系统操作引导过程,模拟MBR,GRUB故障,root密码遗忘解决,优化启动过程 ,运行级别的分类)
  5. NEC SV8100电话交换机配置梓博电话计费系统
  6. 前端学习(1896)vue之电商管理系统电商系统之修改用户状态
  7. 获取GIF图片中所有的单图
  8. python asyncio tcp server_asyncio异步IO——Streams详解
  9. Arcgis 重装 的 license 问题
  10. 语音社交app源码,更改ProgressBar颜色(圈圈)
  11. 基于android的电影售票APP,基于Android的在线电影售票系统.doc
  12. 前皮克斯动画大神卡洛斯·巴埃纳独家创作经验分享(V客学院知识分享)
  13. Oracle数据库如何收费
  14. 各种坐标之间的转换方法汇总
  15. 加什么地形就看什么等高线!等高线实时预览就是这么爽
  16. 如何使用Keil5开发MSP430及Tiva系列开发板
  17. Pycharm Professional Edition 激活码(license),有效期至2018年01月30日
  18. Apktool|ShakaApktool 简体中文汉化版|APK反编译工具(更新)
  19. c 语言easyx图形库飞机大战的源码
  20. 数字滤波器matlab仿真_模拟IC笔记(1)——PLL MATLAB建模与行为仿真

热门文章

  1. 【线上分享】云原生时代,华为云音视频质量监控与优化实践
  2. 【线上直播】Xilinx低延时、高质量实时视频服务技术实践
  3. 使用WebRTC开发Android Messenger:第1部分
  4. FFmpeg 4.2“艾达”发布
  5. 三种CDN调度系统实现原理详解
  6. 程序员精进之路:性能调优利器--火焰图
  7. [ffmpeg] 解码API
  8. linux最大文件句柄数量总结
  9. Bootstrap+jquery实现页面跳转【小demo】
  10. 到底什么是RestFul架构?