Move kubernetes version to global_config.

Added update actions for kubelet_master and kubelet resources, they will
download demanded version if available and restart.

Updated README with k8s version change instructions.
This commit is contained in:
Maciej Kwiek 2016-04-14 18:25:55 +02:00
parent 3013852e56
commit 1d71eba6a6
12 changed files with 69 additions and 12 deletions

View File

@ -24,3 +24,12 @@ Vagrant setup:
14. watch solar orch report
15. vagrant ssh solar-dev1
16. kubectl get pods (it works!)
Kubernetes version change:
1. log in to solar master node
2. solar resource update kube-config k8s_version=v1.2.1
3. solar changes stage
4. solar changes process
5. solar orch run-once
6. watch solar orch report
7. After a while, kubernetes will restart in desired version

View File

@ -16,6 +16,3 @@ kube_slaves:
- 10.0.0.5
- 10.0.0.6
- 10.0.0.7
- 10.0.0.8
- 10.0.0.9
- 10.0.0.10

View File

@ -19,3 +19,6 @@ input:
service_cluster_ip_range:
schema: str!
value: 10.254.0.0/16
k8s_version:
schema: str!
value: v1.2.2

View File

@ -2,7 +2,7 @@
become: yes
tasks:
- get_url:
url: http://storage.googleapis.com/kubernetes-release/release/v1.2.2/bin/linux/amd64/kubelet
url: http://storage.googleapis.com/kubernetes-release/release/{{k8s_version}}/bin/linux/amd64/kubelet
dest: /usr/bin/kubelet
- shell: chmod +x /usr/bin/kubelet
- file: name=/etc/kubernetes/manifests state=directory

View File

@ -0,0 +1,16 @@
- hosts: [{{host}}]
become: yes
tasks:
- get_url:
url: http://storage.googleapis.com/kubernetes-release/release/{{k8s_version}}/bin/linux/amd64/kubelet
dest: /usr/bin/kubelet
- shell: chmod +x /usr/bin/kubelet
- file: name=/etc/kubernetes/manifests state=directory
- template:
src: {{templates_dir}}/kubelet.service
dest: /etc/systemd/system/kubelet.service
- template:
src: {{templates_dir}}/kube-proxy.manifest
dest: /etc/kubernetes/manifests/kube-proxy.manifest
- shell: systemctl daemon-reload
- service: name=kubelet state=restarted enabled=yes

View File

@ -24,3 +24,6 @@ input:
etcd_authority:
schema: str
value: ""
k8s_version:
schema: str!
value: ""

View File

@ -6,7 +6,7 @@ spec:
hostNetwork: true
containers:
- name: kube-proxy
image: gcr.io/google_containers/hyperkube:v1.2.2
image: gcr.io/google_containers/hyperkube:{{k8s_version}}
command:
- /hyperkube
- proxy

View File

@ -2,10 +2,10 @@
become: yes
tasks:
- get_url:
url: http://storage.googleapis.com/kubernetes-release/release/v1.2.2/bin/linux/amd64/kubectl
url: http://storage.googleapis.com/kubernetes-release/release/{{k8s_version}}/bin/linux/amd64/kubectl
dest: /usr/bin/kubectl
- get_url:
url: http://storage.googleapis.com/kubernetes-release/release/v1.2.2/bin/linux/amd64/kubelet
url: http://storage.googleapis.com/kubernetes-release/release/{{k8s_version}}/bin/linux/amd64/kubelet
dest: /usr/bin/kubelet
- shell: chmod +x /usr/bin/kubectl
- shell: chmod +x /usr/bin/kubelet

View File

@ -0,0 +1,24 @@
- hosts: [{{host}}]
become: yes
tasks:
- get_url:
url: http://storage.googleapis.com/kubernetes-release/release/{{k8s_version}}/bin/linux/amd64/kubectl
dest: /usr/bin/kubectl
- get_url:
url: http://storage.googleapis.com/kubernetes-release/release/{{k8s_version}}/bin/linux/amd64/kubelet
dest: /usr/bin/kubelet
- shell: chmod +x /usr/bin/kubectl
- shell: chmod +x /usr/bin/kubelet
- file: name=/etc/kubernetes/manifests state=directory
- template:
src: {{templates_dir}}/kubelet.service
dest: /etc/systemd/system/kubelet.service
- template:
src: {{templates_dir}}/kubelet_master.manifest
dest: /etc/kubernetes/manifests/kubelet_master.manifest
- service: name=kubelet state=restarted enabled=yes
- wait_for: host={{master_host}} port={{master_port}} connect_timeout=5 state=started timeout=60
- shell: kubectl get namespaces
register: kube_namespaces
- shell: kubectl create namespace kube-system
when: "'kube-system' not in kube_namespaces.stdout"

View File

@ -31,3 +31,6 @@ input:
admission_control:
schema: str!
value: NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota
k8s_version:
schema: str!
value: ""

View File

@ -38,7 +38,7 @@ spec:
name: "etcd-datadir"
- name: kube-apiserver
image: gcr.io/google_containers/hyperkube:v1.2.2
image: gcr.io/google_containers/hyperkube:{{k8s_version}}
command:
- /hyperkube
- apiserver
@ -59,7 +59,7 @@ spec:
name: "var-run-kubernetes"
- name: kube-controller-manager
image: gcr.io/google_containers/hyperkube:v1.2.2
image: gcr.io/google_containers/hyperkube:{{k8s_version}}
command:
- /hyperkube
- controller-manager
@ -73,7 +73,7 @@ spec:
timeoutSeconds: 1
- name: kube-scheduler
image: gcr.io/google_containers/hyperkube:v1.2.2
image: gcr.io/google_containers/hyperkube:{{k8s_version}}
command:
- /hyperkube
- scheduler
@ -87,7 +87,7 @@ spec:
timeoutSeconds: 1
- name: kube-proxy
image: gcr.io/google_containers/hyperkube:v1.2.2
image: gcr.io/google_containers/hyperkube:{{k8s_version}}
command:
- /hyperkube
- proxy

View File

@ -50,6 +50,7 @@ def setup_master(config, user_config):
kubelet = cr.create('kubelet-master',
'k8s/kubelet_master')['kubelet-master']
config.connect(kubelet, {'k8s_version': 'k8s_version'})
calico = cr.create('calico-master', 'k8s/calico_master',
{'options': "--nat-outgoing --ipip"})['calico-master']
@ -141,7 +142,8 @@ def setup_slave_node(config, user_config, kubernetes_master, calico_master,
kube_node.connect(kubelet, {'name': 'kubelet_hostname'})
kubernetes_master.connect(kubelet, {'master_address': 'master_api'})
config.connect(kubelet, {'cluster_domain': 'cluster_domain',
'cluster_dns': 'cluster_dns'})
'cluster_dns': 'cluster_dns',
'k8s_version': 'k8s_version'})
add_event(Dep(docker.name, 'run', 'success', calico_node.name, 'run'))
add_event(Dep(docker.name, 'run', 'success', kubelet.name, 'run'))