Pod资源管理(pod容器分类,k8s添加harbor私库,上传下载私库)
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私库,上传下载私库)相关推荐
- CI在mimes.php添加对apk文件上传下载的支持
CI在mimes.php添加对apk文件上传下载的支持 'apk' => array('application/x-zip', 'application/zip', 'application/x ...
- 滤了asa,cer,cdx,php,aspx等脚本类型的上传情况下添加一个ashx的上传类型
今天日一站 发现后台可以设置上传类型,但是asp,asa,cer等等都不行,上传之后就提示下载 尝试着关闭了下了,还是不行,后来找到了一位前辈写的文章 过滤了asa,cer,cdx,php,aspx等 ...
- taro开发微信小程序-添加开发者预览,上传测试版本(十四)
taro开发微信小程序,上传测试版本,如果需要访问网络需要打开调试模式,如果配置了https协议的服务,提示对应的服务器证书无效,那么必须正确配置ssl证书,可以在阿里云或者腾讯云申请. 添加开发者预 ...
- harbor上传下载镜像
客户端登录: docker login -u admin -p Harbor12345 https://harbor.wmmzz.com 上传本地镜像之前,先给本地镜像打个标签,比如ID号为" ...
- k8s的pod资源管理与配置使用凭证的harbor仓库
文章目录 一: Pod 的基础概念 1.1 pod 是什么 1.2 pod 的两种使用(运行方式) 1.3 工作方式 1.4 pause 容器的功能 1.4.1 提供pid命名空间,作为pid等于1的 ...
- SSM框架-添加信息及图片上传到本地MultipartResolver-foreknow_cms
MultipartResolver 用于处理文件上传,当收到请求时 DispatcherServlet 的 checkMultipart() 方法会调用 MultipartResolver 的 isM ...
- php图片传入及改名代码,WordPress添加媒体中文名图片上传改名(优化版)
WordPress是国外程序,对中文命名的图片不友好,所以上传后就会出现错误.但是我们有时候保存在桌面或者其他地方的图片就是中文命名,现在要上传到WordPress多媒体中,或者上传到文章中,我们改怎 ...
- SharePoint上传循环添加label并获取上传文件名字的扩展名和文件大小(Session[demo] = new ListLabel();方法实现)...
前台 <div><asp:Button ID="Button2" runat="server" OnClick="Button2_C ...
- 添加附件按钮,并上传文件
<button name="check_appendix" string="附件检查" type="object" class=&qu ...
最新文章
- 【迁移学习(Transfer L)全面指南】基于迁移学习完成图像分类任务(Pytorch)
- 关于Spring的构造函数,init-method,和依赖注入的先后顺序
- 你绝对能懂的“机器学习”(二)
- Liunx操作系统的引导过程(系统操作引导过程,模拟MBR,GRUB故障,root密码遗忘解决,优化启动过程 ,运行级别的分类)
- NEC SV8100电话交换机配置梓博电话计费系统
- 前端学习(1896)vue之电商管理系统电商系统之修改用户状态
- 获取GIF图片中所有的单图
- python asyncio tcp server_asyncio异步IO——Streams详解
- Arcgis 重装 的 license 问题
- 语音社交app源码,更改ProgressBar颜色(圈圈)
- 基于android的电影售票APP,基于Android的在线电影售票系统.doc
- 前皮克斯动画大神卡洛斯·巴埃纳独家创作经验分享(V客学院知识分享)
- Oracle数据库如何收费
- 各种坐标之间的转换方法汇总
- 加什么地形就看什么等高线!等高线实时预览就是这么爽
- 如何使用Keil5开发MSP430及Tiva系列开发板
- Pycharm Professional Edition 激活码(license),有效期至2018年01月30日
- Apktool|ShakaApktool 简体中文汉化版|APK反编译工具(更新)
- c 语言easyx图形库飞机大战的源码
- 数字滤波器matlab仿真_模拟IC笔记(1)——PLL MATLAB建模与行为仿真