Compare commits
	
		
			1 Commits
		
	
	
		
			hackerspac
			...
			develop
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 5e04a1bd43 | 
| @@ -1,4 +1,58 @@ | ||||
| --- | ||||
| # ansible-galaxy install -r requirements.yaml | ||||
| - name: Install cri-o | ||||
|   hosts: | ||||
|     - worker9.kube.k-space.ee | ||||
|   vars:  | ||||
|     CRIO_VERSION: "v1.30" | ||||
|   tasks: | ||||
|     - name: ensure curl is installed | ||||
|       ansible.builtin.apt: | ||||
|         name: curl | ||||
|         state: present | ||||
|  | ||||
|     - name: Ensure /etc/apt/keyrings exists | ||||
|       ansible.builtin.file: | ||||
|         path: /etc/apt/keyrings | ||||
|         state: directory | ||||
|  | ||||
|     # TODO: fix | ||||
|     # - name: add k8s repo apt key | ||||
|     #   ansible.builtin.shell: "curl -fsSL https://pkgs.k8s.io/addons:/cri-o:/stable:/{{ CRIO_VERSION }}/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/cri-o-apt-keyring.gpg" | ||||
|      | ||||
|     - name: add k8s repo | ||||
|       ansible.builtin.apt_repository: | ||||
|         repo: "deb [signed-by=/etc/apt/keyrings/cri-o-apt-keyring.gpg] https://pkgs.k8s.io/addons:/cri-o:/stable:/{{ CRIO_VERSION }}/deb/ /"  | ||||
|         state: present | ||||
|         filename: cri-o | ||||
|  | ||||
|     - name: check current crictl version | ||||
|       command: "/usr/bin/crictl --version" | ||||
|       failed_when: false | ||||
|       changed_when: false | ||||
|       register: crictl_version_check | ||||
|  | ||||
|     - name: download crictl | ||||
|       unarchive: | ||||
|         src: "https://github.com/kubernetes-sigs/cri-tools/releases/download/{{ CRIO_VERSION }}/crictl-{{ CRIO_VERSION }}-linux-{{ 'arm64' if ansible_architecture == 'aarch64' else 'amd64' }}.tar.gz" | ||||
|         dest: /tmp | ||||
|         remote_src: true | ||||
|       when: > | ||||
|         crictl_version_check.stdout is not defined or CRIO_VERSION not in crictl_version_check.stdout | ||||
|       register: crictl_download_check | ||||
|  | ||||
|     - name: move crictl binary into place | ||||
|       copy: | ||||
|         src: /tmp/crictl | ||||
|         dest: "/usr/bin/crictl" | ||||
|       when: > | ||||
|         exporter_download_check is changed | ||||
|  | ||||
|     - name: ensure crio is installed | ||||
|       ansible.builtin.apt: | ||||
|         name: cri-o | ||||
|         state: present | ||||
|  | ||||
| - name: Reconfigure Kubernetes worker nodes | ||||
|   hosts: | ||||
|     - storage | ||||
| @@ -40,7 +94,7 @@ | ||||
|       loop: | ||||
|         - kubelet | ||||
|         - kubeadm | ||||
|         - kubectl | ||||
|         - kubectl  | ||||
|  | ||||
|     - name: Download kubectl, kubeadm, kubelet | ||||
|       ansible.builtin.get_url: | ||||
| @@ -52,6 +106,24 @@ | ||||
|         - kubectl | ||||
|         - kubeadm | ||||
|  | ||||
|     - name: Create /etc/systemd/system/kubelet.service | ||||
|       ansible.builtin.copy: | ||||
|         content: | | ||||
|           [Unit] | ||||
|           Description=kubelet: The Kubernetes Node Agent | ||||
|           Documentation=https://kubernetes.io/docs/home/ | ||||
|           Wants=network-online.target | ||||
|           After=network-online.target | ||||
|           [Service] | ||||
|           ExecStart=/usr/bin/kubelet | ||||
|           Restart=always | ||||
|           StartLimitInterval=0 | ||||
|           RestartSec=10 | ||||
|           [Install] | ||||
|           WantedBy=multi-user.target | ||||
|         dest: /etc/systemd/system/kubelet.service | ||||
|       register: kubelet_service         | ||||
|  | ||||
|     - name: Create symlinks for kubectl, kubeadm, kubelet | ||||
|       ansible.builtin.file: | ||||
|         src: "/usr/bin/{{ item }}-{{ KUBERNETES_VERSION }}" | ||||
| @@ -68,42 +140,32 @@ | ||||
|         name: kubelet | ||||
|         enabled: true | ||||
|         state: restarted | ||||
|       when: kubelet.changed | ||||
|         daemon_reload: true | ||||
|       when: kubelet.changed or kubelet_service.changed | ||||
|  | ||||
|     - name: Create /etc/systemd/system/kubelet.service | ||||
|       ansible.builtin.copy: | ||||
|         content: | | ||||
|           [Unit] | ||||
|           Description=kubelet: The Kubernetes Node Agent | ||||
|           Documentation=https://kubernetes.io/docs/home/ | ||||
|           Wants=network-online.target | ||||
|           After=network-online.target | ||||
|           [Service] | ||||
|           ExecStart=/usr/local/bin/kubelet | ||||
|           Restart=always | ||||
|           StartLimitInterval=0 | ||||
|           RestartSec=10 | ||||
|           [Install] | ||||
|           WantedBy=multi-user.target | ||||
|         dest: /etc/systemd/system/kubelet.service | ||||
|     - name: Ensure /var/lib/kubelet exists | ||||
|       ansible.builtin.file: | ||||
|         path: /var/lib/kubelet | ||||
|         state: directory | ||||
|  | ||||
|     - name: Reconfigure shutdownGracePeriod | ||||
|       ansible.builtin.lineinfile: | ||||
|         path: /var/lib/kubelet/config.yaml | ||||
|         regexp: '^shutdownGracePeriod:' | ||||
|         line: 'shutdownGracePeriod: 5m' | ||||
|     - name: Configure kubelet | ||||
|       ansible.builtin.template: | ||||
|         src: kubelet.j2 | ||||
|         dest: /var/lib/kubelet/config.yaml | ||||
|         mode: 644 | ||||
|  | ||||
|     - name: Reconfigure shutdownGracePeriodCriticalPods | ||||
|       ansible.builtin.lineinfile: | ||||
|         path: /var/lib/kubelet/config.yaml | ||||
|         regexp: '^shutdownGracePeriodCriticalPods:' | ||||
|         line: 'shutdownGracePeriodCriticalPods: 5m' | ||||
|     - name: Ensure /etc/systemd/system/kubelet.service.d/ exists | ||||
|       ansible.builtin.file: | ||||
|         path: /etc/systemd/system/kubelet.service.d | ||||
|         state: directory | ||||
|  | ||||
|     - name: Work around unattended-upgrades | ||||
|       ansible.builtin.lineinfile: | ||||
|         path: /lib/systemd/logind.conf.d/unattended-upgrades-logind-maxdelay.conf | ||||
|         regexp: '^InhibitDelayMaxSec=' | ||||
|         line: 'InhibitDelayMaxSec=5m0s' | ||||
|     - name: Configure kubelet service | ||||
|       ansible.builtin.template: | ||||
|         src: 10-kubeadm.j2 | ||||
|         dest: /etc/systemd/system/kubelet.service.d/10-kubeadm.conf | ||||
|         mode: 644 | ||||
|  | ||||
|     # TODO: register new node if needed | ||||
|  | ||||
|     - name: Disable unneccesary services | ||||
|       ignore_errors: true | ||||
| @@ -112,11 +174,17 @@ | ||||
|         - snapd | ||||
|         - bluetooth | ||||
|         - multipathd | ||||
|         - zram | ||||
|       service: | ||||
|         name: "{{item}}" | ||||
|         state: stopped | ||||
|         enabled: no | ||||
|  | ||||
|     - name: Ensure /etc/containers exists | ||||
|       ansible.builtin.file: | ||||
|         path: /etc/containers | ||||
|         state: directory | ||||
|  | ||||
|     - name: Reset /etc/containers/registries.conf | ||||
|       ansible.builtin.copy: | ||||
|         content: "unqualified-search-registries = [\"docker.io\"]\n" | ||||
|   | ||||
							
								
								
									
										12
									
								
								ansible/templates/10-kubeadm.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								ansible/templates/10-kubeadm.j2
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| # Note: This dropin only works with kubeadm and kubelet v1.11+ | ||||
| [Service] | ||||
| Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf" | ||||
| Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml" | ||||
| # This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically | ||||
| EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env | ||||
| # This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use | ||||
| # the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file. | ||||
| EnvironmentFile=-/etc/default/kubelet | ||||
| ExecStart= | ||||
| ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS | ||||
| StandardOutput=null | ||||
							
								
								
									
										43
									
								
								ansible/templates/kubelet.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								ansible/templates/kubelet.j2
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| apiVersion: kubelet.config.k8s.io/v1beta1 | ||||
| authentication: | ||||
|   anonymous: | ||||
|     enabled: false | ||||
|   webhook: | ||||
|     cacheTTL: 0s | ||||
|     enabled: true | ||||
|   x509: | ||||
|     clientCAFile: /etc/kubernetes/pki/ca.crt | ||||
| authorization: | ||||
|   mode: Webhook | ||||
|   webhook: | ||||
|     cacheAuthorizedTTL: 0s | ||||
|     cacheUnauthorizedTTL: 0s | ||||
| cgroupDriver: systemd | ||||
| clusterDNS: | ||||
| - 10.96.0.10 | ||||
| clusterDomain: cluster.local | ||||
| cpuManagerReconcilePeriod: 0s | ||||
| evictionPressureTransitionPeriod: 0s | ||||
| fileCheckFrequency: 0s | ||||
| healthzBindAddress: 127.0.0.1 | ||||
| healthzPort: 10248 | ||||
| httpCheckFrequency: 0s | ||||
| imageMinimumGCAge: 0s | ||||
| kind: KubeletConfiguration | ||||
| logging: | ||||
|   flushFrequency: 0 | ||||
|   options: | ||||
|     json: | ||||
|       infoBufferSize: "0" | ||||
|   verbosity: 0 | ||||
| memorySwap: {} | ||||
| nodeStatusReportFrequency: 0s | ||||
| nodeStatusUpdateFrequency: 0s | ||||
| rotateCertificates: true | ||||
| runtimeRequestTimeout: 0s | ||||
| shutdownGracePeriod: 5m | ||||
| shutdownGracePeriodCriticalPods: 5m | ||||
| staticPodPath: /etc/kubernetes/manifests | ||||
| streamingConnectionIdleTimeout: 0s | ||||
| syncFrequency: 0s | ||||
| volumeStatsAggPeriod: 0s | ||||
		Reference in New Issue
	
	Block a user