install k8s from package
diff --git a/kubernetes/_common.sls b/kubernetes/_common.sls
index 5025617..41adc6f 100644
--- a/kubernetes/_common.sls
+++ b/kubernetes/_common.sls
@@ -4,18 +4,6 @@
   pkg.installed:
   - names: {{ common.pkgs }}
 
-kubernetes_binaries:
-  cmd.run:
-  - name: 'wget -r --no-parent --reject "index.html*" http://apt.tcpcloud.eu/kubernetes/bin/{{ common.binaries_version }}/ && chmod +x -R /root/apt.tcpcloud.eu/kubernetes/bin/{{ common.binaries_version }}/*'
-  - pwd: /root
-  - unless: test -d /root/apt.tcpcloud.eu/kubernetes/bin/
-
-etcdctl_binaries:
-  cmd.run:
-  - name: "curl -L  https://github.com/coreos/etcd/releases/download/v2.2.1/etcd-v2.2.1-linux-amd64.tar.gz -o etcd-v2.2.1-linux-amd64.tar.gz;tar -zxvf etcd-v2.2.1-linux-amd64.tar.gz"
-  - pwd: /root
-  - unless: test -f /root/etcd-v2.2.1-linux-amd64.tar.gz
-
 {%- if common.network.get('engine', 'none') == 'flannel' %}
 flannel-tar:
   archive:
