kubernetes集群搭建(9):docker 镜像的导入与导出
由于K8s搭建时官方提供的镜像不翻墙是访问不了的,所以搭建过程中很多时间都耗费在去找镜像去了
下面是我搭建k8s集群用到的镜像 没有采用之前我用的二进制文件搭建(dns没成功),这里采用的Kubeadm方式 https://www.kubernetes.org.cn/3808.html
我导出的镜像下载地址:https://pan.baidu.com/s/1LIAno-aC1cuJLDxFadTrTQ
docker 镜像导出
- docker save $(docker images | grep -v REPOSITORY | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') -o k8s-images.tar
docker 镜像导入
- docker load -i k8s-images.tar
ingree的创建可以参考官方说明(但部分文件已不存在,请通过网盘下载):https://kubernetes.github.io/ingress-nginx/deploy/
另外将创建ingress 和 svc 这几个容易出错的地方的yaml配置也贴一个 同样可以通过 上面的网盘地址下载
with-rbac.yaml 用于创建ingress-controller
- apiVersion: extensions/v1beta1
- kind: Deployment
- metadata:
- name: nginx-ingress-controller
- namespace: ingress-nginx
- spec:
- replicas: 1
- selector:
- matchLabels:
- app: ingress-nginx
- template:
- metadata:
- labels:
- app: ingress-nginx
- annotations:
- prometheus.io/port: '10254'
- prometheus.io/scrape: 'true'
- spec:
- serviceAccountName: nginx-ingress-serviceaccount
- hostNetwork: true
- containers:
- - name: nginx-ingress-controller
- image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.14.0
- args:
- - /nginx-ingress-controller
- - --default-backend-service=$(POD_NAMESPACE)/default-http-backend
- - --configmap=$(POD_NAMESPACE)/nginx-configuration
- - --annotations-prefix=nginx.ingress.kubernetes.io
- env:
- - name: POD_NAME
- valueFrom:
- fieldRef:
- fieldPath: metadata.name
- - name: POD_NAMESPACE
- valueFrom:
- fieldRef:
- fieldPath: metadata.namespace
- ports:
- - name: http
- containerPort: 80
- - name: https
- containerPort: 443
- livenessProbe:
- failureThreshold: 3
- httpGet:
- path: /healthz
- port: 10254
- scheme: HTTP
- initialDelaySeconds: 10
- periodSeconds: 10
- successThreshold: 1
- timeoutSeconds: 1
- readinessProbe:
- failureThreshold: 3
- httpGet:
- path: /healthz
- port: 10254
- scheme: HTTP
- periodSeconds: 10
- successThreshold: 1
- timeoutSeconds: 1
- securityContext:
- runAsNonRoot: false
default-backend.yaml 用于创建ingress默认路由
- apiVersion: extensions/v1beta1
- kind: Deployment
- metadata:
- name: default-http-backend
- labels:
- app: default-http-backend
- namespace: ingress-nginx
- spec:
- replicas: 1
- selector:
- matchLabels:
- app: default-http-backend
- template:
- metadata:
- labels:
- app: default-http-backend
- spec:
- terminationGracePeriodSeconds: 60
- containers:
- - name: default-http-backend
- # Any image is permissible as long as:
- # 1. It serves a 404 page at /
- # 2. It serves 200 on a /healthz endpoint
- image: lanny/gcr.io_google_containers_defaultbackend_1.4:v1.4
- livenessProbe:
- httpGet:
- path: /healthz
- port: 8080
- scheme: HTTP
- initialDelaySeconds: 30
- timeoutSeconds: 5
- ports:
- - containerPort: 8080
- resources:
- limits:
- cpu: 10m
- memory: 20Mi
- requests:
- cpu: 10m
- memory: 20Mi
- ---
- apiVersion: v1
- kind: Service
- metadata:
- name: default-http-backend
- namespace: ingress-nginx
- labels:
- app: default-http-backend
- spec:
- ports:
- - port: 80
- targetPort: 8080
- selector:
- app: default-http-backend
tomcat-svc.yaml 用于创建一个Tomcat镜像的service
- apiVersion: extensions/v1beta1
- kind: Deployment
- metadata:
- name: tomcat-test
- spec:
- replicas: 3
- selector:
- matchLabels:
- app: tomcat
- template:
- metadata:
- labels:
- app: tomcat
- spec:
- containers:
- - name: tomcat
- image: tomcat
- ports:
- - containerPort: 8080
- ---
- apiVersion: v1
- kind: Service
- metadata:
- name: tomcat-service
- labels:
- app: tomcat
- spec:
- ports:
- - port: 9090
- targetPort: 8080
- selector:
- app: tomcat
tomcat-ingress.yaml 将上面创建好的service配置到ingress上去
- apiVersion: extensions/v1beta1
- kind: Ingress
- metadata:
- name: tomcat-ingress
- spec:
- rules:
- - host: a.com
- http:
- paths:
- - path: /tomcat
- backend:
- serviceName: tomcat-service
- servicePort:
- - host: b.com
- http:
- paths:
- - path: /nginx
- backend:
- serviceName: nginx-service
- servicePort:
- - path: /tomcat
- backend:
- serviceName: tomcat-service
- servicePort: 9090
最后一步配置ingress路由需要注意的地方
a.com b.com为ingress controller pod所在的节点地址
- [root@k8s-node01 ~]# kubectl get pods --all-namespaces -o wide |grep ingress-controller
- ingress-nginx nginx-ingress-controller-cb576c748-j2g2m 1/1 Running 0 33d 192.168.42.19 k8s-node04
- [root@k8s-node01 ~]#
我本地ingress controller部署在node04上,所以需要将 a.com b。com都要解析到node04
官方ingress有个很大很深的坑,我在这里被坑了两天 https://mritd.me/2017/03/04/how-to-use-nginx-ingress/
kubernetes集群搭建(9):docker 镜像的导入与导出的更多相关文章
- kubernetes集群搭建(2):docker私有仓库
kubernetes集群搭建(1):环境准备 中各节点已经安装好了docker,请确认docker已启动并正常运行 1.通过命令启动私库 docker run -d -p 5000:5000 --pr ...
- Kubernetes集群搭建之企业级环境中基于Harbor搭建自己的私有仓库
搭建背景 企业环境中使用Docker环境,一般出于安全考虑,业务使用的镜像一般不会从第三方公共仓库下载.那么就要引出今天的主题 企业级环境中基于Harbor搭建自己的安全认证仓库 介绍 名称:Harb ...
- Centos 7 kubernetes集群搭建
一.环境准备 Kubernetes支持在物理服务器或虚拟机中运行,本次使用虚拟机准备测试环境,硬件配置信息如表所示: IP地址 节点角色 CPU Memory Hostname 磁盘 192.168. ...
- Kubernetes集群搭建(详细)
kubernetes集群搭建(kubeadm方式) kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具.这个工具能通过两条指令完成一个kubernetes集群的部署: # 创 ...
- docker镜像的导入和导出
启动命令 docker run -d -p 3000:80 twang2218/gitlab-ce-zh:9.0.3 docker run -d -p 8080:80 gitlab/gitlab-ce ...
- Docker 与 K8S学习笔记(二十三)—— Kubernetes集群搭建
小伙伴们,好久不见,这几个月实在太忙,所以一直没有更新,今天刚好有空,咱们继续k8s的学习,由于我们后面需要深入学习Pod的调度,所以我们原先使用MiniKube搭建的实验环境就不能满足我们的需求了, ...
- Kubernetes集群搭建之系统初始化配置篇
Kubernetes的几种部署方式 1. minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用.不能用于生产环境 ...
- Kubernetes集群搭建 ver1.20.5
目录 部署方式 1. 基础环境准备 1.1 基础初始化 1.2 安装docker 2. 部署harbor及haproxy高可用反向代理 2.1 镜像加速配置 2.2 高可用master可配置 3. 初 ...
- [云原生]Kubernetes - 集群搭建(第2章)
目录 一.前置知识点 二.kubeadm部署方式介绍 三.安装要求 四.最终目标 五.准备环境 六.环境初始化 6.1 设置系统主机名以及Hosts文件的相互解析 6.2 安装依赖文件(所有节点) 6 ...
随机推荐
- unable to auto-detect email address
git错误:unable to auto-detect email address 2017年11月14日 08:51:08 陈君豪 阅读数:7914 idea 用git更新的时候报错,详细错误信 ...
- python学习笔记之读取配置文件【转自https://my.oschina.net/u/3041656/blog/793467】
[转自https://my.oschina.net/u/3041656/blog/793467] 最近在接触利用python来写测试框架,本人也是个刚接触python,所以是个小菜鸟,今天开始,一点点 ...
- FlannBasedMatcher 立体匹配
#include "opencv2/core/core.hpp" #include "opencv2/features2d/features2d.hpp" #i ...
- ES6 let const 声明变量 块级作用域
ES6 中除了使用 var 定义变量,还有let.const,定义变量. function getValue(condition){ console.log(typeof value2); // un ...
- C++重写(覆盖)、重载、重定义、
总结: 重写(覆盖)override 是指派生类函数重写(覆盖)基类函数 不同的范围,分别位于基类和派生类中 函数的名字相同 参数相同 基类函数必须有virtual关键字 重载overload 成员函 ...
- Agile PLM 表结构说明
1. Activity:项目表class表示大类(关口和活动),subclass表示小类(关口,任务,计划,阶段)subclass=18027:计划(项目),subclass=18028:阶段, ...
- go语言 http学习
net/http库学习 概念 处理器 处理器:拥有ServeHTTP方法的接口(任何类型) 签名:ServeHTTP(http.ResponseWriter, *http.Request) Respo ...
- Vue 的生命周期图
- APIView流程——请求方式分发
- java项目中VO和DTO以及Entity,各自是在什么情况下应用
1.entity里的每一个字段,与数据库相对应, 2.dto里的每一个字段,是和你前台页面相对应, 3.VO,这是用来转换从entity到dto,或者从dto到entity的中间的东西. 举个例子 ...