xpenology에 USB 디스크를 인식 시키려고 하는데, 한참 걸렸네요.

그래서 공유 합니다.

 

처음이 어렵지, 알고 보니 쉽네요~ ㅎㅎㅎ

아래처럼 따라 했는데, USB 디스크가 인식이 되지 않는다면

  - VM을 종료 한 후에 USB를 등록하고 부팅을 해보시거나

  - USB를 등록하고 VM을 재시작 하시면 됩니다.

(제가 그랬네요...) 

 

1. USB 디스크를 proxmox에서 인식시키기

USB 디스크를 꽂으면 아래의 그림처럼 디스크를 인식하게 됩니다.

2. USB 드라이버 인식시키기

3. USB 사용하기

USB 파일시스템에 따라 드라이버를 설치가 필요합니다.

해당 방법으로 안되면 아래 1번째 방법을 확인 해 보세요~

https://dirt-spoon.tistory.com/329

 

proxmox 업그레이드를 하고, 로그인을 했더니 "No valid subscription"  팝업 매뉴가 뜨네요.

 

그래서 당장 없애 버리겠습니다.

 

1. proxmox 서버의 shell을 실행시킵니다.

 

2. 아래의 경로로 이동하고 수정할 파일을 백업합니다.

root@13500T:~# cd /usr/share/javascript/proxmox-widget-toolkit
root@13500T:/usr/share/javascript/proxmox-widget-toolkit# cp ./proxmoxlib.js ./proxmoxlib.bak

 

3. 파일을 수정하기 위해 vi 편집기를 실행합니다.

root@13500T:/usr/share/javascript/proxmox-widget-toolkit# vi ./proxmoxlib.js

 

4. 파일을 수정합니다.

