mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	run kube-proxy in a static pod
This commit is contained in:
		@@ -99,6 +99,7 @@ readonly KUBE_DOCKER_WRAPPED_BINARIES=(
 | 
			
		||||
  kube-apiserver,busybox
 | 
			
		||||
  kube-controller-manager,busybox
 | 
			
		||||
  kube-scheduler,busybox
 | 
			
		||||
  kube-proxy,gcr.io/google_containers/debian-iptables:v1
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# The set of addons images that should be prepopulated
 | 
			
		||||
 
 | 
			
		||||
@@ -25,9 +25,10 @@ SALT_ROOT=$(dirname "${BASH_SOURCE}")
 | 
			
		||||
readonly SALT_ROOT
 | 
			
		||||
 | 
			
		||||
readonly KUBE_DOCKER_WRAPPED_BINARIES=(
 | 
			
		||||
      kube-apiserver
 | 
			
		||||
      kube-controller-manager
 | 
			
		||||
      kube-scheduler
 | 
			
		||||
  kube-apiserver
 | 
			
		||||
  kube-controller-manager
 | 
			
		||||
  kube-scheduler
 | 
			
		||||
  kube-proxy
 | 
			
		||||
)
 | 
			
		||||
    
 | 
			
		||||
readonly SERVER_BIN_TAR=${1-}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,3 +2,4 @@
 | 
			
		||||
kube-apiserver_docker_tag: #kube-apiserver_docker_tag_value#
 | 
			
		||||
kube-controller-manager_docker_tag: #kube-controller-manager_docker_tag_value#
 | 
			
		||||
kube-scheduler_docker_tag: #kube-scheduler_docker_tag_value#
 | 
			
		||||
kube-proxy_docker_tag: #kube-proxy_docker_tag_value#
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										43
									
								
								cluster/saltbase/salt/kube-node-unpacker/init.sls
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								cluster/saltbase/salt/kube-node-unpacker/init.sls
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
/etc/kubernetes/kube-node-unpacker.sh:
 | 
			
		||||
  file.managed:
 | 
			
		||||
    - source: salt://kube-node-unpacker/kube-node-unpacker.sh
 | 
			
		||||
    - user: root
 | 
			
		||||
    - group: root
 | 
			
		||||
    - mode: 755
 | 
			
		||||
 | 
			
		||||
node-docker-image-tags:
 | 
			
		||||
  file.touch:
 | 
			
		||||
    - name: /srv/pillar/docker-images.sls
 | 
			
		||||
 | 
			
		||||
{% if pillar.get('is_systemd') %}
 | 
			
		||||
 | 
			
		||||
{{ pillar.get('systemd_system_path') }}/kube-node-unpacker.service:
 | 
			
		||||
  file.managed:
 | 
			
		||||
    - source: salt://kube-node-unpacker/kube-node-unpacker.service
 | 
			
		||||
    - user: root
 | 
			
		||||
    - group: root
 | 
			
		||||
  cmd.wait:
 | 
			
		||||
    - name: /opt/kubernetes/helpers/services bounce kube-node-unpacker
 | 
			
		||||
    - watch:
 | 
			
		||||
      - file: node-docker-image-tags
 | 
			
		||||
      - file: /etc/kubernetes/kube-node-unpacker.sh
 | 
			
		||||
      - file: {{ pillar.get('systemd_system_path') }}/kube-node-unpacker.service
 | 
			
		||||
 | 
			
		||||
{% else %}
 | 
			
		||||
 | 
			
		||||
/etc/init.d/kube-node-unpacker:
 | 
			
		||||
  file.managed:
 | 
			
		||||
    - source: salt://kube-node-unpacker/initd
 | 
			
		||||
    - user: root
 | 
			
		||||
    - group: root
 | 
			
		||||
    - mode: 755
 | 
			
		||||
 | 
			
		||||
kube-node-unpacker:
 | 
			
		||||
  service.running:
 | 
			
		||||
    - enable: True
 | 
			
		||||
    - restart: True
 | 
			
		||||
    - watch:
 | 
			
		||||
      - file: node-docker-image-tags
 | 
			
		||||
      - file: /etc/kubernetes/kube-node-unpacker.sh
 | 
			
		||||
 | 
			
		||||
{% endif %}
 | 
			
		||||
							
								
								
									
										95
									
								
								cluster/saltbase/salt/kube-node-unpacker/initd
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										95
									
								
								cluster/saltbase/salt/kube-node-unpacker/initd
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,95 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
#
 | 
			
		||||
### BEGIN INIT INFO
 | 
			
		||||
# Provides:   kube-node-unpacker
 | 
			
		||||
# Required-Start:    $local_fs $network $syslog docker
 | 
			
		||||
# Required-Stop:
 | 
			
		||||
# Default-Start:     2 3 4 5
 | 
			
		||||
# Default-Stop:      0 1 6
 | 
			
		||||
# Short-Description: Kubernetes Node Unpacker
 | 
			
		||||
# Description:
 | 
			
		||||
#   Unpacks docker images on Kubernetes nodes
 | 
			
		||||
### 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 Node Unpacker"
 | 
			
		||||
NAME=kube-node-unpacker
 | 
			
		||||
DAEMON_LOG_FILE=/var/log/$NAME.log
 | 
			
		||||
PIDFILE=/var/run/$NAME.pid
 | 
			
		||||
SCRIPTNAME=/etc/init.d/$NAME
 | 
			
		||||
KUBE_MASTER_ADDONS_SH=/etc/kubernetes/kube-node-unpacker.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()
 | 
			
		||||
{
 | 
			
		||||
    ${KUBE_MASTER_ADDONS_SH} </dev/null >>${DAEMON_LOG_FILE} 2>&1 &
 | 
			
		||||
    echo $! > ${PIDFILE}
 | 
			
		||||
    disown
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# Function that stops the daemon/service
 | 
			
		||||
#
 | 
			
		||||
do_stop()
 | 
			
		||||
{
 | 
			
		||||
    kill $(cat ${PIDFILE})
 | 
			
		||||
    rm ${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 ;;
 | 
			
		||||
                2) exit 1 ;;
 | 
			
		||||
        esac
 | 
			
		||||
        ;;
 | 
			
		||||
  status)
 | 
			
		||||
        status_of_proc -p $PIDFILE $KUBE_MASTER_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
 | 
			
		||||
@@ -0,0 +1,9 @@
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Kubernetes Node Unpacker
 | 
			
		||||
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
ExecStart=/etc/kubernetes/kube-node-unpacker.sh
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
							
								
								
									
										46
									
								
								cluster/saltbase/salt/kube-node-unpacker/kube-node-unpacker.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										46
									
								
								cluster/saltbase/salt/kube-node-unpacker/kube-node-unpacker.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,46 @@
 | 
			
		||||
#!/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.
 | 
			
		||||
 | 
			
		||||
# loadedImageFlags is a bit-flag to track which docker images loaded successfully.
 | 
			
		||||
let loadedImageFlags=0
 | 
			
		||||
 | 
			
		||||
while true; do
 | 
			
		||||
  restart_docker=false
 | 
			
		||||
 | 
			
		||||
  if which docker 1>/dev/null 2>&1; then
 | 
			
		||||
 | 
			
		||||
    timeout 30 docker load -i /srv/salt/kube-bins/kube-proxy.tar 1>/dev/null 2>&1
 | 
			
		||||
    rc=$?
 | 
			
		||||
    if [[ "${rc}" == 0 ]]; then
 | 
			
		||||
      let loadedImageFlags="${loadedImageFlags}|1"
 | 
			
		||||
    elif [[ "${rc}" == 124 ]]; then
 | 
			
		||||
      restart_docker=true
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  # required docker images got installed. exit while loop.
 | 
			
		||||
  if [[ "${loadedImageFlags}" == 1 ]]; then break; fi
 | 
			
		||||
 | 
			
		||||
  # Sometimes docker load hang, restart docker daemon resolve the issue
 | 
			
		||||
  if [[ "${restart_docker}" ]]; then service docker restart; fi
 | 
			
		||||
 | 
			
		||||
  # sleep for 15 seconds before attempting to load docker images again
 | 
			
		||||
  sleep 15
 | 
			
		||||
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
# Now exit. After kube-push, salt will notice that the service is down and it
 | 
			
		||||
# will start it and new docker images will be loaded.
 | 
			
		||||
@@ -1,27 +0,0 @@
 | 
			
		||||
{% set daemon_args = "$DAEMON_ARGS" -%}
 | 
			
		||||
{% if grains['os_family'] == 'RedHat' -%}
 | 
			
		||||
	{% set daemon_args = "" -%}
 | 
			
		||||
{% endif -%}
 | 
			
		||||
 | 
			
		||||
{% set kubeconfig = "--kubeconfig=/var/lib/kube-proxy/kubeconfig" -%}
 | 
			
		||||
{% if grains.api_servers is defined -%}
 | 
			
		||||
  {% set api_servers = "--master=https://" + grains.api_servers -%}
 | 
			
		||||
{% else -%}
 | 
			
		||||
  {% set ips = salt['mine.get']('roles:kubernetes-master', 'network.ip_addrs', 'grain').values() -%}
 | 
			
		||||
  {% set api_servers = "--master=https://" + ips[0][0] -%}
 | 
			
		||||
{% endif -%}
 | 
			
		||||
 | 
			
		||||
# TODO: remove nginx for other cloud providers.
 | 
			
		||||
{% if grains['cloud'] is defined and grains.cloud in [ 'aws', 'gce', 'vagrant' ]  %}
 | 
			
		||||
   {% set api_servers_with_port = api_servers -%}
 | 
			
		||||
{% else -%}
 | 
			
		||||
  {% set api_servers_with_port = api_servers + ":6443" -%}
 | 
			
		||||
{% endif -%}
 | 
			
		||||
 | 
			
		||||
{% set test_args = "" -%}
 | 
			
		||||
{% if pillar['kubeproxy_test_args'] is defined -%}
 | 
			
		||||
  {% set test_args=pillar['kubeproxy_test_args'] %}
 | 
			
		||||
{% endif -%}
 | 
			
		||||
 | 
			
		||||
# test_args has to be kept at the end, so they'll overwrite any prior configuration
 | 
			
		||||
DAEMON_ARGS="{{daemon_args}} {{api_servers_with_port}} {{kubeconfig}} {{pillar['log_level']}} {{test_args}}"
 | 
			
		||||
@@ -1,73 +1,3 @@
 | 
			
		||||
{% if pillar.get('is_systemd') %}
 | 
			
		||||
{% set environment_file = '/etc/sysconfig/kube-proxy' %}
 | 
			
		||||
{% else %}
 | 
			
		||||
{% set environment_file = '/etc/default/kube-proxy' %}
 | 
			
		||||
{% endif %}
 | 
			
		||||
 | 
			
		||||
/usr/local/bin/kube-proxy:
 | 
			
		||||
  file.managed:
 | 
			
		||||
    - source: salt://kube-bins/kube-proxy
 | 
			
		||||
    - user: root
 | 
			
		||||
    - group: root
 | 
			
		||||
    - mode: 755
 | 
			
		||||
 | 
			
		||||
{{ environment_file }}:
 | 
			
		||||
  file.managed:
 | 
			
		||||
    - source: salt://kube-proxy/default
 | 
			
		||||
    - template: jinja
 | 
			
		||||
    - user: root
 | 
			
		||||
    - group: root
 | 
			
		||||
    - mode: 644
 | 
			
		||||
 | 
			
		||||
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://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://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: /var/lib/kube-proxy/kubeconfig
 | 
			
		||||
 | 
			
		||||
/var/lib/kube-proxy/kubeconfig:
 | 
			
		||||
  file.managed:
 | 
			
		||||
    - source: salt://kube-proxy/kubeconfig
 | 
			
		||||
@@ -75,3 +5,29 @@ kube-proxy-service:
 | 
			
		||||
    - group: root
 | 
			
		||||
    - mode: 400
 | 
			
		||||
    - makedirs: true
 | 
			
		||||
 | 
			
		||||
# kube-proxy in a static pod
 | 
			
		||||
/etc/kubernetes/manifests/kube-proxy.manifest:
 | 
			
		||||
  file.managed:
 | 
			
		||||
    - source: salt://kube-proxy/kube-proxy.manifest
 | 
			
		||||
    - template: jinja
 | 
			
		||||
    - user: root
 | 
			
		||||
    - group: root
 | 
			
		||||
    - mode: 644
 | 
			
		||||
    - makedirs: true
 | 
			
		||||
    - dir_mode: 755
 | 
			
		||||
    - require:
 | 
			
		||||
      - service: docker
 | 
			
		||||
      - service: kubelet
 | 
			
		||||
 | 
			
		||||
/var/log/kube-proxy.log:
 | 
			
		||||
  file.managed:
 | 
			
		||||
    - user: root
 | 
			
		||||
    - group: root
 | 
			
		||||
    - mode: 644
 | 
			
		||||
 | 
			
		||||
#stop legacy kube-proxy service 
 | 
			
		||||
stop_kube-proxy:
 | 
			
		||||
  service.dead:
 | 
			
		||||
    - name: kube-proxy
 | 
			
		||||
    - enable: None
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
							
								
								
									
										54
									
								
								cluster/saltbase/salt/kube-proxy/kube-proxy.manifest
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								cluster/saltbase/salt/kube-proxy/kube-proxy.manifest
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
{% set kubeconfig = "--kubeconfig=/var/lib/kube-proxy/kubeconfig" -%}
 | 
			
		||||
{% if grains.api_servers is defined -%}
 | 
			
		||||
  {% set api_servers = "--master=https://" + grains.api_servers -%}
 | 
			
		||||
{% else -%}
 | 
			
		||||
  {% set ips = salt['mine.get']('roles:kubernetes-master', 'network.ip_addrs', 'grain').values() -%}
 | 
			
		||||
  {% set api_servers = "--master=https://" + ips[0][0] -%}
 | 
			
		||||
{% endif -%}
 | 
			
		||||
{% if grains['cloud'] is defined and grains.cloud in [ 'aws', 'gce', 'vagrant' ]  %}
 | 
			
		||||
  {% set api_servers_with_port = api_servers -%}
 | 
			
		||||
{% else -%}
 | 
			
		||||
  {% set api_servers_with_port = api_servers + ":6443" -%}
 | 
			
		||||
{% endif -%}
 | 
			
		||||
{% set test_args = "" -%}
 | 
			
		||||
{% if pillar['kubeproxy_test_args'] is defined -%}
 | 
			
		||||
  {% set test_args=pillar['kubeproxy_test_args'] %}
 | 
			
		||||
{% endif -%}
 | 
			
		||||
 | 
			
		||||
# kube-proxy podspec
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Pod
 | 
			
		||||
metadata:
 | 
			
		||||
  name: kube-proxy
 | 
			
		||||
  namespace: kube-system
 | 
			
		||||
spec:
 | 
			
		||||
  hostNetwork: true
 | 
			
		||||
  containers:
 | 
			
		||||
  - name: kube-proxy
 | 
			
		||||
    image: gcr.io/google_containers/kube-proxy:{{pillar['kube-proxy_docker_tag']}}
 | 
			
		||||
    command:
 | 
			
		||||
    - /bin/sh
 | 
			
		||||
    - -c
 | 
			
		||||
    - kube-proxy {{api_servers_with_port}} {{kubeconfig}} {{pillar['log_level']}} {{test_args}} 1>>/var/log/kube-proxy.log 2>&1
 | 
			
		||||
    securityContext:
 | 
			
		||||
      privileged: true
 | 
			
		||||
    volumeMounts:
 | 
			
		||||
    - mountPath: /etc/ssl/certs
 | 
			
		||||
      name: ssl-certs-host
 | 
			
		||||
      readOnly: true
 | 
			
		||||
    - mountPath: /var/log
 | 
			
		||||
      name: varlog
 | 
			
		||||
      readOnly: false
 | 
			
		||||
    - mountPath: /var/lib/kube-proxy/kubeconfig
 | 
			
		||||
      name: kubeconfig
 | 
			
		||||
      readOnly: false
 | 
			
		||||
  volumes:
 | 
			
		||||
  - hostPath:
 | 
			
		||||
      path: /usr/share/ca-certificates
 | 
			
		||||
    name: ssl-certs-host
 | 
			
		||||
  - hostPath:
 | 
			
		||||
      path: /var/lib/kube-proxy/kubeconfig
 | 
			
		||||
    name: kubeconfig
 | 
			
		||||
  - hostPath:
 | 
			
		||||
      path: /var/log
 | 
			
		||||
    name: varlog
 | 
			
		||||
@@ -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
 | 
			
		||||
@@ -52,30 +52,6 @@ monit:
 | 
			
		||||
    - mode: 755
 | 
			
		||||
    - makedirs: True
 | 
			
		||||
 | 
			
		||||
{% if "kubernetes-pool" in grains.get('roles', []) %}
 | 
			
		||||
/etc/supervisor/conf.d/kube-proxy.conf:
 | 
			
		||||
  file:
 | 
			
		||||
    - managed
 | 
			
		||||
    - source: salt://supervisor/kube-proxy.conf
 | 
			
		||||
    - user: root
 | 
			
		||||
    - group: root
 | 
			
		||||
    - mode: 644
 | 
			
		||||
    - makedirs: True
 | 
			
		||||
    - require_in: 
 | 
			
		||||
      - pkg: supervisor
 | 
			
		||||
    - require: 
 | 
			
		||||
      - file: /usr/sbin/kube-proxy-checker.sh
 | 
			
		||||
 | 
			
		||||
/usr/sbin/kube-proxy-checker.sh:
 | 
			
		||||
  file:
 | 
			
		||||
    - managed
 | 
			
		||||
    - source: salt://supervisor/kube-proxy-checker.sh
 | 
			
		||||
    - user: root
 | 
			
		||||
    - group: root
 | 
			
		||||
    - mode: 755
 | 
			
		||||
    - makedirs: True
 | 
			
		||||
{% endif %}
 | 
			
		||||
 | 
			
		||||
{% if grains['roles'][0] == 'kubernetes-master' -%}
 | 
			
		||||
/etc/supervisor/conf.d/kube-addons.conf:
 | 
			
		||||
  file:
 | 
			
		||||
 
 | 
			
		||||
@@ -16,6 +16,7 @@ base:
 | 
			
		||||
    - helpers
 | 
			
		||||
    - cadvisor
 | 
			
		||||
    - kube-client-tools
 | 
			
		||||
    - kube-node-unpacker
 | 
			
		||||
    - kubelet
 | 
			
		||||
{% if pillar.get('network_provider', '').lower() == 'opencontrail' %}
 | 
			
		||||
    - opencontrail-networking-minion
 | 
			
		||||
 
 | 
			
		||||
@@ -129,6 +129,7 @@ readonly KUBE_STATIC_LIBRARIES=(
 | 
			
		||||
  kube-apiserver
 | 
			
		||||
  kube-controller-manager
 | 
			
		||||
  kube-scheduler
 | 
			
		||||
  kube-proxy
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
kube::golang::is_statically_linked_library() {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user