• Centos7 k8s部署dahsboard


    一、k8s部署dahsboard

      1、pull镜像到本地,并上传至私有仓库

    [root@k8s-master ~]# docker pull docker.io/siriuszg/kubernetes-dashboard-amd64:v1.5.1
    [root@k8s-master ~]# docker tag docker.io/siriuszg/kubernetes-dashboard-amd64:v1.5.1 192.168.125.130:5000/kubernetes-dashboard:v1.5.1
    [root@k8s-master ~]# docker push 192.168.125.130:5000/kubernetes-dashboard:v1.5.1

      2、修改配置文件,并创建dashboard

    [root@k8s-master ~]# vim kubernetes-dashboard.yaml
    kind: Deployment
    apiVersion: extensions/v1beta1
    metadata:
      labels:
        app: kubernetes-dashboard
      name: kubernetes-dashboard
      namespace: kube-system
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: kubernetes-dashboard
      template:
        metadata:
          labels:
            app: kubernetes-dashboard
          # Comment the following annotation if Dashboard must not be deployed on master
          annotations:
            scheduler.alpha.kubernetes.io/tolerations: |
              [
                {
                  "key": "dedicated",
                  "operator": "Equal",
                  "value": "master",
                  "effect": "NoSchedule"
                }
              ]
        spec:
          containers:
          - name: kubernetes-dashboard
            image: 192.168.125.130:5000/kubernetes-dashboard:v1.5.1                                            修改地址为私有仓库得地址
            imagePullPolicy: Always
            ports:
            - containerPort: 9090
              protocol: TCP
            args:
              # Uncomment the following line to manually specify Kubernetes API server Host 
              # If not specified, Dashboard will attempt to auto discover the API server and connect 
              # to it. Uncomment only if the default does not work. 
              - --apiserver-host=http://192.168.125.130:8080                                                   修改为api,主节点的IP地址
            livenessProbe:
              httpGet:
                path: /
                port: 9090
              initialDelaySeconds: 30
              timeoutSeconds: 30
    ---
    kind: Service
    apiVersion: v1
    metadata:
      labels:
        app: kubernetes-dashboard
      name: kubernetes-dashboard
      namespace: kube-system
    spec:
      type: NodePort
      ports:
      - port: 80
        targetPort: 9090
      selector:
        app: kubernetes-dashboard
    [root@k8s-master ~]# kubectl create -f kubernetes-dashboard.yaml

      3、node节点安装服务

    [root@k8s-node1 ~]#yum install *rhsm* -y
    [root@k8s-node1 ~]# systemctl restart kubelet.service
    [root@k8s-node1 ~]# systemctl restart kube-proxy.service

      4、查看容器

    [root@k8s-master ~]# kubectl get deployment --namespace=kube-system                    这个是系统功能,需要加上命名空间才能看到
    NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
    kubernetes-dashboard 1 1 1 1 19m
    [root@k8s
    -master opt]# kubectl get pods --namespace=kube-system NAME READY STATUS RESTARTS AGE kubernetes-dashboard-2518785241-gj838 1/1 Running 0 20m
    [root@k8s-master opt]# kubectl get pods --all-namespaces 查看所有容器

      5、启动成功之后,访问web页面(输入http://192.168.125.130:8080 )

       6、看到如下界面,再输入(http://192.168.125.130:8080 /ui/,即可跳转页面),如果未能跳转页面,则需执行如下步骤

        错误现象:

        当我们创建完k8s dashboard,试图访问web ui界面的时候如:

        dashboard访问地址;http://192.168.125.130:8080/ui

        抛出如下错误:

    Error: 'dial tcp 192.168.125.130:9090: getsockopt: connection timed out'
    Trying to reach: 'http://192.168.125.130:9090/'

        原因分析:

          为什么访问的是8080端口被重定向到了不同的ip和不同的端口呢?

        这是因为:

          我们首先是通过在 master节点ip:8080/ui  (apiserver restful api外部交互总入口)端口去访问dashboard,然后具体的dashboard pod却是在minion/node节点上通过kubelet创建部署的,所以不同的ip和端口就是你实际在Minion/Node节点所创建的ip地址和

        端口即其访问端点endpoint。9090应该是你创建dashboard的yaml中自己配置pod的访问端口。

        可以通过在master节点使用命令,查看dashboard pod的ip地址。

    kubectl describe pod kubernetes-dashboard-2518785241-gj838 --namespace kube-system
    Name: kubernetes-dashboard-2518785241-gj838
    Namespace:    kube-system
    Node:    k8s-node2/192.168.125.132
    Start Time:    Sat, 20 Jun 2020 10:41:03 +0800
    Labels:    app=kubernetes-dashboard
    pod-template-hash=2518785241
    Status:    Running
    IP:    172.16.100.2
    Controllers:    ReplicaSet/kubernetes-dashboard-2518785241

        因此,问题就明确了,是因为从Master节点无法访问Node节点pod ip+端口而导致的错误。

          解决方法:

          关闭iptables防火墙 (如果是防火墙原因导致的master节点无法ping通node之上的Pod节点)

    systemctl stop iptables
    systemctl disable iptables     

          即使关闭了防火墙跨主机间容器、pod始终无法ping通

          这是由于linux还有底层的iptables,所以在node上分别执行:

    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -F
    iptables -L -n

          如果从主节点ping Node节点Pod ip地址可以ping通,则查看web ui应该没有问题了。

       7、再次访问:http://192.168.125.130:8080/ui,即可自动跳转,得到如下界面

       即安装部署成功!!!

    二、功能介绍 

      1、web页面创建pods,选中新副本控制器,点击右上角的创建。

       2、填好信息,点击创建容器

       3、可以看到已经创建成功了。

      4、命名空间,点击Namespace,选择命名空间

       12、Workloads介绍

        deamon set:一个node节点只能启动一个,适合跑监控pod,日志收集pod

        pet sets(1.4后改为stathfull):宠物应用,有状态的,有数据的应用

        deployment:畜生应用,随便杀死,没有数据,无状态应用

          Job:一次性的任务,合适周期性的执行备份任务。

                    cronjob:定时任务,k8s里面的

         5、其他介绍

     三、容器访问方式

      1、拓扑图

     

         定义了targetPOrt参数

        敲回车,可以访问,后面的都是参数。

      2、自定义一个

    [root@k8s-master opt]# kubectl get deployment
    [root@k8s-master opt]# kubectl delete deployment nginx-web
    [root@k8s-master opt]# kubectl edit deployment nginx-deployment

       3、创建svc

    [root@k8s-master opt]# vim nginx-svcv2.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: web
    spec:
      selector:
        app: web                                       刚才得标签名字
      ports:
        - port: 80
          targetPort: 80

      4、创建svc

    kubectl create -f nginx-svcv2.yaml

      5、查看详情,看到已经关联了几个pods

       6、访问地址

    http://192.168.125.130:8080/api/v1/proxy/namespaces/default/services/web/             
    命名空间使用默认,后面svc=web

     访问成功!!!

    用nodePOrt,和api代理,都可以访问,对比配置文件

     k8s pod访问方式另外还有一种,LoadBalancer,访问效率最高,但是现在都用云主机,就慢慢没有怎么用了。

  • 相关阅读:
    使用 Redis 实现排行榜功能
    php sprintf函数
    phpcms v9文章页调用点击量方法
    redis 高级配置
    mysql 子查询优化
    mysql 优化
    Centos 7 安装Anaconda3
    磁盘调度算法
    pycharm设置python文件颜色
    C++禁止使用拷贝构造函数和赋值运算符方法
  • 原文地址:https://www.cnblogs.com/aqicheng/p/13113567.html
Copyright © 2020-2023  润新知