专栏首页后台及大数据开发kubernetes集群搭建(9):docker 镜像的导入与导出

kubernetes集群搭建(9):docker 镜像的导入与导出

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

下面是我搭建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: 9090
  - host: b.com
    http:
      paths:
      - path: /nginx
        backend:
          serviceName: nginx-service
          servicePort: 88
      - 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/

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于 TensorFlow 、OpenCV 和 Docker 的实时视频目标检测

    在本文中,我将介绍如何在 Docker 容器中使用 Tensorflow Object-detection API 来执行实时(网络摄像头)和视频的目标检测。我...

    AI研习社
  • 基于docker+gunicorn部署sanic项目

    最近云服务提供商在打价格战,我在某云上花了很少的钱租了一个月的云服务器: 公网ip是: 116.85.42.182, 以下我以116.85.42.182这个ip...

    Python中文社区
  • 如何在Ubuntu上安装使用Docker

    在本教程中,您将安装Docker,并学会使用容器和镜像,将镜像推送到Docker存储库。

    GeekZ
  • What‘s docker?How to study?

    看图说话:“一只可爱的大鲸鱼上面摆放着许多小箱子,而这些小箱子呢--就是应用程序,鲸鱼就是操作系统”。 大家应该都知道集装箱吧,不过你是什么货物,通过什么运输方...

    benny
  • docker安装mysql 5.7

    [root@docker01 mysql]# docker run -p3306:3306 --name mymysql -v $PWD/conf:/etc/m...

    致码DevOps
  • TencentHub的架构实现

    TencentHub是一个集Docker镜像、二进制文件、helmcharts于一体的仓库存储服务。那么这一架构技术是如何基于Kubernetes 快速实现wo...

    用户1263954
  • Docker系列教程28-实战:使用Docker Compose运行ELK

    https://docs.docker.com/compose/samples-for-compose/#samples-tailored-to-demo-co...

    用户1516716
  • docker搭建静态网站

    上面这种方法繁琐且慢,不推荐大家用怎样的方式安装docker。建议使用官网上的安装步骤:https://docs.docker.com/install/linu...

    benny
  • docker 搭建LAMP开发环境

    小编作为一个小白,在搭建lamp这个集成开发环境上卡了有4/5天,遇到了不少坑,有时候令人绝望,有时候又让人兴奋。作为小白,学得不深,在这里把这段时间踩过的坑以...

    benny
  • 速问速答|想在Windows环境中快速安装PaddlePaddle,还需解决哪些问题?

    PaddlePaddle近期新上线的Windows快速安装包,已经有很多小伙伴跑来体验

    用户1386409

扫码关注云+社区

领取腾讯云代金券