[root@master1 ~]# cat /etc/docker/daemon.json

{ 
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
 }
k8s使用docker无法加载镜像Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request 及初始化失败kubeadm init

文章来源:https://www.cnblogs.com/yaok430/p/13806650.html
在这里插入图片描述

[root@master1 ~]# cat image.pull

#!/bin/bash
#img_list='
#k8s.gcr.io/kube-apiserver:v1.17.17
#k8s.gcr.io/kube-controller-manager:v1.17.17
#k8s.gcr.io/kube-scheduler:v1.17.17
#k8s.gcr.io/kube-proxy:v1.17.17
#k8s.gcr.io/pause:3.1
#k8s.gcr.io/etcd:3.4.3-0
#k8s.gcr.io/coredns:1.6.5
#'

img_list='
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.17.17
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.17.17
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.17.17
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.17.17
registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0
registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.5
'
for img in $img_list
do
    docker pull $img
done
Kubernetes k8s拉取镜像失败最简单最快最完美解决方法 [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-apiserver

在这里插入图片描述

解决方法—使用阿里云镜像

运行kubeadm init时加上阿里云镜像的参数–image-repository=registry.aliyuncs.com/google_containers,如下:(版本改为自己需要的)

kubeadm init --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.18.5
kubesphere应用路由–ingress

ClusterIP的方式只能在集群内部访问
NodePort方式的话,测试环境使用还行,当有几十上百的服务在集群中运行时,NodePort的端口管理是灾难。
LoadBalance方式受限于云平台,且通常在云平台部署ELB还需要额外的费用。
所幸k8s还提供了一种集群维度暴露服务的方式,也就是ingress。ingress可以简单理解为service的service,他通过独立的ingress对象来制定请求转发的规则,把请求路由到一个或多个service中。这样就把服务与请求规则解耦了,可以从业务维度统一考虑业务的暴露,而不用为每个service单独考虑,下面是一个简单的ingress应用图,实现了简单的请求转发;
ingress对象:
指的是k8s中的一个api对象,一般用yaml配置。作用是定义请求如何转发到service的规则,可以理解为配置模板。
ingress-controller:
具体实现反向代理及负载均衡的程序,对ingress定义的规则进行解析,根据配置的规则来实现请求转发。
简单来说,ingress-controller才是负责具体转发的组件,通过各种方式将它暴露在集群入口,外部对集群的请求流量会先到ingress-controller,而ingress对象是用来告诉ingress-controller该如何转发请求,比如哪些域名哪些path要转发到哪些服务等等。
在这里插入图片描述

ingress-controller并不是k8s自带的组件,实际上ingress-controller只是一个统称,用户可以选择不同的ingress-controller实现,目前,由k8s维护的ingress-controller只有google云的GCE与ingress-nginx两个,其他还有很多第三方维护的ingress-controller,具体可以参考官方文档。但是不管哪一种ingress-controller,实现的机制都大同小异,只是在具体配置上有差异。一般来说,ingress-controller的形式都是一个pod,里面跑着daemon程序和反向代理程序。daemon负责不断监控集群的变化,根据ingress对象生成配置并应用新配置到反向代理,比如nginx-ingress就是动态生成nginx配置,动态更新upstream,并在需要的时候reload程序应用新配置。为了方便,后面的例子都以k8s官方维护的nginx-ingress为例。

kubesphere的ingress示例

kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: hnrcd-dev-web
  namespace: hhnrcd-dev
  labels:
    app: hnrcd-dev-web
  annotations:
    kubesphere.io/description: 前端
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    nginx.ingress.kubernetes.io/use-regex: 'true'
spec:
  rules:
    - host: abc.web.dev..com.cn
      http:
        paths:
          - path: /
            backend:
              serviceName: cloud-log-audit-financial-web
              servicePort: 80
          - path: /api/(.*)
            backend:
              serviceName: sys-gateway
              servicePort: 10036
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