由于K8s搭建时官方提供的镜像不翻墙是访问不了的,所以搭建过程中很多时间都耗费在去找镜像去了

下面是我搭建k8s集群用到的镜像  没有采用之前我用的二进制文件搭建(dns没成功),这里采用的Kubeadm方式 https://www.kubernetes.org.cn/3808.html

我导出的镜像下载地址:https://pan.baidu.com/s/1LIAno-aC1cuJLDxFadTrTQ

docker 镜像导出

  1. docker save $(docker images | grep -v REPOSITORY | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') -o k8s-images.tar

docker 镜像导入

  1. docker load -i k8s-images.tar

ingree的创建可以参考官方说明(但部分文件已不存在,请通过网盘下载):https://kubernetes.github.io/ingress-nginx/deploy/

另外将创建ingress  和 svc 这几个容易出错的地方的yaml配置也贴一个  同样可以通过 上面的网盘地址下载

with-rbac.yaml 用于创建ingress-controller

  1. apiVersion: extensions/v1beta1
  2. kind: Deployment
  3. metadata:
  4. name: nginx-ingress-controller
  5. namespace: ingress-nginx
  6. spec:
  7. replicas: 1
  8. selector:
  9. matchLabels:
  10. app: ingress-nginx
  11. template:
  12. metadata:
  13. labels:
  14. app: ingress-nginx
  15. annotations:
  16. prometheus.io/port: '10254'
  17. prometheus.io/scrape: 'true'
  18. spec:
  19. serviceAccountName: nginx-ingress-serviceaccount
  20. hostNetwork: true
  21. containers:
  22. - name: nginx-ingress-controller
  23. image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.14.0
  24. args:
  25. - /nginx-ingress-controller
  26. - --default-backend-service=$(POD_NAMESPACE)/default-http-backend
  27. - --configmap=$(POD_NAMESPACE)/nginx-configuration
  28. - --annotations-prefix=nginx.ingress.kubernetes.io
  29. env:
  30. - name: POD_NAME
  31. valueFrom:
  32. fieldRef:
  33. fieldPath: metadata.name
  34. - name: POD_NAMESPACE
  35. valueFrom:
  36. fieldRef:
  37. fieldPath: metadata.namespace
  38. ports:
  39. - name: http
  40. containerPort: 80
  41. - name: https
  42. containerPort: 443
  43. livenessProbe:
  44. failureThreshold: 3
  45. httpGet:
  46. path: /healthz
  47. port: 10254
  48. scheme: HTTP
  49. initialDelaySeconds: 10
  50. periodSeconds: 10
  51. successThreshold: 1
  52. timeoutSeconds: 1
  53. readinessProbe:
  54. failureThreshold: 3
  55. httpGet:
  56. path: /healthz
  57. port: 10254
  58. scheme: HTTP
  59. periodSeconds: 10
  60. successThreshold: 1
  61. timeoutSeconds: 1
  62. securityContext:
  63. runAsNonRoot: false

default-backend.yaml  用于创建ingress默认路由

  1. apiVersion: extensions/v1beta1
  2. kind: Deployment
  3. metadata:
  4. name: default-http-backend
  5. labels:
  6. app: default-http-backend
  7. namespace: ingress-nginx
  8. spec:
  9. replicas: 1
  10. selector:
  11. matchLabels:
  12. app: default-http-backend
  13. template:
  14. metadata:
  15. labels:
  16. app: default-http-backend
  17. spec:
  18. terminationGracePeriodSeconds: 60
  19. containers:
  20. - name: default-http-backend
  21. # Any image is permissible as long as:
  22. # 1. It serves a 404 page at /
  23. # 2. It serves 200 on a /healthz endpoint
  24. image: lanny/gcr.io_google_containers_defaultbackend_1.4:v1.4
  25. livenessProbe:
  26. httpGet:
  27. path: /healthz
  28. port: 8080
  29. scheme: HTTP
  30. initialDelaySeconds: 30
  31. timeoutSeconds: 5
  32. ports:
  33. - containerPort: 8080
  34. resources:
  35. limits:
  36. cpu: 10m
  37. memory: 20Mi
  38. requests:
  39. cpu: 10m
  40. memory: 20Mi
  41. ---
  42.  
  43. apiVersion: v1
  44. kind: Service
  45. metadata:
  46. name: default-http-backend
  47. namespace: ingress-nginx
  48. labels:
  49. app: default-http-backend
  50. spec:
  51. ports:
  52. - port: 80
  53. targetPort: 8080
  54. selector:
  55. app: default-http-backend

tomcat-svc.yaml 用于创建一个Tomcat镜像的service

  1. apiVersion: extensions/v1beta1
  2. kind: Deployment
  3. metadata:
  4. name: tomcat-test
  5. spec:
  6. replicas: 3
  7. selector:
  8. matchLabels:
  9. app: tomcat
  10. template:
  11. metadata:
  12. labels:
  13. app: tomcat
  14. spec:
  15. containers:
  16. - name: tomcat
  17. image: tomcat
  18. ports:
  19. - containerPort: 8080
  20. ---
  21. apiVersion: v1
  22. kind: Service
  23. metadata:
  24. name: tomcat-service
  25. labels:
  26. app: tomcat
  27. spec:
  28. ports:
  29. - port: 9090
  30. targetPort: 8080
  31. selector:
  32. app: tomcat

tomcat-ingress.yaml 将上面创建好的service配置到ingress上去

  1. apiVersion: extensions/v1beta1
  2. kind: Ingress
  3. metadata:
  4. name: tomcat-ingress
  5. spec:
  6. rules:
  7. - host: a.com
  8. http:
  9. paths:
  10. - path: /tomcat
  11. backend:
  12. serviceName: tomcat-service
  13. servicePort:
  14. - host: b.com
  15. http:
  16. paths:
  17. - path: /nginx
  18. backend:
  19. serviceName: nginx-service
  20. servicePort:
  21. - path: /tomcat
  22. backend:
  23. serviceName: tomcat-service
  24. servicePort: 9090

最后一步配置ingress路由需要注意的地方

a.com  b.com为ingress controller pod所在的节点地址

  1. [root@k8s-node01 ~]# kubectl get pods --all-namespaces -o wide |grep ingress-controller
  2. ingress-nginx nginx-ingress-controller-cb576c748-j2g2m 1/1 Running 0 33d 192.168.42.19 k8s-node04
  3. [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 镜像的导入与导出的更多相关文章

  1. kubernetes集群搭建(2):docker私有仓库

    kubernetes集群搭建(1):环境准备 中各节点已经安装好了docker,请确认docker已启动并正常运行 1.通过命令启动私库 docker run -d -p 5000:5000 --pr ...

  2. Kubernetes集群搭建之企业级环境中基于Harbor搭建自己的私有仓库

    搭建背景 企业环境中使用Docker环境,一般出于安全考虑,业务使用的镜像一般不会从第三方公共仓库下载.那么就要引出今天的主题 企业级环境中基于Harbor搭建自己的安全认证仓库 介绍 名称:Harb ...

  3. Centos 7 kubernetes集群搭建

    一.环境准备 Kubernetes支持在物理服务器或虚拟机中运行,本次使用虚拟机准备测试环境,硬件配置信息如表所示: IP地址 节点角色 CPU Memory Hostname 磁盘 192.168. ...

  4. Kubernetes集群搭建(详细)

    kubernetes集群搭建(kubeadm方式) kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具.这个工具能通过两条指令完成一个kubernetes集群的部署: # 创 ...

  5. docker镜像的导入和导出

    启动命令 docker run -d -p 3000:80 twang2218/gitlab-ce-zh:9.0.3 docker run -d -p 8080:80 gitlab/gitlab-ce ...

  6. Docker 与 K8S学习笔记(二十三)—— Kubernetes集群搭建

    小伙伴们,好久不见,这几个月实在太忙,所以一直没有更新,今天刚好有空,咱们继续k8s的学习,由于我们后面需要深入学习Pod的调度,所以我们原先使用MiniKube搭建的实验环境就不能满足我们的需求了, ...

  7. Kubernetes集群搭建之系统初始化配置篇

    Kubernetes的几种部署方式 1. minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用.不能用于生产环境 ...

  8. Kubernetes集群搭建 ver1.20.5

    目录 部署方式 1. 基础环境准备 1.1 基础初始化 1.2 安装docker 2. 部署harbor及haproxy高可用反向代理 2.1 镜像加速配置 2.2 高可用master可配置 3. 初 ...

  9. [云原生]Kubernetes - 集群搭建(第2章)

    目录 一.前置知识点 二.kubeadm部署方式介绍 三.安装要求 四.最终目标 五.准备环境 六.环境初始化 6.1 设置系统主机名以及Hosts文件的相互解析 6.2 安装依赖文件(所有节点) 6 ...

随机推荐

  1. unable to auto-detect email address

    git错误:unable to auto-detect email address 2017年11月14日 08:51:08 陈君豪 阅读数:7914   idea 用git更新的时候报错,详细错误信 ...

  2. python学习笔记之读取配置文件【转自https://my.oschina.net/u/3041656/blog/793467】

    [转自https://my.oschina.net/u/3041656/blog/793467] 最近在接触利用python来写测试框架,本人也是个刚接触python,所以是个小菜鸟,今天开始,一点点 ...

  3. FlannBasedMatcher 立体匹配

    #include "opencv2/core/core.hpp" #include "opencv2/features2d/features2d.hpp" #i ...

  4. ES6 let const 声明变量 块级作用域

    ES6 中除了使用 var 定义变量,还有let.const,定义变量. function getValue(condition){ console.log(typeof value2); // un ...

  5. C++重写(覆盖)、重载、重定义、

    总结: 重写(覆盖)override 是指派生类函数重写(覆盖)基类函数 不同的范围,分别位于基类和派生类中 函数的名字相同 参数相同 基类函数必须有virtual关键字 重载overload 成员函 ...

  6. Agile PLM 表结构说明

    1.    Activity:项目表class表示大类(关口和活动),subclass表示小类(关口,任务,计划,阶段)subclass=18027:计划(项目),subclass=18028:阶段, ...

  7. go语言 http学习

    net/http库学习 概念 处理器 处理器:拥有ServeHTTP方法的接口(任何类型) 签名:ServeHTTP(http.ResponseWriter, *http.Request) Respo ...

  8. Vue 的生命周期图

  9. APIView流程——请求方式分发

  10. java项目中VO和DTO以及Entity,各自是在什么情况下应用

    1.entity里的每一个字段,与数据库相对应, 2.dto里的每一个字段,是和你前台页面相对应, 3.VO,这是用来转换从entity到dto,或者从dto到entity的中间的东西.   举个例子 ...