标签归档:容器

Kubernets搭建Kubernetes-dashboard

  接上篇文章,在已经部署好Kubernetes的基础上部署kubernetes-dashboard,它是官方提供的用户管理Kubernets集群可视化工具;部署dashboard其实和在kubernets部署其他的应用一样,创建dashboard所需的Replication Controller、Service服务即可;
  注意Kubernets的Overlay Network要正常工作,每个节点都已经启动Flannel,并且docker启动时配置了Flannel提供的子网,或使用其他方式保证Container之间的连通,否则dashboard将无法正常工作;

Namespace

  使用默认的Namespace也是可以得,因为dashboard算是属于系统应用所以这里使用Namespace把dashboard与其他App进行隔离,建议线上正式的Kubernetes环境都要使用Namespace;
  创建kube-namespace.yaml文件,内容如下:

apiVersion: v1  
kind: Namespace  
metadata:  
name: kube-system

Replication Controller

  Replication Controller用于保证pod期望状态与当前状态一致,还可对pod数量弹性伸缩,这里主要是保证dashboard的正常运行;
  创建kube-dashboard-rc.yaml文件:内容如下:

apiVersion: v1
kind: ReplicationController
metadata:
# Keep the name in sync with image version and
# gce/coreos/kube-manifests/addons/dashboard counterparts
name: kubernetes-dashboard-latest
namespace: kube-system
labels:
  k8s-app: kubernetes-dashboard
version: latest
kubernetes.io/cluster-service: "true"
spec:
  replicas: 1
selector:
  k8s-app: kubernetes-dashboard
template:
  metadata:
    labels:
      k8s-app: kubernetes-dashboard
      version: latest
      kubernetes.io/cluster-service: "true"
  spec:
    containers:
    - name: kubernetes-dashboard
      image: 192.168.2.144:5000/kkubernetes-dashboard-amd64
      resources:
        # keep request = limit to keep this container in guaranteed class
        limits:
          cpu: 100m
          memory: 50Mi
        requests:
          cpu: 100m
          memory: 50Mi
      ports:
      - containerPort: 9090
      args:
       -  --apiserver-host=http://192.168.2.143:8080
      livenessProbe:
        httpGet:
          path: /
          port: 9090
        initialDelaySeconds: 30
        timeoutSeconds: 30  

  由于kubernetes-dashboard-amd64如要被墙,这里下了index.alauda.cn/googlecontainer/kubernetes-dashboard-amd64放在本地私有仓库,使用了本地私有长裤镜像库kubernetes-dashboard-amd64;还要注意别忘了配置apiserver-host否则dashboard将无法连接到kubernets集群;

Service

  service用于配置dashboard的label selector;
  创建kube-dashboard-svc.yaml文件,内容如下:

apiVersion: v1
kind: Service
metadata:
  name: kubernetes-dashboard
  namespace: kube-system
  labels:
    k8s-app: kubernetes-dashboard
    kubernetes.io/cluster-service: "true"
spec:
  selector:
    k8s-app: kubernetes-dashboard
  ports:
  - port: 80
    targetPort: 9090  

kubernates中创建dashboard应用

  1、创建namespace

kubectl -s 192.168.2.143:8080 create -f namespace.yaml  

  2、创建replication Controller

kubectl -s 192.168.2.143:8080 create -f kube-dashboard-rc.yaml

  3、创建service

kubectl -s 192.168.2.143:8080 create -f kube-dashboard-svc.yaml  

  查看dashboard启动情况

图片

  Kubernetes dashboard访问地址:http://192.168.2.143:8080/ui,注意这里的地址是master节点的地址;

图片

参考资料:
http://kubernetes.io/docs/user-guide/

Docker是什么

Docker是什么

相信我们很多人都使用多VM(Virtual Machine),也就是虚拟机,简单的来说Docker就是类是于VM的容器,但Docker要轻量得多,VM(Virtual Machine)是重量级的;VM是硬件级别的虚拟化技术,而Docker只是内核级别的虚拟化技术,Docker是开源的容器引擎,就拿Docker官方的两张图来说:

enter image description here

VM(Virtual Machine):第一张是VM的图;VM其实就是一个虚拟的硬件环境,在使用VM的时候我们都需要在VM中装一个完整的OS然后再在OS中部署我们的Application,图片中的Hypervisor就是VM的核心,它用于虚拟硬件环境,然后可以在Hypervisor之上安装多个OS;

Docker:第二张就是Docker在于整个结构中的图,Docker没有模拟整个硬件环境,它只需要在宿主主机中装Docker Engine(Docker引擎),然后就可以在Image(镜像)创建多个Container(容器),各个容器运行环境都是独立的可以简单的说每个Container都是一个独立的OS,每个Container与宿主使用同一个内核,对进程与资源进行了隔离;Docker也不是新技术,Docker只是在LXC(Linux Container)的基础上进行封装发展起来的;

光从这两张图就可以看出VM与Docker的区别了,相比Docker,VM是多么的轻量;单个程序很多时候不能够完全的使用单台计算机的硬件资源,这时候VM就出现它能够在单台计算机上装多个OS运行多个程序,但VM上的OS占用资源过多;而Docker与主机共享内核,可以运行更多的Container,Docker比VM更能榨干计算机的硬件资源

VM(Virtual Machine)

  1. 需要安装OS
  2. 基于硬件的虚拟化
  3. 启动每个OS都需要几十秒
  4. 主机上的OS数量有限制
  5. OS占用的资源过多

Docker

  1. 不需要安装OS
  2. 基于内核的虚拟化技术
  3. 每个Container的启动是毫秒级别
  4. 主机上可以有几百上千个Container

Docker的作用

关于开发

在之前程序的部署是个麻烦的环节,开发者写好程序之后要进行测试就需要在测试机装程序远行的环境,到测试好之后又要在正式机上装完全一样的程序运行环境,当测试机、或正式机上的运行环境与开发的环境有一点不一样程序就会出现问题,而使用了Docker之后就不会出现在测试机配置运行环境、在正式机远行环境这些问题,只需要开发者配置好一个Image,然后在测试机、正式机上下载Image,然后在Container中运行程序即可,省去了来回配置运行环境的问题;

关于程序分发

现在我们每当要使用一个程序或框架的时候都是把软件下下来然后各种折腾程序的远行环境程序才能跑起来,当使用了Docker后就可以把程序放在Image中,使用者只需要把Image下下来即可,不需要去折腾各种环境各种依赖,Docker决解了程序依赖的问题,它把依赖都打包进了Image中

Docker为CI(Continuous integration)、MicroService的使用提供了很好的使用环境,企业内部的私有云也很多使用了Docker;

Docker发展

短短两三年时间,Docker得到了各大云服务厂商的支持现在亚马逊、微软、谷歌等等的云服务都有支持了Docker;Docker不再只支持Linunx,微软对Docker可以说是很看好的,最新的Windows Server将原生的支持Docker;CoreOS 也发布了与Docker类是的容器引擎;

由于Docker才出现没几年所以Docker周边的工具还是健全,管理过多的容器还是很麻烦的,但Docker现在的生态环境很活跃相信这些只是时间问题;