diff --git a/ansible/group_vars/all/oas.yml b/ansible/group_vars/all/oas.yml
index aa5423469c5510f3ddc06801af17e01b4566a54e..ce3978d88e120a37d421a1045e1f0365b9997bc0 100644
--- a/ansible/group_vars/all/oas.yml
+++ b/ansible/group_vars/all/oas.yml
@@ -2,8 +2,6 @@
 configuration_directory: "/etc/OpenAppStack"
 # Directory to store generated configuration and cluster state.
 data_directory: "/var/lib/OpenAppStack"
-# Directory to store logs.
-log_directory: "/var/log/OpenAppStack"
 
 # Use python3 on cluster nodes for ansible
 ansible_python_interpreter: "/usr/bin/env python3"
@@ -63,10 +61,10 @@ rke:
   # `ansible/group_vars/all/settings.yml.example`
   #
   # https://github.com/rancher/rke/releases
-  version: '0.3.2'
+  version: '1.1.1'
   # Also possible:
-  # checksum: 'sha256:https://github.com/rancher/rke/releases/download/v0.2.4/sha256sum.txt'
-  checksum: 'sha256:96b366fe1faaa668b3e47f5b6d4bfd6334224e33c21e55dc79ec96f85e0e48e8'
+  # checksum: 'sha256:https://github.com/rancher/rke/releases/download/v1.1.1/sha256sum.txt'
+  checksum: 'sha256:8b28540ddd58b9c2eebfbf0c59a512205bf96ef7368853504e8cf76e524e7197'
 
 cert_manager:
   # cert-manager requires custom resource definitions applied before installing
diff --git a/ansible/roles/additional_config/files/etc/logrotate.d/OpenAppStack b/ansible/roles/additional_config/files/etc/logrotate.d/OpenAppStack
deleted file mode 100644
index 37e4835f310a50b7a97a9ed1d88e853020782931..0000000000000000000000000000000000000000
--- a/ansible/roles/additional_config/files/etc/logrotate.d/OpenAppStack
+++ /dev/null
@@ -1,5 +0,0 @@
-/var/log/OpenAppStack/ {
-  weekly
-  rotate 4
-  create
-}
diff --git a/ansible/roles/additional_config/tasks/logging.yml b/ansible/roles/additional_config/tasks/logging.yml
deleted file mode 100644
index 1be970769b00d9c938b1927be0b78e100f45c2f6..0000000000000000000000000000000000000000
--- a/ansible/roles/additional_config/tasks/logging.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-- name: Logrotate config for OAS logs
-  copy:
-    src: etc/logrotate.d/OpenAppStack
-    dest: /etc/logrotate.d/
-    mode: '0644'
diff --git a/ansible/roles/additional_config/tasks/main.yml b/ansible/roles/additional_config/tasks/main.yml
index cac2f29afff1681416bb519b763d5b35d0da6521..c1ba30e5f842c4b78019646d597f21872fefe399 100644
--- a/ansible/roles/additional_config/tasks/main.yml
+++ b/ansible/roles/additional_config/tasks/main.yml
@@ -1,3 +1,2 @@
 ---
-- import_tasks: logging.yml
 - import_tasks: dns.yml
diff --git a/ansible/roles/configure/handlers/main.yml b/ansible/roles/configure/handlers/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..55ed86310974c7ed473e9470ef1c51ff3aac78e4
--- /dev/null
+++ b/ansible/roles/configure/handlers/main.yml
@@ -0,0 +1,5 @@
+---
+- name: restart-journald
+  service:
+    name: systemd-journald
+    state: restarted
diff --git a/ansible/roles/configure/tasks/journald.yml b/ansible/roles/configure/tasks/journald.yml
new file mode 100644
index 0000000000000000000000000000000000000000..f7164bd8b8b9087a0ee74f0f5deb3d88d4c94bc7
--- /dev/null
+++ b/ansible/roles/configure/tasks/journald.yml
@@ -0,0 +1,15 @@
+---
+
+- name: Ensure journald directories
+  file:
+    path: '{{ item }}'
+    state: directory
+  with_items:
+    - /var/log/journal
+    - /etc/systemd/journald.conf.d
+
+- name: Configure journald size limits
+  template:
+    dest: /etc/systemd/journald.conf.d/size-limits.conf
+    src: journald.conf
+  notify: restart-journald
diff --git a/ansible/roles/configure/tasks/main.yml b/ansible/roles/configure/tasks/main.yml
index 71d9a5e49c957adc463c4805c3700180a5b92489..3815107ec6c43f4bb01cd63a5f4e2d0aff8b1cc6 100644
--- a/ansible/roles/configure/tasks/main.yml
+++ b/ansible/roles/configure/tasks/main.yml
@@ -1,5 +1,8 @@
 ---
 
+- name: Configure journald
+  import_tasks: journald.yml
+
 - name: Update apt packages cache and install needed packages
   # apt-transport-https is needed for docker apt repo
   # curl and git is needed for helm plugin install