파일 내에서 "/No valid" 라고 입력하고 엔터를 칩니다. (" 쌍따옴표는 입력하지 않아요.)

 

입력 전

입력 후

 

2줄 위로 올라가서 "!=="를 "=="로 수정해 줍니다. ("!"만 삭제하세요.)

변경 전

변경 후

 

이후 아래처럼 ":wq!"를 입력하여 저장 후 파일을 빠져나갑니다.

5. pveproxy 서비스를 재시작합니다.

 

6. "No valid subscription"  팝업 매뉴가 뜨는지 확인해봅니다!!

팝업이 그래도 뜬다면 아래 글을 확인 해 주세요.

https://dirt-spoon.tistory.com/329

 

반드시 쿠키를 삭제하고 확인하세요~

'기술 노트 > proxmox' 카테고리의 다른 글

"No valid subscription" 메시지 없애기 1  (0) 2025.01.25
ubuntu 설치하기  (0) 2024.10.29
내부 네트워크의 NAT 설정  (0) 2024.10.13
내부 네트워크 추가하기  (0) 2024.10.11
GNS3 설치하기  (1) 2024.10.05

해당 방법으로 안되면 아래 2번째 방법을 확인 해 보세요~

https://dirt-spoon.tistory.com/330

 

proxmox 업그레이드를 하고, 로그인을 했더니 "No valid subscription"  팝업 매뉴가 뜨네요.

 

그래서 당장 없애 버리겠습니다.

 

1. proxmox 서버의 shell을 실행시킵니다.

 

2. 아래의 경로로 이동하고 수정할 파일을 백업합니다.

root@13500T:~# cd /usr/share/javascript/proxmox-widget-toolkit
root@13500T:/usr/share/javascript/proxmox-widget-toolkit# cp ./proxmoxlib.js ./proxmoxlib.bak

 

3. 파일을 수정하기 위해 vi 편집기를 실행합니다.

root@13500T:/usr/share/javascript/proxmox-widget-toolkit# vi ./proxmoxlib.js

 

4. 파일을 수정합니다.

파일 내에서 "/No valid" 라고 입력하고 엔터를 칩니다. (" 쌍따옴표는 입력하지 않아요.)

 

입력 전

 

입력 후

 

바로 상단 줄로 옮겨서  아래처럼 "void({ //"을 입력합니다.

 

이후 아래처럼 ":wq!"를 입력하여 저장 후 파일을 빠져나갑니다.

 

5. pveproxy 서비스를 재시작합니다.

 

6. "No valid subscription"  팝업 매뉴가 뜨는지 확인해봅니다!!

팝업이 그래도 뜬다면 아래 글을 확인 해 주세요.

https://dirt-spoon.tistory.com/330

 

반드시 쿠키를 삭제하고 확인하세요~

'기술 노트 > proxmox' 카테고리의 다른 글

"No valid subscription" 메시지 없애기 2  (0) 2025.01.25
ubuntu 설치하기  (0) 2024.10.29
내부 네트워크의 NAT 설정  (0) 2024.10.13
내부 네트워크 추가하기  (0) 2024.10.11
GNS3 설치하기  (1) 2024.10.05

시놀로지든 큐냅이든 nas를 잘 활용하기 위해서는 transmission은 꼭 설치해야 합니다.

 

transmission으로 토렌토 다운로드 받은 후 자동으로 중지되는 것까지 설정하는 방법입니다.

 

1. transmission을 다운로드 합니다.

https://synocommunity.com/package/transmission

 

SynoCommunity

 

synocommunity.com

다운로드 할 경우 본인의 장치에 맞는 버전을 선택해 주세요.

저는 ds720+ 제품으로 nas를 설치했습니다. ds720+의 Package Arch는 Geminilake 입니다.

본인의 xpenology에 해당하는 장치의 Package Arch를 모른다면 아래의 링크에서 확인해보세요.

https://kb.synology.com/en-me/DSM/tutorial/What_kind_of_CPU_does_my_NAS_have

 

What kind of CPU does my Synology NAS have? - Synology Knowledge Center

 

kb.synology.com

아래는 제 장치에 대한 버전입니다.

2. 다운로드한 파일을 수동설치 해줍니다.

파일을 다운로드할 폴더를 선택 해 주세요.

transmission에 접속할 계정을 생성 해 주세요.

 

3. xpenology 콘솔에 접속하여 설정을 변경합니다.

아래의 작업은 transmission 서비스를 중지 후 실행해 주시고, 설정이 완료 된 후 올려주세요.

변경 전 settings.json

변경 후 settings.json

4. 스크립트 파일을 생성해 줍니다.

아래 내용을 파일로 생성해 줍니다.

root@vm-nas:~# vi /var/packages/transmission/scripts/autoremove
#!/bin/sh

SERVER="9091 --auth 본인ID:본인Password"
TORRENTLIST=`/var/packages/transmission/target/bin/transmission-remote $SERVER --list | sed -e '1d;$d;s/^ *//' | cut -s -d " " -f 1`
for TORRENTID in $TORRENTLIST
do
    DL_COMPLETED=`/var/packages/transmission/target/bin/transmission-remote $SERVER --torrent $TORRENTID --info | grep "Percent Done: 100%"`
        STATE_STOPPED=`/var/packages/transmission/target/bin/transmission-remote $SERVER --torrent $TORRENTID --info | grep "State: Seeding\|Stopped\|Finished\|Idle"`
            if [ "$DL_COMPLETED"  ] && [ "$STATE_STOPPED"  ]; then
                    /var/packages/transmission/target/bin/transmission-remote $SERVER --torrent $TORRENTID --remove
                        fi
                        done

 

파일 생성 후 스크립트 파일에 권한을 부여합니다.

root@vm-nas:~# chmod 755 /var/packages/transmission/scripts/autoremove

 

5. transmission 서비스를 실행합니다.

아래는 토런트 파일 다운로드 후 자동으로 삭제된 화면입니다.

!! 우선, 정품이 최고입니다.

xpenology를 사용하시는 분들은 대부분 정품을 사용하다가 성능 이슈로 업그레이드하려던 분들이 많이 사용하시는 것 같습니다.

저 역시 nas를 사용하다가 성능이 너무 느려서 성능을 업그레이드 하려다가 찾아낸 방법입니다.

가능하시다면 정품을 사용하시는 걸 강력히 추천드립니다~

 

xpenology에서 QuickConnect를 사용하려면 정품 씨리얼이 필요한 것으로 알고 있습니다.

그래서 정품 씨리얼 등록하는 방법을 알려드립니다.

그런데, 해당 방법으로는 xpenology에서 QuickConnect 설정은 적용되지 않네요 ㅠㅠ

그래도, xpenology에서 시리얼 변경하는 방법은 안내해 드립니다~

 

1. virtual Machine Manager를 설치합니다.

2. DSM 이미지를 다운로드 합니다.

상태가 정상이 될때까지 기다립니다.

3. 가상 네트워크를 생성합니다.

4. 다운로드 받은 DSM을 설치합니다.

정보를 얻기 위한 설치입니다. 정보를 얻은 후 설정만 할 vm이니 리소스는 최대한 적게 해주세요.

5. 설치한 DSM을 구동하여 정보를 확인합니다.

VM IP를 확인하여 VM 시놀로지에 접속을 합니다.

접속 후 시놀로지 처음 설정을 진행합니다. (해당 내용은 생략~)

이후 제어판에서 "정보 센터"를 통해 아래의 정보를 확인합니다.

6. xpenology의 시리얼과 MAC Address를 수정합니다.

터미널 서비스를 활성화 시킵니다.

nas의 계정 정보를 이용하여 터미널에 접속합니다.

저는 가족 사진들이 삭제될까봐 2중 3중으로 백업을 합니다.

그러다보니, 중복으로 저장되는 파일이 너무 많아서 정리하다가 알게된 정보를 공유하기 위해서 남기고자 합니다.

 

중복 제거되는 파일을 삭제하려고 여러 방법을 시도해 봤고, 프로그램도 여러개 설치 해 봤는데, 아래 방법이 가장 좋았습니다.

 

※ 해당 파일은 네이버나 구글에서 doublediller 라고 검색하시면 바로 다운로드 가능하여 따로 링크를 남기지는 않겠습니다.

 

[파일 제거 환경]

ㅇ 프로그램: DoubleKiller

ㅇ 환경: Windows 11 Pro

ㅇ 프로그램 사용 방법

처음 실행 시 아래의 메시지가 발생했습니다만, 저는 무시하고 실행했습니다.

(실행 후 바이러스 탐지에도 아무것도 걸리지는 않았습니다.)

 

[assume files to be the same, if...]

  • names are identical AND: 이름이 같은 파일을 찾는 조건
  • sizes are identical AND: 파일의 크기를 비교해 같은 파일을 찾는 조건
  • dates are identical AND: 파일의 생성일을 기준으로 중복된 파일을 찾는 조건
  • CRC32-checksums are identical: 각각의 파일에서 생성되는 CRC32 체크섬 값으로 중복된 파일을 찾는 조건

중복을 찾고 싶은 폴더 추가 (네트워크 드라이브 폴더도 추가가 되어서 정말 유용합니다.)

실행 (Run)

결과

삭제할 사진 체크

선택한 사진 파일 삭제

CISA CPE 등록 방법입니다.

 

오른쪽 상단 MYISACA -> CPE CERTIFICATES 선택

 

Certifications & CPE Management 선택

REPORT & MANAGE CPE 선택

ADD NEW CPE RECORD 선택

CPE 내용 작성 전

CPE 내용 작성

Qualifying Activity 선택은 2가지 중으로 국내 사용자들이 선택하는 것 같아요.

1. "Self-study courses"

2. "Non-ISACA professional education activities"

저는 "Non-ISACA professional education activities"를 선택해서 등록합니다.

아쉽게도 CPE 시간은 0.5 시간 단위로 등록이 가능하네요.

개인정보보호 포털에서 제공하는 CPE 시간은 소수점 1자리까지 가능한데.. (Ex. 1.3시간)

2024년도 CPE 시간 전부 다 채웠습니다.

매년 CPE 시간 채우는 거 너무 어렵네요. 후~

공부하기 위해서 설치해봅니다.

 

ansible 설치하기

apt install -y ansible

 

관리할 서버 접속 설정하기 (사전에 ssh-keygen 설정 필요)

# pub 파일이 id_rsa.pub 인지 다른 이름인지 반드시 확인 필요
# 저는 다른 vm이 있어서 접속 테스트 했습니다.
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@192.168.0.205
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@192.168.0.206
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@192.168.0.207

 

ansible 테스트

root@13500T-ubuntu:~# mkdir /etc/ansible
root@13500T-ubuntu:~# touch /etc/ansible/hosts
root@13500T-ubuntu:~# cat /etc/ansible/hosts
#192.168.0.205 k8s-master
192.168.0.205
#192.168.0.206 k8s-node1
192.168.0.206
#192.168.0.207 k8s-node2
192.168.0.207
root@13500T-ubuntu:~# ansible all -m ping
192.168.0.207 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
192.168.0.206 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
192.168.0.205 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
root@13500T-ubuntu:~#

 

일반 유저로 설정을 하니 아래와 같이 권한 문제가 발생하여 ssh로 root 접속할 수 있도록 설정하여 수행하였습니다.

root@13500T-ubuntu:~# ansible all -m ping
192.168.0.205 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: root@192.168.0.205: Permission denied (publickey,password).",
    "unreachable": true
}
192.168.0.206 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: root@192.168.0.206: Permission denied (publickey,password).",
    "unreachable": true
}
192.168.0.207 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: root@192.168.0.207: Permission denied (publickey,password).",
    "unreachable": true
}
root@13500T-ubuntu:~#

 

/usr/bin/ssh-copy-id: ERROR: No identities found 발생 시

root@13500T-ubuntu:~# ssh-copy-id master@192.168.0.205
/usr/bin/ssh-copy-id: ERROR: No identities found

 

1단계: 사이사이 물어보면 "엔터"만 치시면 됩니다.

root@13500T-ubuntu:~# ssh-keygen
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/id_ed25519): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_ed25519
Your public key has been saved in /root/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:tXRz---------------------------- root@13500T-ubuntu
The key's randomart image is:
+--[ED25519 256]--+
|             *EBX|
|            o*B^*|
|          o Bo/*B|
|         o = X =*|
|        S .   ..o|
|               . |
|                 |
|                 |
|                 |
+----[SHA256]-----+
root@13500T-ubuntu:~#

 

2단계: pub 파일이 어떤 이름인지 꼭 확인해보세요. 저는 " id_rsa.pub"가 아닌 " id_ed25519.pub" 였습니다.

root@13500T-ubuntu:~# ssh-copy-id -i ~/.ssh/id_ed25519.pub root@192.168.0.205
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_ed25519.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.0.205's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.0.205'"
and check to make sure that only the key(s) you wanted were added.

root@13500T-ubuntu:~# ssh-copy-id -i ~/.ssh/id_ed25519.pub root@192.168.0.206
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_ed25519.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.0.206's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.0.206'"
and check to make sure that only the key(s) you wanted were added.

root@13500T-ubuntu:~# ssh-copy-id -i ~/.ssh/id_ed25519.pub root@192.168.0.207
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_ed25519.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.0.207's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.0.207'"
and check to make sure that only the key(s) you wanted were added.

root@13500T-ubuntu:~#

 

더보기

일반사용자로 등록하는 방법입니다.

root가 아닌 일반사용자로도 ansible 사용방법이 있는 것 같은데, 추후 확인 후 업그레이드 하겠습니다.

root@13500T-ubuntu:~# ssh-copy-id -i ~/.ssh/id_ed25519.pub master@192.168.0.205
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_ed25519.pub"
The authenticity of host '192.168.0.205 (192.168.0.205)' can't be established.
ED25519 key fingerprint is SHA256:Rg4V0-------------------------OmwKSq8s.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
master@192.168.0.205's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'master@192.168.0.205'"
and check to make sure that only the key(s) you wanted were added.

root@13500T-ubuntu:~# ssh-copy-id -i ~/.ssh/id_ed25519.pub node1@192.168.0.206
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_ed25519.pub"
The authenticity of host '192.168.0.206 (192.168.0.206)' can't be established.
ED25519 key fingerprint is SHA256:Rg4V0-------------------------OmwKSq8s.
This host key is known by the following other names/addresses:
    ~/.ssh/known_hosts:1: [hashed name]
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
node1@192.168.0.206's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'node1@192.168.0.206'"
and check to make sure that only the key(s) you wanted were added.

root@13500T-ubuntu:~# ssh-copy-id -i ~/.ssh/id_ed25519.pub node2@192.168.0.207
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_ed25519.pub"
The authenticity of host '192.168.0.207 (192.168.0.207)' can't be established.
ED25519 key fingerprint is SHA256:Rg4V0-------------------------OmwKSq8s.
This host key is known by the following other names/addresses:
    ~/.ssh/known_hosts:1: [hashed name]
    ~/.ssh/known_hosts:4: [hashed name]
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
node2@192.168.0.207's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'node2@192.168.0.207'"
and check to make sure that only the key(s) you wanted were added.

root@13500T-ubuntu:~#

 

3단계: 패스워드 없이 계정 접속하기

root@13500T-ubuntu:~# ssh master@192.168.0.205
Welcome to Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0-48-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

Expanded Security Maintenance for Applications is not enabled.

139 updates can be applied immediately.
24 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status

Last login: Mon Nov 18 14:55:57 2024 from 192.168.0.201
master@k8s-master:~$

 

'기술 노트 > ubuntu' 카테고리의 다른 글

ufw 사용 방법  (0) 2024.05.13
influxdb.conf 설정 파일  (0) 2024.03.18
influxdb v1으로 설치하기  (0) 2024.03.18
influxdb v1 설치 후 telegraf 연동하기  (0) 2024.03.18
MIB search path: mibs  (0) 2024.03.15

kubectl get nodes 명령어 실행 시 계속 refused 오류가 나서 깔끔하게 삭제 후 재설치를 했습니다.

차라리 삭제하고 재설치하는 것이 더 빠르게 복구가 되네요.

 

자료가 없을 때 k8s 이슈 있을 때 사용하실때 사용하세요~

 

kubeadm reset
systemctl stop kubelet
systemctl stop docker
rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /var/lib/etcd
rm -rf /run/flannel
rm -rf /etc/cni
rm -rf /etc/kubernetes
rm -rf ~/.kube
apt purge kubeadm kubectl kubelet kubebernetes-cni
apt autoremove

reboot

 

'기술 노트 > kubernetes' 카테고리의 다른 글

k8s 설치하기 (ubuntu)  (3) 2024.11.13
kubeadm reset 오류  (0) 2024.11.03
kube init 재구성하는 방법  (0) 2024.11.03
pod가 terminating으로 남을 때  (0) 2024.11.02
node role label 변경  (0) 2024.10.31

k8s == k8(ubernete)s

처음 k8s가 무슨 의미인지 몰랐는데, 알고 보니.... 너무....

 

생각보다 많은 분들이 보시는 것 같아서 명령어를 붙여넣기 식으로 수정했습니다.

기본적으로 명령어는 root 로 실행하여 sudo 명령어를 사용하지 않았습니다.

설치 시 반드시 계정 유의하여 설치하세요.

 

공식 설치 문서도 참고하세요.

https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/

 

kubeadm으로 클러스터 구성하기

운영 수준의 컨테이너 오케스트레이션

kubernetes.io

환경 설정

ㅇ OS: Ubuntu 24.04.1 LTS

ㅇ node

  - k8s-master: 192.168.0.205

  - k8s-node1: 192.168.0.206

  - k8s-node2: 192.168.0.207

 

 

1. 공통 설정 (대상 node: k8s-master, k8s-node1, k8s-node2)

1. Swap 비활성화

#swap 비활성화
swapoff -a

#부팅 시 swap 비화설화 설정
sed -i 's/^\/swap/\#\/swap/g' /etc/fstab

 

2. 네트워크 모듈 및 sysctl 설정

# 네트워크 모듈 로드
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

modprobe overlay
modprobe br_netfilter

# sysctl 파라미터 설정
cat <<EOF | sudo 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 파라미터 적용
sysctl --system

 

3. 컨테이너 설치

(저는 그냥 Docker 설치했습니다. 최근은 Docker에 포함되어 있는 Containerd를 사용한다고 하네요)

# Docker 설치 (containerd 포함)
apt install -y docker.io

# containerd 설정 파일 생성 및 수정
mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml

# containerd 설정 파일 중 SystemdCgroup를 false -> true로 수정
sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

# containerd 서비스 재시작
systemctl restart containerd.service

 

4. 쿠버네티스 설치하기

# 쿠버네티스 apt 리포지터리를 사용하는 데 필요한 패키지를 설치
apt install -y apt-transport-https ca-certificates curl

# 구글 클라우드의 공객 사이닝 키를 다운로드 (저는 버전 1.29로 했습니다. 최신버전은 비추)
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

# apt 리포지터리 추가 (저는 버전 1.29로 했습니다. 최신버전은 비추)
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

# apt 리포지터리 업데이트
apt update

# 쿠버네티스 설치
apt install -y kubelet kubeadm kubectl

# 쿠버네티스 버전 고정
apt-mark hold kubelet kubeadm kubectl

 

 

2. 노드별 쿠버네티스 설정하기

1. 마스터 노트 설정 (대상 node: k8s-master)

# 쿠버네티스 초기화 및 pod 네트워크 설정
kubeadm init --apiserver-advertise-address=192.168.0.205 --pod-network-cidr=10.1.0.0/16

# 위 명령어 결과 값 중 마스터 노드 설정
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

 

2. 워커 노트 설정 (대상 node: k8s-node1, k8s-node2)

# kubeadm init --apiserver-advertise-address=192.168.0.205 --pod-network-cidr=10.1.0.0/16 실행 후 나온 설정 값 값
kubeadm join 192.168.0.205:6443 --token rv50n5.cj04tpgfr9eqm9x4 \
--discovery-token-ca-cert-hash sha256:cef9cb71a8fa8ac2943f6252b0f7c3777cbbd2a5b4134e96755c9f2cf3c5a250

 

더보기

참고자료1: master node 실행

root@k8s-master:~# kubeadm init --apiserver-advertise-address=192.168.0.205 --pod-network-cidr=10.1.0.0/16
I1113 00:17:29.745593    5069 version.go:256] remote version is much newer: v1.31.2; falling back to: stable-1.29
[init] Using Kubernetes version: v1.29.10
[preflight] Running pre-flight checks
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
W1113 00:17:46.621371    5069 checks.go:835] detected that the sandbox image "registry.k8s.io/pause:3.8" of the container runtime is inconsistent with that used by kubeadm. It is recommended that using "registry.k8s.io/pause:3.9" as the CRI sandbox image.
[certs] Using certificateDir folder "/etc/kubernetes/pki"
[certs] Generating "ca" certificate and key
[certs] Generating "apiserver" certificate and key
[certs] apiserver serving cert is signed for DNS names [k8s-master kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 192.168.0.205]
[certs] Generating "apiserver-kubelet-client" certificate and key
[certs] Generating "front-proxy-ca" certificate and key
[certs] Generating "front-proxy-client" certificate and key
[certs] Generating "etcd/ca" certificate and key
[certs] Generating "etcd/server" certificate and key
[certs] etcd/server serving cert is signed for DNS names [k8s-master localhost] and IPs [192.168.0.205 127.0.0.1 ::1]
[certs] Generating "etcd/peer" certificate and key
[certs] etcd/peer serving cert is signed for DNS names [k8s-master localhost] and IPs [192.168.0.205 127.0.0.1 ::1]
[certs] Generating "etcd/healthcheck-client" certificate and key
[certs] Generating "apiserver-etcd-client" certificate and key
[certs] Generating "sa" key and public key
[kubeconfig] Using kubeconfig folder "/etc/kubernetes"
[kubeconfig] Writing "admin.conf" kubeconfig file
[kubeconfig] Writing "super-admin.conf" kubeconfig file
[kubeconfig] Writing "kubelet.conf" kubeconfig file
[kubeconfig] Writing "controller-manager.conf" kubeconfig file
[kubeconfig] Writing "scheduler.conf" kubeconfig file
[etcd] Creating static Pod manifest for local etcd in "/etc/kubernetes/manifests"
[control-plane] Using manifest folder "/etc/kubernetes/manifests"
[control-plane] Creating static Pod manifest for "kube-apiserver"
[control-plane] Creating static Pod manifest for "kube-controller-manager"
[control-plane] Creating static Pod manifest for "kube-scheduler"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Starting the kubelet
[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s
[apiclient] All control plane components are healthy after 5.501103 seconds
[upload-config] Storing the configuration used in ConfigMap "kubeadm-config" in the "kube-system" Namespace
[kubelet] Creating a ConfigMap "kubelet-config" in namespace kube-system with the configuration for the kubelets in the cluster
[upload-certs] Skipping phase. Please see --upload-certs
[mark-control-plane] Marking the node k8s-master as control-plane by adding the labels: [node-role.kubernetes.io/control-plane node.kubernetes.io/exclude-from-external-load-balancers]
[mark-control-plane] Marking the node k8s-master as control-plane by adding the taints [node-role.kubernetes.io/control-plane:NoSchedule]
[bootstrap-token] Using token: rv50n5.cj04tpgfr9eqm9x4
[bootstrap-token] Configuring bootstrap tokens, cluster-info ConfigMap, RBAC Roles
[bootstrap-token] Configured RBAC rules to allow Node Bootstrap tokens to get nodes
[bootstrap-token] Configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
[bootstrap-token] Configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
[bootstrap-token] Configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
[bootstrap-token] Creating the "cluster-info" ConfigMap in the "kube-public" namespace
[kubelet-finalize] Updating "/etc/kubernetes/kubelet.conf" to point to a rotatable kubelet client certificate and key
[addons] Applied essential addon: CoreDNS
[addons] Applied essential addon: kube-proxy

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.0.205:6443 --token rv50n5.cj04tpgfr9eqm9x4 \
--discovery-token-ca-cert-hash sha256:cef9cb71a8fa8ac2943f6252b0f7c3777cbbd2a5b4134e96755c9f2cf3c5a250 
root@k8s-master:~#

참고자료2: node1, node2에서 실행

root@k8s-node1:~# kubeadm join 192.168.0.205:6443 --token rv50n5.cj04tpgfr9eqm9x4 \
        --discovery-token-ca-cert-hash sha256:cef9cb71a8fa8ac2943f6252b0f7c3777cbbd2a5b4134e96755c9f2cf3c5a250
[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the control-plane to see this node join the cluster.

root@k8s-node1:~#

 

3. calico 설치 (대상 node: k8s-master)

아래 공식 사이트 기술문서 참고하세요.

https://docs.tigera.io/calico/latest/getting-started/kubernetes/quickstart

 

Quickstart for Calico on Kubernetes | Calico Documentation

Install Calico on a single-host Kubernetes cluster for testing or development in under 15 minutes.

docs.tigera.io

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.0/manifests/tigera-operator.yaml
wget https://raw.githubusercontent.com/projectcalico/calico/v3.29.0/manifests/custom-resources.yaml

# 아래의 명령어 중 --pod-network-cidr 설정한 주소 대역으로 변경
# kubeadm init --apiserver-advertise-address=192.168.0.205 --pod-network-cidr=10.1.0.0/16
sed -i 's/192.168.0.0\/16/10.1.0.0\/16/g' ./custom-resources.yaml

kubectl create -f ./custom-resources.yaml

 

'기술 노트 > kubernetes' 카테고리의 다른 글

쿠버네티스 삭제  (0) 2024.11.14
kubeadm reset 오류  (0) 2024.11.03
kube init 재구성하는 방법  (0) 2024.11.03
pod가 terminating으로 남을 때  (0) 2024.11.02
node role label 변경  (0) 2024.10.31

+ Recent posts