diff --git a/kubernetes/files/kube-addons/initd b/kubernetes/files/kube-addons/initd
deleted file mode 100644
index 0ed6f47..0000000
--- a/kubernetes/files/kube-addons/initd
+++ /dev/null
@@ -1,120 +0,0 @@
-#!/bin/bash
-#
-### BEGIN INIT INFO
-# Provides:   kube-addons
-# Required-Start:    $local_fs $network $syslog kube-apiserver
-# Required-Stop:
-# Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
-# Short-Description: Kubernetes Addon Object Manager
-# Description:
-#   Enforces installation of Kubernetes Addon Objects
-### END INIT INFO
-
-
-# PATH should only include /usr/* if it runs after the mountnfs.sh script
-PATH=/sbin:/usr/sbin:/bin:/usr/bin
-DESC="Kubernetes Addon Object Manager"
-NAME=kube-addons
-DAEMON_LOG_FILE=/var/log/${NAME}.log
-PIDFILE=/var/run/${NAME}.pid
-SCRIPTNAME=/etc/init.d/${NAME}
-KUBE_ADDONS_SH=/etc/kubernetes/kube-addons.sh
-
-# Define LSB log_* functions.
-# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
-# and status_of_proc is working.
-. /lib/lsb/init-functions
-
-
-
-
-#
-# Function that starts the daemon/service
-#
-do_start()
-{
-    # use setsid to make sure the new daemon has its own group (I suppose
-    # start-stop-daemon does create a process group, but let's stay on the
-    # safe side).
-    setsid start-stop-daemon --start --verbose --background --no-close --make-pidfile --pidfile "${PIDFILE}" --startas "${KUBE_ADDONS_SH}" </dev/null >> ${DAEMON_LOG_FILE} 2>&1
-}
-
-#
-# Function that stops the daemon/service
-#
-do_stop()
-{
-    # start-stop-daemon is not used because we have to stop all children
-    # limitations:
-    #  - stop does not work if the pid file is missing
-    #  - stop does not work if the daemon process is missing (children will not
-    #    be killed)
-    # This is sufficient - remaining processes will end after a while.
-
-    local pid
-    pid=$(cat "${PIDFILE}" 2> /dev/null)
-    if [[ $? != 0 ]]; then
-        return 1
-    fi
-    local pgrp
-    # find the process group for the service and kill entire group
-    #  o - output format: pgpg - process group
-    pgrp=$(ps --no-headers --pid "${pid}" -o pgrp 2>/dev/null)
-    if [[ $? != 0 ]] || [[ "${pgrp}" == "" ]]; then
-        return 1
-    fi
-    pgrp=$(echo -e ${pgrp})   # strip whitespaces (that's why there are no quotes around pgrp)
-    # negative pid is for killing entire group
-    kill -- -${pgrp} 2> /dev/null
-    if [[ $? != 0 ]]; then
-        return 2
-    fi
-    rm -f "${PIDFILE}"
-    return
-}
-
-case "$1" in
-  start)
-        log_daemon_msg "Starting ${DESC}" "${NAME}"
-        do_start
-        case "$?" in
-                0|1) log_end_msg 0 || exit 0 ;;
-                2) log_end_msg 1 || exit 1 ;;
-        esac
-        ;;
-  stop)
-        log_daemon_msg "Stopping ${DESC}" "${NAME}"
-        do_stop
-        case "$?" in
-                0|1) log_end_msg 0 || exit 0 ;;
-                2) log_end_msg 1 || exit 1 ;;
-        esac
-        ;;
-  status)
-        status_of_proc -p "${PIDFILE}" "${KUBE_ADDONS_SH}" "${NAME}"
-        ;;
-
-  restart|force-reload)
-        log_daemon_msg "Restarting ${DESC}" "${NAME}"
-        do_stop
-        case "$?" in
-          0|1)
-                do_start
-                case "$?" in
-                        0) log_end_msg 0 ;;
-                        1) log_end_msg 1 ;; # Old process is still running
-                        *) log_end_msg 1 ;; # Failed to start
-                esac
-                ;;
-          *)
-                # Failed to stop
-                log_end_msg 1
-                ;;
-        esac
-        ;;
-  *)
-        echo "Usage: ${SCRIPTNAME} {start|stop|status|restart|force-reload}" >&2
-        exit 3
-        ;;
-esac
\ No newline at end of file
diff --git a/kubernetes/files/kube-gen-token.sh b/kubernetes/files/kube-gen-token.sh
deleted file mode 100644
index fa6a5dd..0000000
--- a/kubernetes/files/kube-gen-token.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/bash
-
-# Copyright 2015 The Kubernetes Authors All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-token_dir=${TOKEN_DIR:-/var/srv/kubernetes}
-token_file="${token_dir}/known_tokens.csv"
-
-create_accounts=($@)
-
-touch "${token_file}"
-for account in "${create_accounts[@]}"; do
-  if grep ",${account}," "${token_file}" ; then
-    continue
-  fi
-  token=$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64 | tr -d "=+/" | dd bs=32 count=1 2>/dev/null)
-  echo "${token},${account},${account}" >> "${token_file}"
-  echo "${token}" > "${token_dir}/${account}.token"
-  echo "Added ${account}"
-done
diff --git a/kubernetes/files/kube-proxy/default b/kubernetes/files/kube-proxy/default
deleted file mode 100644
index b7dddc1..0000000
--- a/kubernetes/files/kube-proxy/default
+++ /dev/null
@@ -1,5 +0,0 @@
-{%- from "kubernetes/map.jinja" import pool with context %}
-
-# test_args has to be kept at the end, so they'll overwrite any prior configuration
-DAEMON_ARGS="--logtostderr=true --v=2 --kubeconfig=/var/lib/kube-proxy/kubeconfig --master=https://{{ pool.master.host }}{% if pool.network.engine == 'calico' %} --proxy-mode=iptables{% endif %}"
-#--kubeconfig=/etc/kubernetes/proxy.kubeconfig"
\ No newline at end of file
diff --git a/kubernetes/files/kube-proxy/initd b/kubernetes/files/kube-proxy/initd
deleted file mode 100644
index b530b32..0000000
--- a/kubernetes/files/kube-proxy/initd
+++ /dev/null
@@ -1,130 +0,0 @@
-#!/bin/bash
-#
-### BEGIN INIT INFO
-# Provides:    kube-proxy
-# Required-Start:    $local_fs $network $syslog
-# Required-Stop:
-# Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
-# Short-Description: The Kubernetes network proxy
-# Description:
-#   The Kubernetes network proxy enables network redirection and
-#   loadbalancing for dynamically placed containers.
-### END INIT INFO
-
-
-# PATH should only include /usr/* if it runs after the mountnfs.sh script
-PATH=/sbin:/usr/sbin:/bin:/usr/bin
-DESC="The Kubernetes network proxy"
-NAME=kube-proxy
-DAEMON=/usr/local/bin/kube-proxy
-DAEMON_ARGS=""
-DAEMON_LOG_FILE=/var/log/$NAME.log
-PIDFILE=/var/run/$NAME.pid
-SCRIPTNAME=/etc/init.d/$NAME
-DAEMON_USER=root
-
-# Exit if the package is not installed
-[ -x "$DAEMON" ] || exit 0
-
-# Read configuration variable file if it is present
-[ -r /etc/default/$NAME ] && . /etc/default/$NAME
-
-# Define LSB log_* functions.
-# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
-# and status_of_proc is working.
-. /lib/lsb/init-functions
-
-#
-# Function that starts the daemon/service
-#
-do_start()
-{
-        # Avoid a potential race at boot time when both monit and init.d start
-        # the same service
-        PIDS=$(pidof $DAEMON)
-        for PID in ${PIDS}; do
-            kill -9 $PID
-	done
-
-        # Raise the file descriptor limit - we expect to open a lot of sockets!
-        ulimit -n 65536
-
-        # Return
-        #   0 if daemon has been started
-        #   1 if daemon was already running
-        #   2 if daemon could not be started
-        start-stop-daemon --start --quiet --background --no-close \
-                --make-pidfile --pidfile $PIDFILE \
-                --exec $DAEMON -c $DAEMON_USER --test > /dev/null \
-                || return 1
-        start-stop-daemon --start --quiet --background --no-close \
-                --make-pidfile --pidfile $PIDFILE \
-                --exec $DAEMON -c $DAEMON_USER -- \
-                $DAEMON_ARGS >> $DAEMON_LOG_FILE 2>&1 \
-                || return 2
-}
-
-#
-# Function that stops the daemon/service
-#
-do_stop()
-{
-        # Return
-        #   0 if daemon has been stopped
-        #   1 if daemon was already stopped
-        #   2 if daemon could not be stopped
-        #   other if a failure occurred
-        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
-        RETVAL="$?"
-        [ "$RETVAL" = 2 ] && return 2
-        # Many daemons don't delete their pidfiles when they exit.
-        rm -f $PIDFILE
-        return "$RETVAL"
-}
-
-
-case "$1" in
-  start)
-        log_daemon_msg "Starting $DESC" "$NAME"
-        do_start
-        case "$?" in
-                0|1) log_end_msg 0 || exit 0 ;;
-                2) log_end_msg 1 || exit 1 ;;
-        esac
-        ;;
-  stop)
-        log_daemon_msg "Stopping $DESC" "$NAME"
-        do_stop
-        case "$?" in
-                0|1) log_end_msg 0 ;;
-                2) exit 1 ;;
-        esac
-        ;;
-  status)
-        status_of_proc -p $PIDFILE "$DAEMON" "$NAME" && exit 0 || exit $?
-        ;;
-
-  restart|force-reload)
-        log_daemon_msg "Restarting $DESC" "$NAME"
-        do_stop
-        case "$?" in
-          0|1)
-                do_start
-                case "$?" in
-                        0) log_end_msg 0 ;;
-                        1) log_end_msg 1 ;; # Old process is still running
-                        *) log_end_msg 1 ;; # Failed to start
-                esac
-                ;;
-          *)
-                # Failed to stop
-                log_end_msg 1
-                ;;
-        esac
-        ;;
-  *)
-        echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
-        exit 3
-        ;;
-esac
\ No newline at end of file
diff --git a/kubernetes/files/kube-proxy/kube-proxy.service b/kubernetes/files/kube-proxy/kube-proxy.service
deleted file mode 100644
index ebd5729..0000000
--- a/kubernetes/files/kube-proxy/kube-proxy.service
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=Kubernetes Kube-Proxy Server
-Documentation=https://github.com/GoogleCloudPlatform/kubernetes
-
-[Service]
-EnvironmentFile=/etc/sysconfig/kube-proxy
-ExecStart=/usr/local/bin/kube-proxy "$DAEMON_ARGS"
-Restart=on-failure
-LimitNOFILE=65536
-
-[Install]
-WantedBy=multi-user.target
\ No newline at end of file
diff --git a/kubernetes/files/kubelet/initd b/kubernetes/files/kubelet/initd
deleted file mode 100644
index 74f69a2..0000000
--- a/kubernetes/files/kubelet/initd
+++ /dev/null
@@ -1,126 +0,0 @@
-#!/bin/bash
-#
-### BEGIN INIT INFO
-# Provides:   kubelet 
-# Required-Start:    $local_fs $network $syslog
-# Required-Stop:
-# Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
-# Short-Description: The Kubernetes node container manager
-# Description:
-#   The Kubernetes container manager maintains docker state against a state file.
-### END INIT INFO
-
-
-# PATH should only include /usr/* if it runs after the mountnfs.sh script
-PATH=/sbin:/usr/sbin:/bin:/usr/bin
-DESC="The Kubernetes container manager"
-NAME=kubelet
-DAEMON=/usr/local/bin/kubelet
-DAEMON_ARGS=""
-DAEMON_LOG_FILE=/var/log/$NAME.log
-PIDFILE=/var/run/$NAME.pid
-SCRIPTNAME=/etc/init.d/$NAME
-DAEMON_USER=root
-
-# Exit if the package is not installed
-[ -x "$DAEMON" ] || exit 0
-
-# Read configuration variable file if it is present
-[ -r /etc/default/$NAME ] && . /etc/default/$NAME
-
-# Define LSB log_* functions.
-# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
-# and status_of_proc is working.
-. /lib/lsb/init-functions
-
-#
-# Function that starts the daemon/service
-#
-do_start()
-{
-        # Avoid a potential race at boot time when both monit and init.d start
-        # the same service
-        PIDS=$(pidof $DAEMON)
-        for PID in ${PIDS}; do
-            kill -9 $PID
-	done
-
-        # Return
-        #   0 if daemon has been started
-        #   1 if daemon was already running
-        #   2 if daemon could not be started
-        start-stop-daemon --start --quiet --background --no-close \
-                --make-pidfile --pidfile $PIDFILE \
-                --exec $DAEMON -c $DAEMON_USER --test > /dev/null \
-                || return 1
-        start-stop-daemon --start --quiet --background --no-close \
-                --make-pidfile --pidfile $PIDFILE \
-                --exec $DAEMON -c $DAEMON_USER -- \
-                $DAEMON_ARGS >> $DAEMON_LOG_FILE 2>&1 \
-                || return 2
-}
-
-#
-# Function that stops the daemon/service
-#
-do_stop()
-{
-        # Return
-        #   0 if daemon has been stopped
-        #   1 if daemon was already stopped
-        #   2 if daemon could not be stopped
-        #   other if a failure occurred
-        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
-        RETVAL="$?"
-        [ "$RETVAL" = 2 ] && return 2
-        # Many daemons don't delete their pidfiles when they exit.
-        rm -f $PIDFILE
-        return "$RETVAL"
-}
-
-
-case "$1" in
-  start)
-        log_daemon_msg "Starting $DESC" "$NAME"
-        do_start
-        case "$?" in
-                0|1) log_end_msg 0 || exit 0 ;;
-                2) log_end_msg 1 || exit 1 ;;
-        esac
-        ;;
-  stop)
-        log_daemon_msg "Stopping $DESC" "$NAME"
-        do_stop
-        case "$?" in
-                0|1) log_end_msg 0 ;;
-                2) exit 1 ;;
-        esac
-        ;;
-  status)
-        status_of_proc -p $PIDFILE "$DAEMON" "$NAME" && exit 0 || exit $?
-        ;;
-
-  restart|force-reload)
-        log_daemon_msg "Restarting $DESC" "$NAME"
-        do_stop
-        case "$?" in
-          0|1)
-                do_start
-                case "$?" in
-                        0) log_end_msg 0 ;;
-                        1) log_end_msg 1 ;; # Old process is still running
-                        *) log_end_msg 1 ;; # Failed to start
-                esac
-                ;;
-          *)
-                # Failed to stop
-                log_end_msg 1
-                ;;
-        esac
-        ;;
-  *)
-        echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
-        exit 3
-        ;;
-esac
\ No newline at end of file
diff --git a/kubernetes/files/kubelet/kubelet.service b/kubernetes/files/kubelet/kubelet.service
deleted file mode 100644
index 0c5b653..0000000
--- a/kubernetes/files/kubelet/kubelet.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=Kubernetes Kubelet Server
-Documentation=https://github.com/GoogleCloudPlatform/kubernetes
-
-[Service]
-EnvironmentFile=/etc/sysconfig/kubelet
-ExecStart=/usr/local/bin/kubelet "$DAEMON_ARGS"
-Restart=always
-
-[Install]
-WantedBy=multi-user.target
\ No newline at end of file
diff --git a/kubernetes/files/manifest/cadvisor.manifest b/kubernetes/files/manifest/cadvisor.manifest
deleted file mode 100644
index 5c90e91..0000000
--- a/kubernetes/files/manifest/cadvisor.manifest
+++ /dev/null
@@ -1,39 +0,0 @@
-apiVersion: v1
-kind: Pod
-metadata:
-  name: cadvisor
-  namespace: kube-system
-spec:
-  containers:
-    - name: cadvisor
-      image: google/cadvisor:latest
-      ports:
-        - name: http
-          containerPort: 8080
-          hostPort: 8080
-      volumeMounts:
-        - name: root
-          mountPath: /rootfs
-          readOnly: true
-        - name: varrun
-          mountPath: /var/run
-          readOnly: false
-        - name: varlibdocker
-          mountPath: /var/lib/docker
-          readOnly: true
-        - name: sys
-          mountPath: /sys
-          readOnly: true
-  volumes:
-    - name: root
-      hostPath:
-        path: /
-    - name: varrun
-      hostPath:
-        path: /var/run
-    - name: varlibdocker
-      hostPath:
-        path: /var/lib/docker
-    - name: sys
-      hostPath:
-        path: /sys
\ No newline at end of file
diff --git a/kubernetes/files/manifest/kube-proxy.manifest b/kubernetes/files/manifest/kube-proxy.manifest.pool
similarity index 63%
rename from kubernetes/files/manifest/kube-proxy.manifest
rename to kubernetes/files/manifest/kube-proxy.manifest.pool
index 23b46f4..92e1602 100644
--- a/kubernetes/files/manifest/kube-proxy.manifest
+++ b/kubernetes/files/manifest/kube-proxy.manifest.pool
@@ -15,12 +15,12 @@
     command:
     - /bin/sh
     - -c
