작성
·
1K
1
혹시 맥 M시리즈에서 쿠버네티스 로컬구성하는 방법에 대해서는 계획이 없으신가요 ??
강의를 듣고있는데 실습이 쉽지 않아서요
답변 8
0
안녕하세요.
저도 주말에 m시리즈를 구입해서 직접 해봤습니다.
정말 쉽지 않네요. 고생 많으셨습니다.
일단 해당 강의에는 이번 주말까지 업데이트 할 예정이고,
일단 제 다른 강의 [쿠버네티스 어나더 클래스] 의 실습 환경에 m시리즈에서 쿠버네티스 클러스터를 생성하는 방법을 올려놨습니다.
https://cafe.naver.com/kubeops/91
해당 강의는 [대세는 쿠버네티스]강의와는 달리 k8s-master만 설치하기 때문에 좀 다르긴 한데
설치 내용을 잘 보시면 감이 오실거예요
해당 강의도 비슷한 형태로 업데이트 될 예정입니다.
0
아니면 Vagrant는 버리고, Virtualbox에서 직접 이미지를 띄어보는 것도 좋을 것 같네요.
아래는 Rocky 8 리눅스 OS 이미지입니다.
https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.8-x86_64-minimal.iso
일단 x86_64로 해보시고 안되면, ARM64 용으로 해보시고요.
https://download.rockylinux.org/pub/rocky/8/isos/aarch64/Rocky-8.8-aarch64-minimal.iso
Virtualbox
1. [VM 생성 1단계] 머신 > 새로 만들기 클릭
2. [VM 생성 1단계] 이름 : k8s-master, 종류: Linux, 버전: Other Linux(64-bit)
3. [VM 생성 2단계] 메모리 : 4096 MB
4. [VM 생성 3단계] 하드디스크 : 지금 새 가상 하드 디스크 만들기 (VDI:VirtualBox 디크스 이미지, 동적할당, 150GB)
5. [VM 생성 후 시스템 설정] 프로세서 개수 : CPU 4개
6. [VM 생성 후 저장소 설정] 컨트롤러:IDE 하위에 있는 광학드라이브 클릭 > 이미지 선택 후 확인
7. [VM 생성 후 네트워크 설정] VM 선택 후 설정 버튼 클릭 > 네트워크 > 어댑터 1 탭 > 다음에 연결됨 [어댑터에 브리지] 선택
8. 시작
OS설치
1. Test this media & install RockyOS 8
2. Language : 한국어
3. Disk 설정 [시스템 > 설치 대상]
- [기타 저장소 옵션 > 파티션 설정] 파티션을 설정합니다. [체크] 후 [완료]
- 새로운 RockyOS 설치 > 여기를 클릭하여 자동으로 생성합니다. [클릭]
- /home [클릭] 후 용량 5.12 GiB로 변경 [설정 업데이트 클릭]
- / [클릭] 후 140 GiB 변경 후 [설정 업데이트 클릭]
- [완료], [변경 사항 적용]
4. 네트워크 설정 [시스템 > 네트워크 및 호스트명 설정]
- 호스트 이름: k8s-master [적용]
- 이더넷 [설정]
[일반] 탭
- 사용 가능하면 자동으로 이 네트워크에 연결 [체크]
[IPv4 설정] 탭
- 방식: 수동으로 선택,
- [Add] -> 주소: 192.168.56.30, 넷마스크 : 255.255.255.0, 게이트웨이: 192.168.56.1, DNS 서버 : 8.8.8.8
- [저장][완료]
5. 설치시작
6. [설정 > 사용자 설정] ROOT 암호 설정
7. 설치 완료 후 [재부팅]
0
vagrant를 최신 버전으로 가보는 건 어떨까요?
다른건 다시 그대로 하고요.
https://releases.hashicorp.com/vagrant/2.4.0/vagrant_2.4.0_darwin_arm64.dmg
virtualbox의 경우 지금 설치한 버전이 최신 버전입니다.
다른 수강생 중에 제 실습 가이드를 M1 Mac에서 설치하신 분이 계시네요.
https://freedeveloper.tistory.com/557
이분께 설치한 Vagrant와 Virtualbox 버전을 문의 드렸습니다.
==> k8s-master: Booting VM...
There was an error while executing VBoxManage
, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.
Command: ["startvm", "31d86110-29be-4528-a328-c90d702ea899", "--type", "headless"]
Stderr: VBoxManage: error: Error: vmnet_start_interface returned 1001 (VERR_INVALID_PARAMETER).
VBoxManage: error: Failed to attach the network LUN (VERR_INVALID_PARAMETER)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component ConsoleWrap, interface IConsole
이건 이에러가 발생하네요
쉽지 않군요 ㅎ
virtualbox 확장팩을 설치해보라는 얘기도 있습니다.
https://forums.virtualbox.org/viewtopic.php?t=107493
확장팩 URL
0
{
"name": "rockylinux/8",
"description": "Rocky Linux 8 7.0.0 Bugfix",
"versions": [
{
"version": "7.0.1-20230215.0",
"providers": [
{
"name": "parallels",
"url": "http://dl.rockylinux.org/pub/rocky/8/images/arm64/Rocky-8-Vagrant-Vbox-8.8-20230518.0.arm64.box"
}
]
}
]
}
0
arm으로 변경했는데
An error occurred while executing multiple actions in parallel.
Any errors that occurred are shown below.
An error occurred while executing the action on the 'k8s-master'
machine. Please handle this error then try again:
The box you're attempting to add doesn't support the provider
you requested. Please find an alternate box or use an alternate
provider. Double-check your requested provider to verify you didn't
simply misspell it.
If you're adding a box from HashiCorp's Vagrant Cloud, make sure the box is
released.
Name: rockylinux/8
Address: https://vagrantcloud.com/api/v2/vagrant/rockylinux/8
Requested provider: parallels (arm64)
An error occurred while executing the action on the 'k8s-node1'
machine. Please handle this error then try again:
The box you're attempting to add doesn't support the provider
you requested. Please find an alternate box or use an alternate
provider. Double-check your requested provider to verify you didn't
simply misspell it.
If you're adding a box from HashiCorp's Vagrant Cloud, make sure the box is
released.
Name: rockylinux/8
Address: https://vagrantcloud.com/api/v2/vagrant/rockylinux/8
Requested provider: parallels (arm64)
An error occurred while executing the action on the 'k8s-node2'
machine. Please handle this error then try again:
The box you're attempting to add doesn't support the provider
you requested. Please find an alternate box or use an alternate
provider. Double-check your requested provider to verify you didn't
simply misspell it.
If you're adding a box from HashiCorp's Vagrant Cloud, make sure the box is
released.
Name: rockylinux/8
Address: https://vagrantcloud.com/api/v2/vagrant/rockylinux/8
Requested provider: parallels (arm64)
지원을 안하는거 같습니다..
0
이 게시판이 뭔가 질문하고 답변하는 흐름을 이어가는 데 좀 자연스럽지가 않은 것 같아 아쉽네요.
일단 지금 말씀하신 부분을 보니까. 설치되는 OS가 AMD용이 아니네요.
그래서 아래 rockylinux-repo.json 에서 url 부분에 arch64 = adm64 OS를 설치해 보는게 어떨까요?
http://dl.rockylinux.org/pub/rocky/8/images/aarch64/Rocky-8-Vagrant-Vbox-8.8-20230518.0.aarch64.box
그럼 밑에 설치 스크립트에 x86_64 부분도 다 바껴야 될 텐데, 일단 진행이 되면 그때 생각해봐야겠네요.
parallels 에서도 위 URL은 마찬가지 입니다.
0
혹시 찾아보다 안되서 패러럴즈 프로버전 설치해서 해보려고하고있는데
json파일에{
"name": "rockylinux/8",
"description": "Rocky Linux 8 7.0.0 Bugfix",
"versions": [
{
"version": "7.0.1-20230215.0",
"providers": [
{
"name": "parallels",
"url": "여기에 해당 Parallels box의 URL을 입력해야되는데 이 URL 이 정확하게 뭔지 모르겠어서요.."
}
]
}
]
}
그리고 Vagrantfile은 이렇게 변경했습니다.# Node 개수 정의
NodeCnt = 2
Vagrant.configure("2") do |config|
config.vm.box = "rockylinux/8"
config.disksize.size = "30GB"
config.vbguest.auto_update = false
config.vm.synced_folder "./", "/vagrant", disabled: true
config.vm.provision :shell, privileged: true, inline: $install_common_tools
# Master 노드 설정
config.vm.define "k8s-master" do |master|
master.vm.hostname = "k8s-master"
master.vm.network "private_network", ip: "192.168.56.30"
master.vm.provider :parallels do |prl|
prl.memory = 5120
prl.cpus = 4
# Parallels에 필요한 추가 설정
end
master.vm.provision :shell, privileged: true, inline: $provision_master_node
end
# Worker 노드들 설정
(1..NodeCnt).each do |i|
config.vm.define "k8s-node#{i}" do |node|
node.vm.hostname = "k8s-node#{i}"
node.vm.network "private_network", ip: "192.168.56.#{i + 30}"
node.vm.provider :parallels do |prl|
prl.memory = 3096
prl.cpus = 2
# Parallels에 필요한 추가 설정
end
node.vm.provision :shell, privileged: true, inline: $install_common_tools
end
end
end
$install_common_tools = <<-SHELL
# 여기에 공통 설치 스크립트 내용
SHELL
$provision_master_node = <<-SHELL
# 여기에 마스터 노드 프로비저닝 스크립트 내용
SHELL
$install_common_tools = <<-SHELL
echo '======== [4] Rocky Linux 기본 설정 ========'
echo '======== [4-1] 패키지 업데이트 ========'
yum -y update
echo '======== [4-2] 타임존 설정 ========'
timedatectl set-timezone Asia/Seoul
echo '======== [4-3] Disk 확장 / Bug: soft lockup 설정 추가========'
# https://cafe.naver.com/kubeops/25
yum install -y cloud-utils-growpart
growpart /dev/sda 4
xfs_growfs /dev/sda4
echo 0 > /proc/sys/kernel/hung_task_timeout_secs
echo "kernel.watchdog_thresh = 20" >> /etc/sysctl.conf
echo '======== [4-4] [WARNING FileExisting-tc]: tc not found in system path 로그 관련 업데이트 ========'
yum install -y yum-utils iproute-tc
echo '======== [4-5] Hosts 등록 ========'
cat << EOF >> /etc/hosts
192.168.56.30 k8s-master
192.168.56.31 k8s-node1
192.168.56.32 k8s-node2
EOF
echo '======== [5] kubeadm 설치 전 사전작업 ========'
echo '======== [5] 방화벽 해제 ========'
systemctl stop firewalld && systemctl disable firewalld
echo '======== [5] Swap 비활성화 ========'
swapoff -a && sed -i '/ swap / s/^/#/' /etc/fstab
echo '======== [6] 컨테이너 런타임 설치 ========'
echo '======== [6-1] 컨테이너 런타임 설치 전 사전작업 ========'
echo '======== [6-1] iptable 세팅 ========'
cat <<EOF |tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
cat <<EOF |tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
echo '======== [6-2] 컨테이너 런타임 (containerd 설치) ========'
echo '======== [6-2-1] containerd 패키지 설치 (option2) ========'
echo '======== [6-2-1-1] docker engine 설치 ========'
echo '======== [6-2-1-1] repo 설정 ========'
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
echo '======== [6-2-1-1] containerd 설치 ========'
yum install -y containerd.io-1.6.21-3.1.el8
systemctl daemon-reload
systemctl enable --now containerd
echo '======== [6-3] 컨테이너 런타임 : cri 활성화 ========'
sed -i 's/^disabled_plugins/#disabled_plugins/' /etc/containerd/config.toml
systemctl restart containerd
echo '======== [7] kubeadm 설치 ========'
echo '======== [7] repo 설정 ========'
cat <<EOF |tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF
echo '======== [7] SELinux 설정 ========'
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
echo '======== [7] kubelet, kubeadm, kubectl 패키지 설치 ========'
yum install -y kubelet-1.27.2-0.x86_64 kubeadm-1.27.2-0.x86_64 kubectl-1.27.2-0.x86_64 --disableexcludes=kubernetes
systemctl enable --now kubelet
SHELL
$provision_master_node = <<-SHELL
echo '======== [8] kubeadm으로 클러스터 생성 ========'
echo '======== [8-1] 클러스터 초기화 (Pod Network 세팅) ========'
kubeadm init --pod-network-cidr=20.96.0.0/12 --apiserver-advertise-address 192.168.56.30
kubeadm token create --print-join-command > ~/join.sh
echo '======== [8-2] kubectl 사용 설정 ========'
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
echo '======== [8-3] Pod Network 설치 (calico) ========'
kubectl create -f https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/calico-3.25.1/calico.yaml
kubectl create -f https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/calico-3.25.1/calico-custom.yaml
echo '======== [9] 쿠버네티스 편의기능 설치 ========'
echo '======== [9-1] kubectl 자동완성 기능 ========'
echo "source <(kubectl completion bash)" >> ~/.bashrc
echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -o default -F __start_kubectl k' >>~/.bashrc
echo '======== [9-2] Dashboard 설치 ========'
kubectl create -f https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/dashboard-2.7.0/dashboard.yaml
SHELL
0
안녕하세요.
먼저 실습환경 구성 제공에 불편함을 드려 너무 죄송합니다.
제 설치 실습 환경은 Virtualbox를 기본으로 합니다.
근데 Virtualbox에서 아직 M시리즈를 정식으로 지원해주지 않기 때문에 저도 너무 아쉬운 마음입니다.
그래도 7.0.x 버전에서 M시리즈를 테스트 버전으로 제공하고는 있습니다. 아직 공식 버전은 아닌 것 같지만 해당 버전으로 환경을 구축하시는 분들고 계시긴 하더라고요.
하지만, 제가 현재 설치해볼 수 있는 환경이 없어서, 일단 방법만 알려 드릴께요. 먼저 해보신다면 저도 안되는 부분이 있을 때 더 지원 드리겠습니다.
virtualbox 설치 (m시리즈용)
https://download.virtualbox.org/virtualbox/7.0.8/VirtualBox-7.0.8_BETA4-156879-macOSArm64.dmg
2.vagrant 설치 (m시리즈용)
https://releases.hashicorp.com/vagrant/2.3.7/vagrant_2.3.7_darwin_arm64.dmg
3.스크립트 실행
#Vagrant 폴더 생성
$ mkdir k8s && cd k8s
# Vagrant 스크립트 다운로드
$ curl -O https://kubetm.github.io/yamls/k8s-install/Vagrantfile
# Rocky Linux Repo 세팅
$ curl -O https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/vagrant-2.3.4/rockylinux-repo.json
$ vagrant box add rockylinux-repo.json
# Vagrant Disk 설정 Plugin 설치
$ vagrant plugin install vagrant-vbguest vagrant-disksize
# Vagrant 실행 (VM생성)
$ vagrant up
여기까지 잘 진행되시면 말씀 부탁 드려요.
The guest machine entered an invalid state while waiting for it
to boot. Valid states are 'starting, running'. The machine is in the
'aborted' state. Please verify everything is configured
properly and try again.
If the provider you're using has a GUI that comes with it,
it is often helpful to open that and watch the machine, since the
GUI often has more helpful error messages than Vagrant can retrieve.
For example, if you're using VirtualBox, run vagrant up
while the
VirtualBox GUI is open.
The primary issue for this error is that the provider you're using
is not properly configured. This is very rarely a Vagrant issue.
이 에러를 해결하고 있는 중입니다..
https://qiita.com/sachiotomita/items/77fefd753b546fdcc2f1
이런 내용도 있네요. 번역을 해서 보면
Vagrantfile을 열어서 수정해서
config.vm.boot_timeout = 1000
을 해보라는 내용도 있네요.
https://petite-class-5da.notion.site/376c7b69f38547d0a6e14e99fe552b3e?pvs=4
VAGRANT_LOG=debug vagrant up > vagrant.log 2>&1
이명령어로 나온 로그 전체입니다.
아 Parallels pro 결제해서 vagrant 로 Ubuntu 20.04 로 셋팅해서 방금 대시보드 접속까지 했습니다 ㅠㅠ 노드도 마스터 워커노드 2개 셋팅했구요 버추얼박스로는 실패했지만 Parallels 로 실습 할 수 있을것 같습니다.