ansible로 kubernetes 환경 구축 1
6026 단어 kubernetes우분투리눅스Ansible도커
소개
node에 대한 k8s의 설치 등은 최대한 ansible로 자동화해 가는 ansible의 실행기나 k8s의 마스터는 MAAS 서버의 KVM을 사용한다
목표
ansible로 k8s를 설치할 수 있는 상태까지 구축
환경
MBP OS Sierra
MAAS 서버(192.168.100.152)
k8s-master 서버(KVM:192.168.100.191)
ansible 서버(KVM:192.168.100.192)
ansible Ver.2.5.1
kubernetes Ver.1.10.3
MAAS 서버에 KVM 설치
ansible 서버, k8s 서버를 만들기 위한 KVM을 토대가 되는 MAAS 서버에 인스톨
설치 후 libvirt 그룹에 가입하여 sudo없이도 실행할 수 있습니다.
$ sudo apt install -y qemu-kvm libvirt0 libvirt-bin virt-manager bridge-utils
$ sudo systemctl enable libvirt-bin
$ sudo gpasswd libvirtd -a <username>
KVM을 만드는 것은 데스크톱 환경을 사용하는 것이 더 편리하므로 MAAS 서버에 데스크톱을 설치합니다.
$ sudo apt -y install ubuntu-desktop
데스크탑 설치는 시간이 오래 걸리므로 잠시 기다립니다.
설치가 완료되고 다시 시작하면 자동으로 데스크톱이 표시됩니다.
데스크탑의 터미널에서 KVM을 시작하면 생성 창이 시작됩니다.
$ virt-manager
여기에서 다음 사양의 KVM을 새로 만들려면
ホスト名:ansible
メモリ:4GB
CPU:2
ストレージ:30GB
ホスト名:k8s-master
メモリ:8GB
CPU:4
ストレージ:40GB
ansible 구축
KVM으로 만든 ansible 서버에 실제로 ansible 설치
$ 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
이번에는 home 바로 아래에 ansible 폴더를 작성하여 각종 파일을 관리한다.
$ sudo mkdir ansible
k8s-master에 k8s를 설치하기 위한 playbook 만들기
$ sudo vi k8s-master.yaml
---
- hosts: k8s-master
remote_user: $user名
become: yes
tasks:
- name: Install prerequisites and Docker.io #dockerインストール
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インストール準備
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を消しておかないと失敗する
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. #再起動後もdockerを自動起動させる
service: name=docker enabled=yes
- name: Set kubelet service to start on boot. #再起動後もk8sを自動起動させる
service: name=kubelet enabled=yes
- name: Init k8s-master #k8smの初期化
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: $オーナー
group: docker
mode: 0755
- name: Copy the .kube config
become: yes
file:
src: /home/$ユーザ名/ansible/admin.conf
dest: ~/.kube/config
owner: $オーナー
group: docker
mode: 0600
- name: Export Kubernetes
lineinfile:
path: /home/$ユーザ名/.kube/config
state: absent
regexp: '^%KUBECONFIG'
- name: Apply Flannel $flannelのネットワークを作成
sudo: yes
shell: kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml
다음은 ansible의 hosts 추가 설정
$ sudo vi /etc/ansible/hosts
[master]
k8s-master
$sudo vi/etc/hosts
192.168.100.191 k8s-master
준비가 되면 ansible playbook 실행
python3을 시도하려면 "-e"이후 옵션이 필요합니다.
~/ansible$ sudo ansible-playbook --private-key=id_rsa_common k8s-master.yml -e 'ansible_python_interpreter=/usr/bin/python3'
오류가 없으면 완료
결론
k8s는 버전의 변화가 빠르고, ubuntu도 18.04로 새로운 버전으로 에러가 많이 어떻게 될까 생각했지만 초기화의 성공에 일단 안심했다
집어 넣은 곳
docker 버전
k8s의 초기화를 할 때, 최신의 docker(18.03)를 넣고 있으면, 대응하고 있는 버젼은 17.03까지이므로 다운그레이드하라는 메시지가 나왔기 때문에, 17.03을 다시 넣었다
그러나 실패하는 것은 변하지 않았기 때문에 docker.io를 넣으면 성공했습니다.
kube-dns가 작동하지 않았습니다.
ansible 파일 내에서 실행중인 kubeadm init 명령에서 --pod-network-cidr의 네트워크 표기를 처음 "10.0.0.0"으로 설정했지만 그 설정이라면 패키지에 포함 된 kube-dns가 작동합니다. 하지 않았다
각 페이지를 확인한 결과 이 네트워크는 '10.244.0.0'이 맞을 것 같다는 것을 알았고, 그쪽의 설정으로 명령을 실행한 결과 정상적으로 kube-dns가 작동해 주었다
참고 페이지
Ubuntu 16.04: KVM을 설치하여 가상 머신 시작
Ansible 입문했습니다. 【입문편】
kubernetes 공식 페이지
kubernetes로 Docker 컨테이너 관리 시작
kubeadm에 kubernetes v1.8 + Flannel 설치
Reference
이 문제에 관하여(ansible로 kubernetes 환경 구축 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tsukasa1301/items/d8f7cd1fbf27348a8dbc
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ansible로 k8s를 설치할 수 있는 상태까지 구축
환경
MBP OS Sierra
MAAS 서버(192.168.100.152)
k8s-master 서버(KVM:192.168.100.191)
ansible 서버(KVM:192.168.100.192)
ansible Ver.2.5.1
kubernetes Ver.1.10.3
MAAS 서버에 KVM 설치
ansible 서버, k8s 서버를 만들기 위한 KVM을 토대가 되는 MAAS 서버에 인스톨
설치 후 libvirt 그룹에 가입하여 sudo없이도 실행할 수 있습니다.
$ sudo apt install -y qemu-kvm libvirt0 libvirt-bin virt-manager bridge-utils
$ sudo systemctl enable libvirt-bin
$ sudo gpasswd libvirtd -a <username>
KVM을 만드는 것은 데스크톱 환경을 사용하는 것이 더 편리하므로 MAAS 서버에 데스크톱을 설치합니다.
$ sudo apt -y install ubuntu-desktop
데스크탑 설치는 시간이 오래 걸리므로 잠시 기다립니다.
설치가 완료되고 다시 시작하면 자동으로 데스크톱이 표시됩니다.
데스크탑의 터미널에서 KVM을 시작하면 생성 창이 시작됩니다.
$ virt-manager
여기에서 다음 사양의 KVM을 새로 만들려면
ホスト名:ansible
メモリ:4GB
CPU:2
ストレージ:30GB
ホスト名:k8s-master
メモリ:8GB
CPU:4
ストレージ:40GB
ansible 구축
KVM으로 만든 ansible 서버에 실제로 ansible 설치
$ 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
이번에는 home 바로 아래에 ansible 폴더를 작성하여 각종 파일을 관리한다.
$ sudo mkdir ansible
k8s-master에 k8s를 설치하기 위한 playbook 만들기
$ sudo vi k8s-master.yaml
---
- hosts: k8s-master
remote_user: $user名
become: yes
tasks:
- name: Install prerequisites and Docker.io #dockerインストール
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インストール準備
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を消しておかないと失敗する
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. #再起動後もdockerを自動起動させる
service: name=docker enabled=yes
- name: Set kubelet service to start on boot. #再起動後もk8sを自動起動させる
service: name=kubelet enabled=yes
- name: Init k8s-master #k8smの初期化
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: $オーナー
group: docker
mode: 0755
- name: Copy the .kube config
become: yes
file:
src: /home/$ユーザ名/ansible/admin.conf
dest: ~/.kube/config
owner: $オーナー
group: docker
mode: 0600
- name: Export Kubernetes
lineinfile:
path: /home/$ユーザ名/.kube/config
state: absent
regexp: '^%KUBECONFIG'
- name: Apply Flannel $flannelのネットワークを作成
sudo: yes
shell: kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml
다음은 ansible의 hosts 추가 설정
$ sudo vi /etc/ansible/hosts
[master]
k8s-master
$sudo vi/etc/hosts
192.168.100.191 k8s-master
준비가 되면 ansible playbook 실행
python3을 시도하려면 "-e"이후 옵션이 필요합니다.
~/ansible$ sudo ansible-playbook --private-key=id_rsa_common k8s-master.yml -e 'ansible_python_interpreter=/usr/bin/python3'
오류가 없으면 완료
결론
k8s는 버전의 변화가 빠르고, ubuntu도 18.04로 새로운 버전으로 에러가 많이 어떻게 될까 생각했지만 초기화의 성공에 일단 안심했다
집어 넣은 곳
docker 버전
k8s의 초기화를 할 때, 최신의 docker(18.03)를 넣고 있으면, 대응하고 있는 버젼은 17.03까지이므로 다운그레이드하라는 메시지가 나왔기 때문에, 17.03을 다시 넣었다
그러나 실패하는 것은 변하지 않았기 때문에 docker.io를 넣으면 성공했습니다.
kube-dns가 작동하지 않았습니다.
ansible 파일 내에서 실행중인 kubeadm init 명령에서 --pod-network-cidr의 네트워크 표기를 처음 "10.0.0.0"으로 설정했지만 그 설정이라면 패키지에 포함 된 kube-dns가 작동합니다. 하지 않았다
각 페이지를 확인한 결과 이 네트워크는 '10.244.0.0'이 맞을 것 같다는 것을 알았고, 그쪽의 설정으로 명령을 실행한 결과 정상적으로 kube-dns가 작동해 주었다
참고 페이지
Ubuntu 16.04: KVM을 설치하여 가상 머신 시작
Ansible 입문했습니다. 【입문편】
kubernetes 공식 페이지
kubernetes로 Docker 컨테이너 관리 시작
kubeadm에 kubernetes v1.8 + Flannel 설치
Reference
이 문제에 관하여(ansible로 kubernetes 환경 구축 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tsukasa1301/items/d8f7cd1fbf27348a8dbc
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ansible 서버, k8s 서버를 만들기 위한 KVM을 토대가 되는 MAAS 서버에 인스톨
설치 후 libvirt 그룹에 가입하여 sudo없이도 실행할 수 있습니다.
$ sudo apt install -y qemu-kvm libvirt0 libvirt-bin virt-manager bridge-utils
$ sudo systemctl enable libvirt-bin
$ sudo gpasswd libvirtd -a <username>
KVM을 만드는 것은 데스크톱 환경을 사용하는 것이 더 편리하므로 MAAS 서버에 데스크톱을 설치합니다.
$ sudo apt -y install ubuntu-desktop
데스크탑 설치는 시간이 오래 걸리므로 잠시 기다립니다.
설치가 완료되고 다시 시작하면 자동으로 데스크톱이 표시됩니다.
데스크탑의 터미널에서 KVM을 시작하면 생성 창이 시작됩니다.
$ virt-manager
여기에서 다음 사양의 KVM을 새로 만들려면
ホスト名:ansible
メモリ:4GB
CPU:2
ストレージ:30GB
ホスト名:k8s-master
メモリ:8GB
CPU:4
ストレージ:40GB
ansible 구축
KVM으로 만든 ansible 서버에 실제로 ansible 설치
$ 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
이번에는 home 바로 아래에 ansible 폴더를 작성하여 각종 파일을 관리한다.
$ sudo mkdir ansible
k8s-master에 k8s를 설치하기 위한 playbook 만들기
$ sudo vi k8s-master.yaml
---
- hosts: k8s-master
remote_user: $user名
become: yes
tasks:
- name: Install prerequisites and Docker.io #dockerインストール
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インストール準備
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を消しておかないと失敗する
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. #再起動後もdockerを自動起動させる
service: name=docker enabled=yes
- name: Set kubelet service to start on boot. #再起動後もk8sを自動起動させる
service: name=kubelet enabled=yes
- name: Init k8s-master #k8smの初期化
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: $オーナー
group: docker
mode: 0755
- name: Copy the .kube config
become: yes
file:
src: /home/$ユーザ名/ansible/admin.conf
dest: ~/.kube/config
owner: $オーナー
group: docker
mode: 0600
- name: Export Kubernetes
lineinfile:
path: /home/$ユーザ名/.kube/config
state: absent
regexp: '^%KUBECONFIG'
- name: Apply Flannel $flannelのネットワークを作成
sudo: yes
shell: kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml
다음은 ansible의 hosts 추가 설정
$ sudo vi /etc/ansible/hosts
[master]
k8s-master
$sudo vi/etc/hosts
192.168.100.191 k8s-master
준비가 되면 ansible playbook 실행
python3을 시도하려면 "-e"이후 옵션이 필요합니다.
~/ansible$ sudo ansible-playbook --private-key=id_rsa_common k8s-master.yml -e 'ansible_python_interpreter=/usr/bin/python3'
오류가 없으면 완료
결론
k8s는 버전의 변화가 빠르고, ubuntu도 18.04로 새로운 버전으로 에러가 많이 어떻게 될까 생각했지만 초기화의 성공에 일단 안심했다
집어 넣은 곳
docker 버전
k8s의 초기화를 할 때, 최신의 docker(18.03)를 넣고 있으면, 대응하고 있는 버젼은 17.03까지이므로 다운그레이드하라는 메시지가 나왔기 때문에, 17.03을 다시 넣었다
그러나 실패하는 것은 변하지 않았기 때문에 docker.io를 넣으면 성공했습니다.
kube-dns가 작동하지 않았습니다.
ansible 파일 내에서 실행중인 kubeadm init 명령에서 --pod-network-cidr의 네트워크 표기를 처음 "10.0.0.0"으로 설정했지만 그 설정이라면 패키지에 포함 된 kube-dns가 작동합니다. 하지 않았다
각 페이지를 확인한 결과 이 네트워크는 '10.244.0.0'이 맞을 것 같다는 것을 알았고, 그쪽의 설정으로 명령을 실행한 결과 정상적으로 kube-dns가 작동해 주었다
참고 페이지
Ubuntu 16.04: KVM을 설치하여 가상 머신 시작
Ansible 입문했습니다. 【입문편】
kubernetes 공식 페이지
kubernetes로 Docker 컨테이너 관리 시작
kubeadm에 kubernetes v1.8 + Flannel 설치
Reference
이 문제에 관하여(ansible로 kubernetes 환경 구축 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tsukasa1301/items/d8f7cd1fbf27348a8dbc
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ 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
$ sudo mkdir ansible
$ sudo vi k8s-master.yaml
---
- hosts: k8s-master
remote_user: $user名
become: yes
tasks:
- name: Install prerequisites and Docker.io #dockerインストール
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インストール準備
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を消しておかないと失敗する
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. #再起動後もdockerを自動起動させる
service: name=docker enabled=yes
- name: Set kubelet service to start on boot. #再起動後もk8sを自動起動させる
service: name=kubelet enabled=yes
- name: Init k8s-master #k8smの初期化
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: $オーナー
group: docker
mode: 0755
- name: Copy the .kube config
become: yes
file:
src: /home/$ユーザ名/ansible/admin.conf
dest: ~/.kube/config
owner: $オーナー
group: docker
mode: 0600
- name: Export Kubernetes
lineinfile:
path: /home/$ユーザ名/.kube/config
state: absent
regexp: '^%KUBECONFIG'
- name: Apply Flannel $flannelのネットワークを作成
sudo: yes
shell: kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml
$ sudo vi /etc/ansible/hosts
~/ansible$ sudo ansible-playbook --private-key=id_rsa_common k8s-master.yml -e 'ansible_python_interpreter=/usr/bin/python3'
k8s는 버전의 변화가 빠르고, ubuntu도 18.04로 새로운 버전으로 에러가 많이 어떻게 될까 생각했지만 초기화의 성공에 일단 안심했다
집어 넣은 곳
docker 버전
k8s의 초기화를 할 때, 최신의 docker(18.03)를 넣고 있으면, 대응하고 있는 버젼은 17.03까지이므로 다운그레이드하라는 메시지가 나왔기 때문에, 17.03을 다시 넣었다
그러나 실패하는 것은 변하지 않았기 때문에 docker.io를 넣으면 성공했습니다.
kube-dns가 작동하지 않았습니다.
ansible 파일 내에서 실행중인 kubeadm init 명령에서 --pod-network-cidr의 네트워크 표기를 처음 "10.0.0.0"으로 설정했지만 그 설정이라면 패키지에 포함 된 kube-dns가 작동합니다. 하지 않았다
각 페이지를 확인한 결과 이 네트워크는 '10.244.0.0'이 맞을 것 같다는 것을 알았고, 그쪽의 설정으로 명령을 실행한 결과 정상적으로 kube-dns가 작동해 주었다
참고 페이지
Ubuntu 16.04: KVM을 설치하여 가상 머신 시작
Ansible 입문했습니다. 【입문편】
kubernetes 공식 페이지
kubernetes로 Docker 컨테이너 관리 시작
kubeadm에 kubernetes v1.8 + Flannel 설치
Reference
이 문제에 관하여(ansible로 kubernetes 환경 구축 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tsukasa1301/items/d8f7cd1fbf27348a8dbc
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(ansible로 kubernetes 환경 구축 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tsukasa1301/items/d8f7cd1fbf27348a8dbc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)