-    - kube-proxy 
-      --logtostderr=true 
-      --v=2 
-      --kubeconfig=/etc/kubernetes/proxy.kubeconfig 
+    - kube-proxy
+      --logtostderr=true
+      --v=2
+      --kubeconfig=/etc/kubernetes/proxy.kubeconfig
       --master=https://{{ pool.master.host }}
-      {% if pool.network.engine == 'calico' %}--proxy-mode=iptables{% endif %} 
+      {%- if pool.network.engine == 'calico' %}--proxy-mode=iptables{% endif %}
       1>>/var/log/kube-proxy.log 2>&1
     securityContext:
       privileged: true
@@ -31,16 +31,22 @@
     - mountPath: /var/log
       name: varlog
       readOnly: false
-    - mountPath: /var/lib/kube-proxy/kubeconfig
+    - mountPath: /etc/kubernetes/proxy.kubeconfig
       name: kubeconfig
       readOnly: false
+    - mountPath: /var/run/dbus/system_bus_socket
+      name: dbus
+      readOnly: false
   volumes:
   - hostPath:
-      path: /usr/share/ca-certificates
+      path: /etc/ssl/certs
     name: ssl-certs-host
   - hostPath:
-      path: /var/lib/kube-proxy/kubeconfig
+      path: /etc/kubernetes/proxy.kubeconfig
     name: kubeconfig
   - hostPath:
       path: /var/log