@@ -20,6 +23,19 @@
     cache_valid_time: 86400
     update_cache: yes
 
+- name: Remove unwanted packages
+  tags:
+    - package
+  package:
+    state: absent
+    name: "{{ item }}"
+  with_items:
+    # In order to save disk space we remove traditional syslog packages
+    # and only rely on systemd journald
+    # see https://open.greenhost.net/openappstack/openappstack/-/issues/575
+    - rsyslog
+    - syslog-ng
+
 - name: Install python deps
   tags:
     - package
@@ -57,13 +73,6 @@
     src: /snap/bin/kubectl
     dest: /usr/local/bin/kubectl
 
-- name: Remove old helm snap installation
-  tags:
-    - helm
-  command: snap remove helm
-  args:
-    removes: /snap/bin/helm
-
 - name: Get current helm version
   tags:
     - helm
diff --git a/ansible/roles/configure/templates/journald.conf b/ansible/roles/configure/templates/journald.conf
new file mode 100644
index 0000000000000000000000000000000000000000..2558b5addaf7f1506ce8ffa168989bd9521a4d24
--- /dev/null
+++ b/ansible/roles/configure/templates/journald.conf
@@ -0,0 +1,7 @@
+# https://www.freedesktop.org/software/systemd/man/journald.conf.html
+[Journal]
+Storage=persistent
+SystemMaxUse=400M
+SystemMaxFileSize=30M
+RuntimeMaxUse=250M
+RuntimeMaxFileSize=30M
diff --git a/ansible/roles/finalize/tasks/sync_cluster_data.yml b/ansible/roles/finalize/tasks/sync_cluster_data.yml
index 2e476c159f6710770486c9069066b0e4203a7cdf..65a135a32644274e307782f531f0ed08f294afd2 100644
--- a/ansible/roles/finalize/tasks/sync_cluster_data.yml
+++ b/ansible/roles/finalize/tasks/sync_cluster_data.yml
@@ -11,7 +11,5 @@
   loop:
     - src: "{{ data_directory }}/rke/kube_config_cluster.yml"
       dest: "{{ cluster_dir }}/secrets/kube_config_cluster.yml"
-    - src: "{{ log_directory }}/rke.log"
-      dest: "{{ cluster_dir }}/cluster_data/rke.log"
     - src: "{{ data_directory }}/rke/cluster.yml"
       dest: "{{ cluster_dir }}/cluster_data/rke_cluster.yml"
diff --git a/ansible/roles/get_control/tasks/main.yml b/ansible/roles/get_control/tasks/main.yml
index 61adc2e3527efe97a071b0b83714ea3f5ee68fda..92dae4fd2a2b96be6027ebbe2bcf5e867e9cf53e 100644
--- a/ansible/roles/get_control/tasks/main.yml
+++ b/ansible/roles/get_control/tasks/main.yml
@@ -10,7 +10,6 @@
     - "{{ data_directory }}"
     - "{{ data_directory }}/ssh"
     - "{{ data_directory }}/rke"
-    - "{{ log_directory }}"
     - "/usr/local/share/bash-completion/completions"
 
 - name: Create directory for values
diff --git a/ansible/roles/rke_configuration/files/cluster-defaults.yml b/ansible/roles/rke_configuration/files/cluster-defaults.yml
index 8a0b60df7691ea85495f10503fb6b68633273221..b80dfef9627016c0285beda2fccd15f034ea370d 100644
--- a/ansible/roles/rke_configuration/files/cluster-defaults.yml
+++ b/ansible/roles/rke_configuration/files/cluster-defaults.yml
@@ -26,7 +26,9 @@ ingress:
   provider: none
 # If `kubernetes_version` is not set, the default kubernetes version for the
 # specified rke version in `ansible/group_vars/all/oas.yml` is used.
-# kubernetes_version: ''
+# Currently pinned to newest 1.15 because of the problem described in this
+# comment: https://github.com/rancher/rancher/issues/14836#issuecomment-612590209
+kubernetes_version: 'v1.15.11-rancher1-3'
 monitoring:
   options: {}
   provider: ''
diff --git a/ansible/roles/setup/tasks/rke.yml b/ansible/roles/setup/tasks/rke.yml
index 8ea84379465b7c5f6d5518332d3df94933d21613..447c94ee25a83d09d5a746efb4c38544fd2ae092 100644
--- a/ansible/roles/setup/tasks/rke.yml
+++ b/ansible/roles/setup/tasks/rke.yml
@@ -11,7 +11,7 @@
 - name: Build Cluster
   tags:
     - rke
-  shell: /usr/local/bin/rke up --config={{ data_directory }}/rke/cluster.yml >> {{ log_directory }}/rke.log
+  shell: /usr/local/bin/rke up --config={{ data_directory }}/rke/cluster.yml | systemd-cat -t rke
 
 - name: Ensure /root/.kube directory
   tags: