Install k8s on node and automate it with ansible as much as possible.
Ansible executor and k8s master use KVM of MAAS server p>
Build up to the state where k8s can be installed with ansible p>
MBP OS Sierra
MAAS server (192.168.100.152)
k8s-master server (KVM: 192.168.100.191)
ansible server (KVM: 192.168.100.192) p>
ansible Ver.2.5.1
kubernetes Ver.1.10.3
Install KVM to create ansible server and k8s server on the base MAAS server
After installation, join the libvirt group so that it can be run without sudo p>
$ sudo apt install -y qemu-kvm libvirt0 libvirt-bin virt-manager bridge-utils
$ sudo systemctl enable libvirt-bin
$ sudo gpasswd libvirtd -a <username>
Install the desktop on the MAAS server as it is more convenient to use the desktop environment to create KVM p>
$ sudo apt -y install ubuntu-desktop
Desktop installation takes time, so wait for a while
The desktop will be displayed automatically when the installation is completed and restarted. P>
Starting KVM in the terminal on the desktop will launch the creation window p>
$ virt-manager
Here, create a new KVM with the following specifications p>
Hostname: ansible
Memory: 4GB
CPU:2
Storage: 30GB
Hostname: k8s-master
Memory: 8GB
CPU:4
Storage: 40GB code> pre>
Building ansible h1>
Actually install ansible on the ansible server created by KVM p>
$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible
This time, create ansible folder directly under home and manage various files p>
$ sudo mkdir ansible
Create a playbook to install k8s on k8s-master p>
$ sudo vi k8s-master.yaml
---
- hosts: k8s-master
remote_user: $ user name
become: yes
tasks:
--name: Install prerequisites and Docker.io #docker install
become: yes
apt: name={{item}} update_cache=yes
with_items:
- apt-transport-https
- ca-certificates
- curl
- software-properties-common
- docker.io
- name: user add to docker group
user: name=gauss group=docker append=yes
--name: Add K8S GPG key # k8s Preparation for installation
apt_key:
url: https://packages.cloud.google.com/apt/doc/apt-key.gpg
- name: Add K8S APT repository
apt_repository:
repo: deb http://apt.kubernetes.io/ kubernetes-xenial main
- name: Install K8S
apt: name={{item}} update_cache=yes
with_items:
- kubelet
- kubeadm
- kubectl
--name: Remove swapfile from / etc / fstab #swap must be deleted or it will fail
mount:
name: swap
fstype: swap
state: absent
- name: Disable swap
command: swapoff -a
when: ansible_swaptotal_mb > 0
--name: Set docker service to start on boot. # Automatically start docker even after rebooting
service: name=docker enabled=yes
--name: Set kubelet service to start on boot. # Automatically start k8s even after rebooting
service: name=kubelet enabled=yes
--name: Init k8s-master # k8sm initialization
become: yes
shell: kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.100.191
- name: Make Directory .kube
file:
path: /.kube
state: directory
owner: $ owner
group: docker
mode: 0755
- name: Copy the .kube config
become: yes
file:
src: /home/$username/ansible/admin.conf
dest: ~/.kube/config
owner: $ owner
group: docker
mode: 0600
- name: Export Kubernetes
lineinfile:
path: /home/$username/.kube/config
state: absent
regexp: '^%KUBECONFIG'
--name: Apply Flannel $ Create a network of flannel
sudo: yes
shell: kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml
Next, add ansible hosts p>
$ sudo vi /etc/ansible/hosts
[master]
k8s-master
$ sudo vi /etc/hosts
192.168.100.191 k8s-master
Run ansible playbook when ready
If you want to use python3, you need the option after "-e" p>
~/ansible$ sudo ansible-playbook --private-key=id_rsa_common k8s-master.yml -e 'ansible_python_interpreter=/usr/bin/python3'
Complete if no error occurs p>
Conclusion h1>
The version of k8s changes quickly, and ubuntu also has a lot of errors with the new version of 18.04, but I was relieved for the success of initialization p>
I stumbled h1>
docker version h3>
When initializing k8s, if the latest docker (18.03) is installed, the supported version is up to 17.03, so I got a message asking me to downgrade, so I re-installed 17.03
However, it still failed, so I added docker.io and it succeeded. P>
kube-dns didn't work h3>
In the kubeadm init command executed in the ansible file, the network notation of --pod-network-cidr was initially set to "10.0.0.0", but with that setting, kube- in the package dns didn't work
When I checked each page, I found that "10.244.0.0" seems to be correct for this network, and when I executed the command with that setting, kube-dns worked normally. P>
Reference page h2>
Ubuntu 16.04 : Install KVM and start virtual machine
Introduction to Ansible. [Introduction]
kubernetes official page
Introduction to Docker container management with kubernetes
Install kubernetes v1.8 + Flannel with kubeadm p>
Recommended Posts