Browse Source
Merge pull request #363 from mattymo/kubelet
Merge pull request #363 from mattymo/kubelet
Deploy kubelet and kube-apiserver as containerspull/377/head
committed by
GitHub
19 changed files with 86 additions and 346 deletions
Unified View
Diff Options
-
20roles/download/defaults/main.yml
-
10roles/download/vars/kube_versions.yml
-
2roles/kubernetes/master/meta/main.yml
-
62roles/kubernetes/master/tasks/main.yml
-
25roles/kubernetes/master/tasks/pre-upgrade.yml
-
22roles/kubernetes/master/tasks/start.yml
-
118roles/kubernetes/master/templates/deb-kube-apiserver.initd.j2
-
58roles/kubernetes/master/templates/kube-apiserver.j2
-
30roles/kubernetes/master/templates/kube-apiserver.service.j2
-
21roles/kubernetes/master/templates/manifests/kube-apiserver.manifest.j2
-
4roles/kubernetes/node/meta/main.yml
-
6roles/kubernetes/node/tasks/install.yml
-
2roles/kubernetes/node/tasks/main.yml
-
15roles/kubernetes/node/templates/kubelet-container.j2
-
7roles/kubernetes/node/templates/kubelet.j2
-
5roles/kubernetes/node/templates/kubelet.service.j2
-
2roles/network_plugin/calico/templates/calicoctl-container.j2
-
18roles/uploads/defaults/main.yml
-
5roles/uploads/vars/kube_versions.yml
@ -1,22 +1,12 @@ |
|||||
kube_checksum: |
kube_checksum: |
||||
v1.2.2: |
v1.2.2: |
||||
kube_apiserver: eb1bfd8b877052cbd1991b8c429a1d06661f4cb019905e20e128174f724e16de |
|
||||
kubectl: 473e6924569fba30d4a50cecdc2cae5f31d97d1f662463e85b74a472105dcff4 |
kubectl: 473e6924569fba30d4a50cecdc2cae5f31d97d1f662463e85b74a472105dcff4 |
||||
kubelet: f16827dc7e7c82f0e215f0fc73eb01e2dfe91a2ec83f9cbcaf8d37c91b64fd3b |
|
||||
v1.2.3: |
v1.2.3: |
||||
kube_apiserver_checksum: ebaeeeb72cb29b358337b330617a96355ff2d08a5a523fc1a81beba36cc9d6f9 |
|
||||
kubectl_checksum: 394853edd409a721bcafe4f1360009ef9f845050719fe7d6fc7176f45cc92a8c |
kubectl_checksum: 394853edd409a721bcafe4f1360009ef9f845050719fe7d6fc7176f45cc92a8c |
||||
kubelet_checksum: 633bb41c51c5c0df0645dd60ba82b12eba39d009eb87bae9227de7d9a89c0797 |
|
||||
v1.2.4: |
v1.2.4: |
||||
kube_apiserver: 6ac99b36b02968459e026fcfc234207c66064b5e11816b69dd8fc234b2ffec1e |
|
||||
kubectl: dac61fbd506f7a17540feca691cd8a9d9d628d59661eebce788a50511f578897 |
kubectl: dac61fbd506f7a17540feca691cd8a9d9d628d59661eebce788a50511f578897 |
||||
kubelet: 4adaf40592248eef6fd4fa126464915ea41e624a70dc77178089760ed235e341 |
|
||||
v1.2.5: |
v1.2.5: |
||||
kube_apiserver: fbe8296ad4b194c06f6802a126d35cd2887dc1aded308d4da2b580f270412b33 |
|
||||
kubectl: 5526a496a84701015485e32c86486e2f23599f7a865164f546e619c6a62f7f19 |
kubectl: 5526a496a84701015485e32c86486e2f23599f7a865164f546e619c6a62f7f19 |
||||
kubelet: cd15b929f0190876216f397c2c6e7aa8c08d3b047fd90b4980cd68c8f4896211 |
|
||||
v1.3.0: |
v1.3.0: |
||||
kube_apiserver: 431cd312984a29f45590138e990d5c4d537b069b71f2587a72414fabc4fcffdd |
|
||||
kubectl: f40b2d0ff33984e663a0dea4916f1cb9041abecc09b11f9372cdb8049ded95dc |
kubectl: f40b2d0ff33984e663a0dea4916f1cb9041abecc09b11f9372cdb8049ded95dc |
||||
kubelet: bd5f10ccb95fe6e95ddf7ad8a119195c27cb2bce4be6f80c1810ff1a2111496d |
|
||||
kube_version: v1.3.0 |
kube_version: v1.3.0 |
@ -0,0 +1,25 @@ |
|||||
|
--- |
||||
|
- name: "Pre-upgrade | check for kube-apiserver unit file" |
||||
|
stat: |
||||
|
path: /etc/systemd/system/kube-apiserver.service |
||||
|
register: kube_apiserver_service_file |
||||
|
|
||||
|
- name: "Pre-upgrade | check for kube-apiserver init script" |
||||
|
stat: |
||||
|
path: /etc/init.d/kube-apiserver |
||||
|
register: kube_apiserver_init_script |
||||
|
|
||||
|
- name: "Pre-upgrade | stop kube-apiserver if service defined" |
||||
|
service: |
||||
|
name: kube-apiserver |
||||
|
state: stopped |
||||
|
when: (kube_apiserver_service_file.stat.exists|default(False) or kube_apiserver_init_script.stat.exists|default(False)) |
||||
|
|
||||
|
- name: "Pre-upgrade | remove kube-apiserver service definition" |
||||
|
file: |
||||
|
path: "{{ item }}" |
||||
|
state: absent |
||||
|
when: (kube_apiserver_service_file.stat.exists|default(False) or kube_apiserver_init_script.stat.exists|default(False)) |
||||
|
with_items: |
||||
|
- /etc/systemd/system/kube-apiserver.service |
||||
|
- /etc/init.d/kube-apiserver |
@ -1,22 +0,0 @@ |
|||||
--- |
|
||||
- name: Pause |
|
||||
pause: seconds=10 |
|
||||
|
|
||||
- name: reload systemd |
|
||||
command: systemctl daemon-reload |
|
||||
when: ansible_service_mgr == "systemd" and restart_apimaster is defined and restart_apimaster == True |
|
||||
|
|
||||
- name: reload kube-apiserver |
|
||||
service: |
|
||||
name: kube-apiserver |
|
||||
state: restarted |
|
||||
enabled: yes |
|
||||
when: ( restart_apimaster is defined and restart_apimaster == True) or |
|
||||
secret_changed | default(false) |
|
||||
|
|
||||
- name: Enable apiserver |
|
||||
service: |
|
||||
name: kube-apiserver |
|
||||
enabled: yes |
|
||||
state: started |
|
||||
when: restart_apimaster is not defined or restart_apimaster == False |
|
@ -1,118 +0,0 @@ |
|||||
#!/bin/bash |
|
||||
# |
|
||||
### BEGIN INIT INFO |
|
||||
# Provides: kube-apiserver |
|
||||
# Required-Start: $local_fs $network $syslog |
|
||||
# Required-Stop: |
|
||||
# Default-Start: 2 3 4 5 |
|
||||
# Default-Stop: 0 1 6 |
|
||||
# Short-Description: The Kubernetes apiserver |
|
||||
# Description: |
|
||||
# The Kubernetes apiserver. |
|
||||
### 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 apiserver" |
|
||||
NAME=kube-apiserver |
|
||||
DAEMON={{ bin_dir }}/kube-apiserver |
|
||||
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/kubernetes/$NAME.env ] && . /etc/kubernetes/$NAME.env |
|
||||
|
|
||||
# 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() |
|
||||
{ |
|
||||
# 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 |
|
@ -1,58 +0,0 @@ |
|||||
### |
|
||||
# kubernetes system config |
|
||||
# |
|
||||
# The following values are used to configure the kube-apiserver |
|
||||
|
|
||||
{% if ansible_service_mgr in ["sysvinit","upstart"] %} |
|
||||
# Logging directory |
|
||||
KUBE_LOGGING="--log-dir={{ kube_log_dir }} --logtostderr=true" |
|
||||
{% else %} |
|
||||
# logging to stderr means we get it in the systemd journal |
|
||||
KUBE_LOGGING="--logtostderr=true" |
|
||||
{% endif %} |
|
||||
|
|
||||
# Apiserver Log level, 0 is debug |
|
||||
KUBE_LOG_LEVEL="--v={{ kube_log_level | default('2') }}" |
|
||||
|
|
||||
# Should this cluster be allowed to run privileged docker containers |
|
||||
KUBE_ALLOW_PRIV="--allow_privileged=true" |
|
||||
|
|
||||
# The port on the local server to listen on. |
|
||||
KUBE_API_PORT="--insecure-port={{kube_apiserver_insecure_port}} --secure-port={{ kube_apiserver_port }}" |
|
||||
|
|
||||
# Insecure API address (default is localhost) |
|
||||
KUBE_API_INSECURE_BIND="--insecure-bind-address={{ kube_apiserver_insecure_bind_address | default('127.0.0.1') }}" |
|
||||
|
|
||||
# Address range to use for services |
|
||||
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range={{ kube_service_addresses }}" |
|
||||
|
|
||||
# Location of the etcd cluster |
|
||||
KUBE_ETCD_SERVERS="--etcd_servers={{ etcd_access_endpoint }}" |
|
||||
|
|
||||
# Bind address for secure endpoint |
|
||||
KUBE_API_ADDRESS="--bind-address={{ ip | default(ansible_default_ipv4.address) }}" |
|
||||
|
|
||||
# default admission control policies |
|
||||
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota" |
|
||||
|
|
||||
# RUNTIME API CONFIGURATION (e.g. enable extensions) |
|
||||
KUBE_RUNTIME_CONFIG="{% if kube_api_runtime_config is defined %}{% for conf in kube_api_runtime_config %}--runtime-config={{ conf }} {% endfor %}{% endif %}" |
|
||||
|
|
||||
# TLS CONFIGURATION |
|
||||
KUBE_TLS_CONFIG="--tls_cert_file={{ kube_cert_dir }}/apiserver.pem --tls_private_key_file={{ kube_cert_dir }}/apiserver-key.pem --client_ca_file={{ kube_cert_dir }}/ca.pem" |
|
||||
|
|
||||
# Add you own! |
|
||||
KUBE_API_ARGS="--token_auth_file={{ kube_token_dir }}/known_tokens.csv --basic-auth-file={{ kube_users_dir }}/known_users.csv --service_account_key_file={{ kube_cert_dir }}/apiserver-key.pem --advertise-address={{ ip | default(ansible_default_ipv4.address) }}" |
|
||||
|
|
||||
{% if cloud_provider is defined and cloud_provider == "openstack" %} |
|
||||
KUBELET_CLOUDPROVIDER="--cloud-provider={{ cloud_provider }} --cloud-config={{ kube_config_dir }}/cloud_config" |
|
||||
{% else %} |
|
||||
{# TODO: gce and aws don't need the cloud provider to be set? #} |
|
||||
KUBELET_CLOUDPROVIDER="" |
|
||||
{% endif %} |
|
||||
|
|
||||
{% if ansible_service_mgr in ["sysvinit","upstart"] %} |
|
||||
DAEMON_ARGS="$KUBE_LOGGING $KUBE_LOG_LEVEL $KUBE_ALLOW_PRIV $KUBE_API_PORT $KUBE_API_INSECURE_BIND \ |
|
||||
$KUBE_SERVICE_ADDRESSES $KUBE_ETCD_SERVERS $KUBE_ADMISSION_CONTROL $KUBE_RUNTIME_CONFIG \ |
|
||||
$KUBE_TLS_CONFIG $KUBE_API_ARGS $KUBELET_CLOUDPROVIDER" |
|
||||
{% endif %} |
|
@ -1,30 +0,0 @@ |
|||||
[Unit] |
|
||||
Description=Kubernetes API Server |
|
||||
Documentation=https://github.com/GoogleCloudPlatform/kubernetes |
|
||||
Wants=etcd-proxy.service |
|
||||
After=etcd-proxy.service |
|
||||
|
|
||||
[Service] |
|
||||
EnvironmentFile=/etc/kubernetes/kube-apiserver.env |
|
||||
User=kube |
|
||||
ExecStart={{ bin_dir }}/kube-apiserver \ |
|
||||
$KUBE_LOGTOSTDERR \ |
|
||||
$KUBE_LOG_LEVEL \ |
|
||||
$KUBE_ETCD_SERVERS \ |
|
||||
$KUBE_API_ADDRESS \ |
|
||||
$KUBE_API_PORT \ |
|
||||
$KUBE_API_INSECURE_BIND \ |
|
||||
$KUBELET_PORT \ |
|
||||
$KUBE_ALLOW_PRIV \ |
|
||||
$KUBE_SERVICE_ADDRESSES \ |
|
||||
$KUBE_ADMISSION_CONTROL \ |
|
||||
$KUBE_RUNTIME_CONFIG \ |
|
||||
$KUBE_TLS_CONFIG \ |
|
||||
$KUBE_API_ARGS \ |
|
||||
$KUBELET_CLOUDPROVIDER |
|
||||
Restart=on-failure |
|
||||
Type=notify |
|
||||
LimitNOFILE=65536 |
|
||||
|
|
||||
[Install] |
|
||||
WantedBy=multi-user.target |
|
@ -1,5 +1,5 @@ |
|||||
--- |
--- |
||||
dependencies: |
dependencies: |
||||
- role: download |
|
||||
file: "{{ downloads.kubernetes_kubelet }}" |
|
||||
|
- role: download #For kube_version |
||||
|
file: "{{ downloads.nothing }}" |
||||
- role: kubernetes/secrets |
- role: kubernetes/secrets |
@ -0,0 +1,15 @@ |
|||||
|
#!/bin/bash |
||||
|
/usr/bin/docker run --privileged --rm \ |
||||
|
--net=host --pid=host --name=kubelet \ |
||||
|
-v /etc/cni:/etc/cni:ro \ |
||||
|
-v /opt/cni:/opt/cni:ro \ |
||||
|
-v /etc/kubernetes:/etc/kubernetes \ |
||||
|
-v /sys:/sys \ |
||||
|
-v /dev:/dev \ |
||||
|
-v /var/lib/docker:/var/lib/docker \ |
||||
|
-v /var/run:/var/run \ |
||||
|
-v /var/lib/kubelet:/var/lib/kubelet \ |
||||
|
{{ hyperkube_image_repo }}:{{ hyperkube_image_tag}} \ |
||||
|
nsenter --target=1 --mount --wd=. -- \ |
||||
|
./hyperkube kubelet \ |
||||
|
$@ |
Write
Preview
Loading…
Cancel
Save