• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

혹시 맥 M시리즈에서 쿠버네티스 로컬구성하는 방법에 대해서는 계획이 없으신가요 ??

23.11.16 16:13 작성 조회수 527

1

혹시 맥 M시리즈에서 쿠버네티스 로컬구성하는 방법에 대해서는 계획이 없으신가요 ??

강의를 듣고있는데 실습이 쉽지 않아서요

답변 8

·

답변을 작성해보세요.

0

안녕하세요.

저도 주말에 m시리즈를 구입해서 직접 해봤습니다.

정말 쉽지 않네요. 고생 많으셨습니다.

일단 해당 강의에는 이번 주말까지 업데이트 할 예정이고,

 

일단 제 다른 강의 [쿠버네티스 어나더 클래스] 의 실습 환경에 m시리즈에서 쿠버네티스 클러스터를 생성하는 방법을 올려놨습니다.

https://cafe.naver.com/kubeops/91

해당 강의는 [대세는 쿠버네티스]강의와는 달리 k8s-master만 설치하기 때문에 좀 다르긴 한데

설치 내용을 잘 보시면 감이 오실거예요

 

해당 강의도 비슷한 형태로 업데이트 될 예정입니다.

임상규님의 프로필

임상규

질문자

2023.11.20

아 Parallels pro 결제해서 vagrant 로 Ubuntu 20.04 로 셋팅해서 방금 대시보드 접속까지 했습니다 ㅠㅠ 노드도 마스터 워커노드 2개 셋팅했구요 버추얼박스로는 실패했지만 Parallels 로 실습 할 수 있을것 같습니다.

그러셨군요! 잘하셨습니다.

궁금하게 하나 있는데, OS와 쿠버네티스 모두 arm64로 설치하셨나요?

임상규님의 프로필

임상규

질문자

2023.11.20

네 arm64 로 설치했습니다.

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. 설치 완료 후 [재부팅]

 

 

임상규님의 프로필

임상규

질문자

2023.11.17

둘다 안되네요ㅠㅠ image여기서 멈춰있씁니다 ㅠ

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 버전을 문의 드렸습니다.

임상규님의 프로필

임상규

질문자

2023.11.17

==> 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

이건 이에러가 발생하네요

 

이렇게 한번 해보시겠어요?

Host_only Network를 한번 내렸다 올렸더니 됐다고 하네요.

 https://m.blog.naver.com/slkim0/222065879048

임상규님의 프로필

임상규

질문자

2023.11.17

해봤는데 같은 에러가 발생하네요 ㅠㅠ

임상규님의 프로필

임상규

질문자

2023.11.17

물론 해봤습니다 하루종일 하고있는데 쉽지 않네요 ㅠㅠ

그러게요 역시 쉽지 않군요.

M1으로 설치하신분 답변이 오면 말씀드리겠습니다

임상규님의 프로필

임상규

질문자

2023.11.17

네 감사합니다..

0

임상규님의 프로필

임상규

질문자

2023.11.17


{
  "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

임상규님의 프로필

임상규

질문자

2023.11.17

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

Mac에서 Virtualbox 사용시 권한 문제에 대한 글들이 있네요.

아래 블로그 중간에 [개인 정보 보호]부분을 한번 해보시겠어요?

https://fdee.tistory.com/entry/OS-Mac%EC%97%90%EC%84%9C-VirtualBox%EB%A1%9C-Linux-%EC%84%A4%EC%B9%98%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

 

임상규님의 프로필

임상규

질문자

2023.11.17

혹시 찾아보다 안되서 패러럴즈 프로버전 설치해서 해보려고하고있는데

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

임상규님의 프로필

임상규

질문자

2023.11.17

조금만 도와주시면 꼭 해결 해보도록 하겠습니다 ㅠㅠ

임상규님의 프로필

임상규

질문자

2023.11.17

config.vm.boot_timeout = 1000
개인 정보 보호 다 해봤습니다!

0

안녕하세요.

먼저 실습환경 구성 제공에 불편함을 드려 너무 죄송합니다.

제 설치 실습 환경은 Virtualbox를 기본으로 합니다.

근데 Virtualbox에서 아직 M시리즈를 정식으로 지원해주지 않기 때문에 저도 너무 아쉬운 마음입니다.

그래도 7.0.x 버전에서 M시리즈를 테스트 버전으로 제공하고는 있습니다. 아직 공식 버전은 아닌 것 같지만 해당 버전으로 환경을 구축하시는 분들고 계시긴 하더라고요.

하지만, 제가 현재 설치해볼 수 있는 환경이 없어서, 일단 방법만 알려 드릴께요. 먼저 해보신다면 저도 안되는 부분이 있을 때 더 지원 드리겠습니다.

 

 

  1. 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

 

여기까지 잘 진행되시면 말씀 부탁 드려요.

 

임상규님의 프로필

임상규

질문자

2023.11.17

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.

이 에러를 해결하고 있는 중입니다..

임상규님의 프로필

임상규

질문자

2023.11.17

이 부분에서 해결이 안되고 있는데 혹시나 알고계시는 부분이 있으시면 해보도록하겠습니다
참고로 버츄얼박스 켜놓고 해보긴 했습니다..

 

Mac에서 Virtualbox 사용시 권한 문제에 대한 글들이 있네요.

아래 블로그 중간에 [개인 정보 보호]부분을 한번 해보시겠어요?

https://fdee.tistory.com/entry/OS-Mac%EC%97%90%EC%84%9C-VirtualBox%EB%A1%9C-Linux-%EC%84%A4%EC%B9%98%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

 

https://qiita.com/sachiotomita/items/77fefd753b546fdcc2f1

이런 내용도 있네요. 번역을 해서 보면

Vagrantfile을 열어서 수정해서

config.vm.boot_timeout = 1000 

을 해보라는 내용도 있네요.

에러나 났을 때의 Virtualbox 화면 상태 캡쳐나

설치 과정에 대한 콘솔 화면,

Vagrant 전체 로그도 올려봐 주시겠어요?

 

임상규님의 프로필

임상규

질문자

2023.11.17

image

임상규님의 프로필

임상규

질문자

2023.11.17

https://petite-class-5da.notion.site/376c7b69f38547d0a6e14e99fe552b3e?pvs=4

VAGRANT_LOG=debug vagrant up > vagrant.log 2>&1

이명령어로 나온 로그 전체입니다.