Kubeadm
사전 작업
- 최소 필요 조건
- 2 CPU
- 2 GB memory
- 모든 노드에 대한 고유한 호스트 이름, MAC 주소, prodcut_uuid
ip linksudo cat /sys/class/dmi/id/product_uuid
kubeadm-installation.yaml
---
- hosts: all
become: yes
vars:
version: 1.19.15-00
tasks:
- name: Install requirements
apt:
name: "{{ item }}"
state: latest
update_cache: yes
loop: ["apt-transport-https", "ca-certificates", "curl"]
- name: Add kubernetes GPG apt key
apt_key:
url: https://packages.cloud.google.com/apt/doc/apt-key.gpg
keyring: /usr/share/keyrings/kubernetes-archive-keyring.gpg
- name: Add kubernetes repository
apt_repository:
repo: deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg]
https://apt.kubernetes.io/ kubernetes-xenial main
filename: kubernetes
- name: Install kubeadm kubectl kubelet version={{ version }}
apt:
name: "{{ item }}={{ version }}"
update_cache: yes
force: yes
loop: ["kubelet", "kubeadm", "kubectl"]
- name: Disable swap
command: swapoff -a
when: ansible_swaptotal_mb > 0
- name: Remove swapfile from /etc/fstab
replace:
path: /etc/fstab
regexp: '^([^#].*?\sswap\s+sw\s+.*)$'
replace: '# \1'
- name: Add br_netfilter to modules-load.d
lineinfile:
path: /etc/modules-load.d/k8s.conf
line: br_netfilter
mode: 0644
create: yes
- name: modprobe br_netfilter
modprobe:
name: br_netfilter
- name: Add netbridge config ip6
lineinfile:
path: /etc/sysctl.d/k8s.conf
line: "net.bridge.bridge-nf-call-ip6tables = 1"
mode: 0644
create: yes
- name: Add netbridge config ip4
lineinfile:
path: /etc/sysctl.d/k8s.conf
line: "net.bridge.bridge-nf-call-iptables = 1"
mode: 0644
create: yes
- name: Update sysctl
shell: sysctl --system
- name: Add kubectl completion to /home/{{ ansible_user }}/.bashrc
lineinfile:
path: /home/{{ ansible_user }}/.bashrc
line: |
source <(kubectl completion bash)
alias k=kubectl
complete -o default -F __start_kubectl k
mode: 0644
# AWS
- name: Set hostname to aws private dns name
shell: hostnamectl set-hostname $(curl http://169.254.169.254/latest/meta-data/local-hostname)
Control plane node
| 프로토콜 | 방향 | 포트 범위 | 목적 | 사용자 |
|---|---|---|---|---|
| TCP | 인바운드 | 6443* | Kubernetes API 서버 | 모두 |
| TCP | 인바운드 | 2379-2380 | etcd 서버 클라이언트 API | kube-apiserver, etcd |
| TCP |