-    name: varlog
\ No newline at end of file
+    name: varlog
+  - hostPath:
+      path: /var/run/dbus/system_bus_socket
+    name: dbus
\ No newline at end of file
diff --git a/kubernetes/map.jinja b/kubernetes/map.jinja
index 9c9f82b..ac2c76e 100644
--- a/kubernetes/map.jinja
+++ b/kubernetes/map.jinja
@@ -1,6 +1,6 @@
 {% set common = salt['grains.filter_by']({
     'Debian': {
-        'pkgs': ['curl', 'git', 'apt-transport-https', 'python-apt', 'nfs-common', 'socat', 'netcat-traditional', 'openssl'],
+        'pkgs': ['curl', 'git', 'apt-transport-https', 'python-apt', 'nfs-common', 'socat', 'netcat-traditional', 'openssl', 'kubernetes-client', 'kubernetes-node'],
         'services': [],
     },
     'RedHat': {
@@ -11,8 +11,8 @@
 
 {% set master = salt['grains.filter_by']({
     'Debian': {
-        'pkgs': [],
-        'services': [],
+        'pkgs': ['kubernetes-master'],
+        'services': ['kubelet'],
     },
     'RedHat': {
         'pkgs': [],
@@ -23,7 +23,7 @@
 {% set pool = salt['grains.filter_by']({
     'Debian': {
         'pkgs': [],
-        'services': [],
+        'services': ['kubelet'],
     },
     'RedHat': {
         'pkgs': [],
diff --git a/kubernetes/master/kubelet.sls b/kubernetes/master/kubelet.sls
index 78bf5a7..725552f 100644
--- a/kubernetes/master/kubelet.sls
+++ b/kubernetes/master/kubelet.sls
@@ -1,13 +1,7 @@
 {%- from "kubernetes/map.jinja" import master with context %}
 {%- if master.enabled %}
 
-{% if pillar.get('is_systemd') %}
-{% set environment_file = '/etc/sysconfig/kubelet' %}
-{% else %}
-{% set environment_file = '/etc/default/kubelet' %}
-{% endif %}
-
-{{ environment_file }}:
+/etc/default/kubelet:
   file.managed:
   - source: salt://kubernetes/files/kubelet/default.master
   - template: jinja
@@ -15,53 +9,14 @@
   - group: root
   - mode: 644
 
-/usr/local/bin/kubelet:
-  file.managed:
-    - user: root
-    - group: root
-    - mode: 755
+/etc/kubernetes/config:
+  file.absent
 
-{% if pillar.get('is_systemd') %}
-
-{{ pillar.get('systemd_system_path') }}/kubelet.service:
-  file.managed:
-    - source: salt://kubernetes/files/kubelet/kubelet.service
-    - user: root
-    - group: root
-
-fix-service-kubelet:
-  cmd.wait:
-    - name: /opt/kubernetes/helpers/services bounce kubelet
-    - watch:
-      - file: /usr/local/bin/kubelet
-      - file: {{ pillar.get('systemd_system_path') }}/kubelet.service
-      - file: {{ environment_file }}
-      - file: /var/lib/kubelet/kubeconfig
-
-{% else %}
-
-/etc/init.d/kubelet:
-  file.managed:
-    - source: salt://kubernetes/files/kubelet/initd
-    - user: root
-    - group: root
-    - mode: 755
-
-{% endif %}
-
-kubelet:
+master_services:
   service.running:
-    - enable: True
-    - watch:
-      - file: /usr/local/bin/kubelet
-{% if pillar.get('is_systemd') %}
-      - file: {{ pillar.get('systemd_system_path') }}/kubelet.service
-{% else %}
-      - file: /etc/init.d/kubelet
-{% endif %}
-{% if grains['os_family'] == 'RedHat' %}
-      - file: /usr/lib/systemd/system/kubelet.service
-{% endif %}
-      - file: {{ environment_file }}
+  - names: {{ master.services }}
+  - enable: True
+  - watch:
+    - file: /etc/default/kubelet
 
 {%- endif %}
\ No newline at end of file
diff --git a/kubernetes/master/service.sls b/kubernetes/master/service.sls
index 1f6c562..24136ee 100644
--- a/kubernetes/master/service.sls
+++ b/kubernetes/master/service.sls
@@ -6,28 +6,8 @@
 include:
 - kubernetes._common
 
-kubernetes_master_binaries:
-  cmd.run:
-  - names: 
-    - "cp /root/apt.tcpcloud.eu/kubernetes/bin/{{ common.binaries_version }}/kubectl /usr/bin/"
-    - "cp /root/apt.tcpcloud.eu/kubernetes/bin/{{ common.binaries_version }}/kubelet /usr/local/bin/"
-    - "cp /root/etcd-v2.2.1-linux-amd64/etcdctl /usr/bin/"
-  - unless: test -f /usr/local/bin/kubelet && test -f /usr/bin/kubectl && test -f /usr/bin/etcdctl
-  - require:
-    - cmd: kubernetes_binaries
-
-kubernetes_master_cert_group:
-  group.present:
-  - name: kube-cert
-  - system: True
-
-kubernetes_master_cert_dir:
-  file.directory:
-  - name: /srv/kubernetes/
-  - mode: 750
-  - group: kube-cert
-  - makedirs: True
-  - requires:
-    - group: kubernetes_master_cert_group
+kubernetes_master_pkgs:
+  pkg.installed:
+  - names: {{ master.pkgs }}
 
 {%- endif %}
\ No newline at end of file
diff --git a/kubernetes/pool/kube-proxy.sls b/kubernetes/pool/kube-proxy.sls
index 6a406a2..e444604 100644
--- a/kubernetes/pool/kube-proxy.sls
+++ b/kubernetes/pool/kube-proxy.sls
@@ -1,70 +1,17 @@
 {%- from "kubernetes/map.jinja" import pool with context %}
 {%- if pool.enabled %}
 
-{% if pillar.get('is_systemd') %}
-{% set environment_file = '/etc/sysconfig/kube-proxy' %}
-{% else %}
-{% set environment_file = '/etc/default/kube-proxy' %}
-{% endif %}
-
-{{ environment_file }}:
+/etc/kubernetes/manifests/kube-proxy.manifest:
   file.managed:
-    - source: salt://kubernetes/files/kube-proxy/default
+    - source: salt://kubernetes/files/manifest/kube-proxy.manifest.pool
     - template: jinja
     - user: root
     - group: root
     - mode: 644
+    - makedirs: true
+    - dir_mode: 755
 
-kube-proxy:
-  group.present:
-    - system: True
-  user.present:
-    - system: True
-    - gid_from_name: True
-    - shell: /sbin/nologin
-    - home: /var/kube-proxy
-    - require:
-      - group: kube-proxy
-
-{% if pillar.get('is_systemd') %}
-
-{{ pillar.get('systemd_system_path') }}/kube-proxy.service:
-  file.managed:
-    - source: salt://kubernetes/files/kube-proxy/kube-proxy.service
-    - user: root
-    - group: root
-  cmd.wait:
-    - name: /opt/kubernetes/helpers/services bounce kube-proxy
-    - watch:
-      - file: {{ environment_file }}
-      - file: {{ pillar.get('systemd_system_path') }}/kube-proxy.service
-      - file: /var/lib/kube-proxy/kubeconfig
-
-{% else %}
-
-/etc/init.d/kube-proxy:
-  file.managed:
-    - source: salt://kubernetes/files/kube-proxy/initd
-    - user: root
-    - group: root
-    - mode: 755
-
-{% endif %}
-
-kube-proxy-service:
-  service.running:
-    - name: kube-proxy
-    - enable: True
-    - watch:
-      - file: {{ environment_file }}
-{% if pillar.get('is_systemd') %}
-      - file: {{ pillar.get('systemd_system_path') }}/kube-proxy.service
-{% else %}
-      - file: /etc/init.d/kube-proxy
-{% endif %}
-      - file: /etc/kubernetes/proxy.kubeconfig
-
-/var/lib/kube-proxy/kubeconfig:
+/etc/kubernetes/proxy.kubeconfig:
   file.managed:
     - source: salt://kubernetes/files/kube-proxy/proxy.kubeconfig
     - template: jinja
@@ -73,20 +20,5 @@
     - mode: 644
     - makedirs: true
 
-/etc/kubernetes/manifests/kube-proxy.manifest:
-  file.managed:
-    - source: salt://kubernetes/files/manifest/kube-proxy.manifest
-    - template: jinja
-    - user: root
-    - group: root
-    - mode: 644
-    - makedirs: true
-    - dir_mode: 755
 
-/var/log/kube-controller-manager.log:
-  file.managed:
-    - user: root
-    - group: root
-    - mode: 644
-
-{% endif %}
\ No newline at end of file
+{%- endif %}
\ No newline at end of file
diff --git a/kubernetes/pool/kubelet.sls b/kubernetes/pool/kubelet.sls
index 022efb3..0b20cf8 100644
--- a/kubernetes/pool/kubelet.sls
+++ b/kubernetes/pool/kubelet.sls
@@ -1,13 +1,7 @@
 {%- from "kubernetes/map.jinja" import pool with context %}
 {%- if pool.enabled %}
 
-{% if pillar.get('is_systemd') %}
-{% set environment_file = '/etc/sysconfig/kubelet' %}
-{% else %}
-{% set environment_file = '/etc/default/kubelet' %}
-{% endif %}
-
-{{ environment_file }}:
+/etc/default/kubelet:
   file.managed:
   - source: salt://kubernetes/files/kubelet/default.pool
   - template: jinja
@@ -15,12 +9,6 @@
   - group: root
   - mode: 644
 
-/usr/local/bin/kubelet:
-  file.managed:
-    - user: root
-    - group: root
-    - mode: 755
-
 /etc/kubernetes/kubelet.kubeconfig:
   file.managed:
     - source: salt://kubernetes/files/kubelet/kubelet.kubeconfig
@@ -30,57 +18,14 @@
     - mode: 644
     - makedirs: true
 
+/etc/kubernetes/config:
+  file.absent
 
-{% if pillar.get('is_systemd') %}
-
-{{ pillar.get('systemd_system_path') }}/kubelet.service:
-  file.managed:
-    - source: salt://kubernetes/files/kubelet/kubelet.service
-    - user: root
-    - group: root
-
-fix-service-kubelet:
-  cmd.wait:
-    - name: /opt/kubernetes/helpers/services bounce kubelet
-    - watch:
-      - file: /usr/local/bin/kubelet
-      - file: {{ pillar.get('systemd_system_path') }}/kubelet.service
-      - file: {{ environment_file }}
-      - file: /var/lib/kubelet/kubeconfig
-
-{% else %}
-
-/etc/init.d/kubelet:
-  file.managed:
-    - source: salt://kubernetes/files/kubelet/initd
-    - user: root
-    - group: root
-    - mode: 755
-
-{% endif %}
-
-/etc/kubernetes/manifests/cadvisor.manifest:
-  file.managed:
-    - source: salt://kubernetes/files/manifest/cadvisor.manifest
-    - user: root
-    - group: root
-    - mode: 644
-    - makedirs: true
-    - template: jinja
-
-kubelet:
+pool_services:
   service.running:
-    - enable: True
-    - watch:
-      - file: /usr/local/bin/kubelet
-{% if pillar.get('is_systemd') %}
-      - file: {{ pillar.get('systemd_system_path') }}/kubelet.service
-{% else %}
-      - file: /etc/init.d/kubelet
-{% endif %}
-{% if grains['os_family'] == 'RedHat' %}
-      - file: /usr/lib/systemd/system/kubelet.service
-{% endif %}
-      - file: {{ environment_file }}
-      - file: /etc/kubernetes/kubelet.kubeconfig
+  - names: {{ pool.services }}
+  - enable: True
+  - watch:
+    - file: /etc/default/kubelet
+
 {%- endif %}
\ No newline at end of file
diff --git a/kubernetes/pool/service.sls b/kubernetes/pool/service.sls
index c104889..743bee4 100644
--- a/kubernetes/pool/service.sls
+++ b/kubernetes/pool/service.sls
@@ -5,14 +5,4 @@
 include:
 - kubernetes._common
 
-kubernetes_pool_binaries:
-  cmd.run:
-  - names: 
-    - "cp /root/apt.tcpcloud.eu/kubernetes/bin/{{ common.binaries_version }}/kube-proxy /usr/local/bin/"
-    - "cp /root/apt.tcpcloud.eu/kubernetes/bin/{{ common.binaries_version }}/kubectl /usr/bin/"
-    - "cp /root/apt.tcpcloud.eu/kubernetes/bin/{{ common.binaries_version }}/kubelet /usr/local/bin/"
-  - unless: test -f /usr/local/bin/kubelet && test -f /usr/local/bin/kube-proxy && test -f /usr/bin/kubectl
-  - require:
-    - cmd: kubernetes_binaries
-
 {%- endif %}
\ No newline at end of file
diff --git a/metadata/service/common.yml b/metadata/service/common.yml
index 47364d9..f1f8197 100644
--- a/metadata/service/common.yml
+++ b/metadata/service/common.yml
@@ -1,6 +1,5 @@
 parameters:
   kubernetes:
     common:
-      binaries_version: v1.1.1
       network:
         engine: none
\ No newline at end of file
diff --git a/metadata/service/master/cluster.yml b/metadata/service/master/cluster.yml
index c528ed3..2d118ff 100644
--- a/metadata/service/master/cluster.yml
+++ b/metadata/service/master/cluster.yml
@@ -17,7 +17,7 @@
   kubernetes:
     master:
       enabled: true
-      version: v1.2.0
+      version: ${_param:kubernetes_version}
       registry: tcpcloud
       service_addresses: 10.254.0.0/16
       admin:
diff --git a/metadata/service/master/single.yml b/metadata/service/master/single.yml
index 779359f..e240ed6 100644
--- a/metadata/service/master/single.yml
+++ b/metadata/service/master/single.yml
@@ -17,7 +17,7 @@
   kubernetes:
     master:
       enabled: true
-      version: v1.2.0
+      version: ${_param:kubernetes_version}
       registry: tcpcloud
       service_addresses: 10.254.0.0/16
       admin:
diff --git a/metadata/service/pool/cluster.yml b/metadata/service/pool/cluster.yml
index cebe9fc..e05d323 100644
--- a/metadata/service/pool/cluster.yml
+++ b/metadata/service/pool/cluster.yml
@@ -7,7 +7,8 @@
   kubernetes:
     pool:
       enabled: true
-      version: v1.2.0
+      version: ${_param:kubernetes_version}
+      registry: tcpcloud
       master:
         host: ${_param:cluster_vip_address}
         apiserver:
diff --git a/metadata/service/pool/single.yml b/metadata/service/pool/single.yml
index b219527..b4bb7df 100644
--- a/metadata/service/pool/single.yml
+++ b/metadata/service/pool/single.yml
@@ -7,7 +7,8 @@
   kubernetes:
     pool:
       enabled: true
-      version: v1.2.0
+      version: ${_param:kubernetes_version}
+      registry: tcpcloud
       master:
         host: ${_param:master_address}
         apiserver: