kind (Kubernetes in Docker)를 PXE 부팅 한 Fedora CoreOS에서
5835 단어 CoreOSFedora_CoreOS킨드pxeboot
예를 들어 Kubernetes의 작업자 노드는 처음부터 설정, 응용 프로그램도 다시 배포하는 것으로 imutable 구성으로 할 수 없거나, 또한 작업자 노드는 CoreOS 사용할 수 있으면 간단한 구성으로 할 수 없는지,라고 검증하고 있습니다 (도상)
그리고 재기동하는 것만으로 깨끗한 Docker 환경으로서 사용할 수 있는 수수함에 편리할지도.
이번은 간편하게 Kubernetes를 검증하는 목적으로, ( 이전 이쪽의 내용으로 만든 PXE 부트 환경에서 ) 1대의 CoreOS를 PXE 부트해, kind 셋업,
마스터와 워커 노드를 1대의 서버에 혼재하는 형태로 kubernetes의 검증 환경을 만들어 보았습니다.
시작 흐름
Kubernetes in Docker (kind) 설정
CoreOS를 시작하는 데 필요한 ignition 파일을 만듭니다.
HDD 마운트
처음, imutable, 서버측에 설정을 가지지 않는 구성이라면 모두 온메모리로 동작할 수 있는 것은?라고 생각했습니다만,
집 서버의 메모리가 4GB 밖에 없고, Docker 이미지의 사이즈가 부족해, tmpfs의 영역이 가득 차 버렸다...
이 때문에 어쩔 수 없이 HDD를 마운트하고 있습니다.
마운트 방법에는 두 가지가 있습니다.
1. CoreOS ignition filesystems에서 수행하는 방법
2. systemd mount를 사용하는 방법
근처가있을 것 같고,
이번에는 systemd mount를 사용했습니다.
HDD 볼륨을 초기화하는 경우 ignition의 filesystems의 wipe_filesystem 등과 조합하면 편리해
(이번 HDD는 검증과는 별도로 스토리지의 백업 용도로도 사용하고 있어 지울 수 없었기 때문에 systemd의 mound, bind로 마운트하고 있습니다)
그러나 systemd에서의 마운트, /var/mnt
에 마운트하는 경우, 유닛명은 var-mnt.mount
로 해야 합니다.
마운트는 docker가 시작되기 전에 이루어져야 합니다. 그래서 systemd의 유닛의 기동 순서를 아래와 같이 했습니다.
CoreOS를 시작하는 데 필요한 ignition 파일을 만듭니다.
HDD 마운트
처음, imutable, 서버측에 설정을 가지지 않는 구성이라면 모두 온메모리로 동작할 수 있는 것은?라고 생각했습니다만,
집 서버의 메모리가 4GB 밖에 없고, Docker 이미지의 사이즈가 부족해, tmpfs의 영역이 가득 차 버렸다...
이 때문에 어쩔 수 없이 HDD를 마운트하고 있습니다.
마운트 방법에는 두 가지가 있습니다.
1. CoreOS ignition filesystems에서 수행하는 방법
2. systemd mount를 사용하는 방법
근처가있을 것 같고,
이번에는 systemd mount를 사용했습니다.
HDD 볼륨을 초기화하는 경우 ignition의 filesystems의 wipe_filesystem 등과 조합하면 편리해
(이번 HDD는 검증과는 별도로 스토리지의 백업 용도로도 사용하고 있어 지울 수 없었기 때문에 systemd의 mound, bind로 마운트하고 있습니다)
그러나 systemd에서의 마운트,
/var/mnt
에 마운트하는 경우, 유닛명은 var-mnt.mount
로 해야 합니다.마운트는 docker가 시작되기 전에 이루어져야 합니다. 그래서 systemd의 유닛의 기동 순서를 아래와 같이 했습니다.
kind 설정
2 개소에서 설정하고 있습니다.
1. 파일의 설치는 ignition 파일내의
storage.files
로 실시한다2. CLI에서 실행하고 싶은 내용은, 일단, bash 스크립트로 기술
storage.files
로 설치한 다음, systemd.units
내에서 실행하도록 했습니다.2에서 처음에는 systemd.units 내에 직접 스크립트를 작성했습니다.
(ExecStart=에서의 처리를 점점 계속해서 백슬래시로 개행해 나가는 형태)
다만 이 경우, 커멘드 치환이 어려울 것 같았기 때문에, 다른 파일에 잘라내기로 했습니다.
생성 된 ingnition 파일
시도하면 이니셔티브에 의한 설정이
contents: |
, contents: |
[Unit]
いろんな処理
으로 ignition내에 여러가지 쓸 수 있으므로, 전망하기 쉬울지도.
variant: fcos
version: 1.0.0
passwd:
users:
- name: core
groups:
- adm
- sudo
ssh_authorized_keys:
- ssh-rsa AAhimituv [email protected]
systemd:
units:
- name: var-mnt.mount
enabled: true
contents: |
[Unit]
Description=disk mount
[Mount]
What=/dev/backup/export
Where=/var/mnt
Type=xfs
Options=defaults
[Install]
WantedBy = multi-user.target
- name: var-lib-docker.mount
enabled: true
contents: |
[Unit]
Description=symbolick link for docker strage
After=var-mnt.mount
RequiresMountsFor=/var/mnt
Before=docker.service
[Mount]
What=/var/mnt/docker
Where=/var/lib/docker
Type=none
Options=bind
[Install]
WantedBy=multi-user.target
- name: shell.service
enabled: true
contents: |
[Unit]
Description=Alpine CLI Shell
After=NetworkManager-wait-online.service
[Service]
Type=simple
ExecStart=/usr/bin/podman run --rm --privileged -v /:/host -ti alpine:latest /bin/ash
[Install]
WantedBy=multi-user.target
- name: kubernetes_setup.service
enabled: true
contents: |
[Unit]
Description=kubernetes setup
After=network.target var-mnt.mount
[Service]
Type=oneshot
WorkingDirectory=/var/home/core
ExecStart=/var/home/core/kind_setup.bash
[Install]
WantedBy=multi-user.target
storage:
files:
- path: /var/home/core/kind.conf
mode: 0644
contents:
inline: |
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- path: /usr/local/bin/kind
mode: 0755
contents:
source: https://kind.sigs.k8s.io/dl/v0.7.0/kind-Linux-amd64
- path: /etc/sysctl.d/k8s.conf
mode: 0644
contents:
mode: 0644
contents:
inline: |
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
- path: /var/home/core/kind_setup.bash
mode: 0744
contents:
inline: |
#!/bin/bash
sudo systemctl enable docker.service
# 一般ユーザでもdockerを操作できるように
sudo usermod -a -G docker core
# kubectl のダウンロード
version=`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`
curl -LO https://storage.googleapis.com/kubernetes-release/release/${version}/bin/linux/amd64/kubectl
mv ./kubectl /usr/local/bin/
chmod 755 /usr/local/bin/kubectl
# kind でクラスターを作成
kind create cluster --config /var/home/core/kind.conf
# 初回起動時は ~/.kube をrootの所有権で作成するので、coreユーザに変更
chown -R core:core /var/home/core/.kube
Reference
이 문제에 관하여(kind (Kubernetes in Docker)를 PXE 부팅 한 Fedora CoreOS에서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tin-machine/items/42cd22190d173642c3f6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)