美文网首页自动化程序员
手把手教你构建 Kubernetes 1.8 + Flannel

手把手教你构建 Kubernetes 1.8 + Flannel

作者: 51reboot | 来源:发表于2018-01-05 15:08 被阅读235次

    关于 Kubernetes 1.8 + Flannel 的分享今天就完成了,需要完整资料和代码(包括所需的包)的看文章底部的领取方式。

    六.Docker-registry web 私有仓库构建

    环境说明:
    我们选取 master 192.168.0.221 做私有仓库地址 ( docker-ce 的安装这里不再描述)
    使用到的镜像:

    docker-registry-web.tar.gz      #镜像仓库web展示
    registry-v2.6.2.tar.gz           #镜像仓库容器
    docker-registry-web-conf.tar.gz  #创建镜像仓库yaml配置文件
    

    1.查看 docker 版本,配置 hosts 文件

    [root@node1 ~]# vi /etc/hosts
    192.168.0.221 registry-srv
    192.168.0.221 registry-web
    

    2.导入镜像

    [root@node1 ~]# docker load -i  docker-registry-web.tar.gz
    [root@node1 ~]# docker load -i  registry-v2.6.2.tar.gz
    

    3.创建容器

    [root@node1 ~]# tar -zxvf docker-registry-web-conf.tar.gz
    

    1)启动 registry:

    # docker run -v /root/docker-registry-web/conf/registry-srv.yml:/etc/docker/registry/config.yml:ro -v /root/docker-registry-web/conf/auth.cert:/etc/docker/registry/auth.cert:ro -v /data:/var/lib/registry/ -p 5000:5000 --restart=always --name registry-srv -d registry:2.6.2
    

    2)启动 registry-web

    # docker run -d -v /root/docker-registry-web/conf/registry-web.yml:/conf/config.yml:ro -v /root/docker-registry-web/conf/auth.key:/conf/auth.key -v /root/docker-registry-web/db:/data -it -p 8081:8080 --link registry-srv --restart=always --name registry-web hyper/docker-registry-web
    

    4.WEB 访问修改 admin 用户权限
    http://192.168.0.221:8081/login/auth 账号 admin 密码 admin

    点击, “admin” 用户名,添加上删除和写的权限
    5.配置本机使用私有仓库

    [root@node1 ~]# echo   '{ "insecure-registries":["registry-srv:5000"] }' >/etc/docker/daemon.json 
    [root@node1 ~]# systemctl  restart docker        #重启docker
    [root@node1 ~]# docker start  $(docker ps -a -q)   #启动容器
    

    **6.上传镜像到 docker registry **

    [root@node1 ~]# docker login registry-srv:5000 -u'admin' -p'admin'    #登录私有仓库[root@node1 ~]# docker tag 177391bcf802  registry-srv:5000/registry:2.6.2
    [root@node1 ~]# docker push  registry-srv:5000/registry:2.6.2
    

    7. kubernetes 配置 secret 拉取私仓镜像

    #创建证书
    [root@node1 ~]#  kubectl create secret docker-registry regsecret --docker-server=registry-srv:5000 --docker-username=admin --docker-password=admin --docker-email=admin@example.com
    
    [root@node1 ~]# cat k8s/yaml/busybox.yaml 
    apiVersion: v1
    kind: Pod
    metadata:
      name: busybox
      namespace: default
    spec:
      containers:
      - image: registry-srv:5000/busybox:latest
        command:
          - ping  
          - "114.114.114.114"
        imagePullPolicy: IfNotPresent
        name: busybox
      restartPolicy: Always  imagePullSecrets:
      - name: regsecret(红色字体即是,配置镜像拉取,使用该证书)
    
    [root@node1 ~]# kubectl create -f  k8s/yaml/busybox.yaml      #创建容器
    

    七.Kubernetes Nginx Ingress 安装与使用

    用过 kubernetes 的人都知道,kubernetes 的 service 的网络类型有三种:

    • cluertip
    • nodeport
    • loadbanlance
      如果一个 service 想向外部暴露服务,有 nodeport 和 loadbanlance 类型。但是 nodeport 类型,你需要知道 service 对应的 pod 所在的 node 的 ip。而 loadbanlance 通常需要第三方云服务商提供支持。如果没有第三方服务商服务的就没办法做了。
      除此之外还有很多其他的替代方式,以下我主要讲解的是通过 ingress 的方式来实现 service的对外服务的暴露。
      镜像地址: (本文的会附带所需容器镜像)
      registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:0.8.3(ingress controller 的镜像)
      registry.cn-hangzhou.aliyuncs.com/google_containers/defaultbackend:1.0 (默认路由的servcie的镜像)
      1.默认实例创建:
    [root@node1 ingress]# kubectl  create -f default-http-backend.yaml 
    [root@node1 ingress]#  kubectl expose rc default-http-backend --port=80 --target-port=8080  --namespace=kube-system                #重要:为默认实例创建svc
    

    2.ingress-controller 创建

    [root@node1 ingress]#  vi    ingress-controller.yaml
    value: http://192.168.0.221:8080              #这里是master API地址
                                             #镜像地址建议创建本地容器仓库
    [root@node1 ingress]# kubectl  create -f ingress-controller.yaml
    

    3.本实验通过 nginx 容器,这里通过 ingress 做入口访问 svc

    [root@node1 ingress]# kubectl create -f  ../k8s/nginx-deployment.yaml   #创建nginx容器
    apiVersion: apps/v1beta2
    kind: Deployment
    metadata:
      name: nginx-deployment 
    spec:
      replicas: 3 
      selector:
        matchLabels: 
          app: nginx
      template:
        metadata:
          labels: 
            app: nginx
        spec:
         containers:
         - name: nginx
           image: 192.168.0.221:5000/nginx:v1
           ports:
           - containerPort: 80
    
    [root@node1 ingress]# kubectl create -f  ../k8s/nginx-service.yaml 
    apiVersion: v1
    kind: Service 
    metadata:
      name: nginx-service 
      labels:
        app: nginx 
    spec:
      ports:
      - port: 88
        targetPort: 80
      selector: 
        app: nginx
    
    [root@node1 ingress]# kubectl create -f  ingress-nginx.yaml 
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: nginxservice
    spec:
      rules:
      - host: test.info
        http:
          paths:
          - path: /
            backend:
              serviceName: nginx-service
              servicePort: 80
    

    本机写 host 文件进行访问,外部写 host 文件,指向 node ip 即可


    已全部分享完毕。
    扫码加小助手微信,备注“领取资料”来自简书即可获得完整资料

    相关文章

      网友评论

        本文标题:手把手教你构建 Kubernetes 1.8 + Flannel

        本文链接:https://www.haomeiwen.com/subject/lycsnxtx.html