PowerShell

= Object-based Shell 이다
(Object = Property + Method)

 

PowerShell의 장점

cmd.exe에서 사용하는 거의 모든 명령어를 사용 가능하다
강력한 Pipeline 기능 
도움말이 탁월하다
하나의 명령어를 알게 되면 연관 명령어를 쉽게 찾을 있다
GUI비하여 내용을 구체적으로 확인 상세히 설정 가능하다
반복 작업에 유용하다
Group Policy통하여 PowerShell Script적용할 있다
원하는 cmdlet없는 경우에 Script만들어 사용할 있다
• Function, Module 등을 사용자가 필요에 따라서 생성할 수 있다
• 원격관리 기능이 탁월하다
• CLI 기반의 관리 작업 : GUI는 작업 속도가 느리고 세부적인 정보를 확인하는데 한계가 있고 원격 작업 시 방화벽을 통과하지 못할 수도 있다

  • cmdlet : powershell 명령어
  • module : cmdlet 모음
Get-Module -ListAvailable : 사용 가능한 모듈 목록 출력
Import-Module -Name activedirectory : activedirectory 관련 모듈을 임포트(임포트해야 사용 가능)
Get-Command -Module activedirectory : activedirectory 모듈의 사용가능한 cmdlet 출력

 

  • 특정 단어와 관련된 cmdlet 찾기
    Get-Command (줄여서 gcm) 이용
Get-Command *address* : address 관련 명령어 찾기
gcm *ip* : ip 관련 명령어 찾기 
Get-Command -CommandType application | Where-Object {$_.name -like "*.exe"}
: type이 application 인 것 중에 .exe가 들어가는 명령어 찾기

 

  • 명령어가 기억 안날 때 도움받는 법 
    Help, -examples 옵션 활용하기
    ** 항상 Help 기능을 최신으로 유지한다 : Update-Help
Get-Help -Name cmdlet
줄여서 >> Help -Name cmdlet
줄여서 >> Help cmdlet 

Help *서비스*
Help cmdlet -Examples : 예시 문장을 볼 수 있음

Examples 이외의 또 다른 옵션들

-Full
-Detailed
-Parameter ComputerName
-Online
-ShowWindow

 

  • Windows Feature 확인하고 설치하기 
Get-WindowsFeature -Name *powershell*
Install-WindowsFeature -Name PowerShell-v2 -IncludeManagementTools

손쉽게 설치 가능

** 역할 및 기능을 설치할 때는 습관적으로 -IncludeManagementTools 와 -IncludeAllSubfeature 매개변수를 사용하는 게 좋다.

 

  • cmdlet마다 Property와 Method를 확인해야 한다. (확인 방법 : cmdlet | Get-Member)
get-service | get-member
get-process | get-member

 

  • 특정 서비스의 Property 내용 보기
(get service -Name bits).status
get-service | Where-Object {$_.status -eq "stopped"} 
: Where-Object는 필터링. $_는 오브젝트 하나하나. 그 중에 status가 stopped인 서비스만 보여달라

 

  • 각 cmdlet의 property 값 확인
    : Property와 그 값까지 보고싶으면 fl * 사용
cmdlet | fl *
cmdlet | Format-List *

 

  • Method 실행하기
(Get-Service -name bits).start() : 서비스 시작
(Get-Service -name bits).stop() : 서비스 중지
(Get-Date).Adddays(100) : 100일 후 날짜 알아보기

get-process -name notepad | Stop-Process -Force : 강제 종료

 

  • 정렬하여 확인 가능
    sort-object 이용
get-hotfix : 업데이트 확인
get-hotfix | sort-object -property = installedon : 설치된 날짜 순으로 정렬하여 보여달라
(get-hotfix | sort-object -property installedon)[-1] : 제일 마지막으로(최신에) 설치된 항목

 

  • 특별히 WinRM 서비스 5985, 5986 포트를 사용하여 원격 관리를 하므로, 방화벽 관리가 쉬움
    >> 원격 컴퓨터 내용보기
    1. enter-pssession : 아예 원격 컴퓨터로 들어감
    2. invoke-command(줄여서 icm) : 작업하고 빠져나옴 
enter-pssession -computername sea-dc1
enter-pssession -cn sea-dc1
Invoke-Command -cn sea-dc1 {dir c:\ }
Invoke-Command -cn sea-dc1 {Restart-Computer -Force} : 강제 재시작
Invoke-Command -cn sea-svr1, sea-svr2 {Install-WindowsFeature -Name telnet-client} : 텔넷 서비스를 두대의 컴퓨터 동시에 설치

 

  • 기존의 Windows 명령어를 그대로 사용할 수 있음
Net users, route, ipconfig, ping, fsutil.exe, netdom.exe 등

 

  • Pipeline과 Script를 적절히 사용하면 시스템을 강력하게 관리 가능
Get-ChildItem -Path c:\ -Filter *.png -Recurse | Copy-Item -Destination e:\backup : c드라이브에서 png 파일을 찾아서 e드라이브에 복사

 

  • Scripting 환경 제공
    : 반복적으로 해야 할 작업이나 자동화 해야 할 작업에 적합하다.

특정 서비스 중지되어 있을 때 강제로 시작시키는 스크립트

  • 반복 작업
    ex) 사용자 계정을 1000개 생성할 때
    ex) File Server의 특정한 폴더를 1주일에 한 번씩 Copy 또는 Backup할 때

사용자를 추가하는 엑셀파일

Import-Csv -path ~ | new-aduser 명령어로 1초만에 users 추가 가능

 

  • 한꺼번에 여러 개의 데이터를 수정
    ex) 부서 이름을 한꺼번에 수정한다
Get-ADUser -Filter {department -eq “Sales”} | Set-ADUser -DepartmentSales1

 

  • 일상적인 작업을 신속하게 처리
    ip구성정보 확인  
Get-NetIPConfiguration (줄여서 gip)
  •  공유폴더 목록 확인
Get-SmbShare
  • 특정 프로그램 종료
Get-Process -Name chrome | Stop-Process -Force

 

  • 원격 관리 기능이 탁월
    ex) 10대의 컴퓨터의 최신 보안패치 현황을 확인하기
Invoke-Command -ComputerName (Get-Content c:\computers.txt){(Get-Hotfix | Sort-Object -Property InstalledOn)[-1]}

ex) 10대의 컴퓨터에서 컴퓨터 부팅시 자동으로 시작해야 서비스가 시작되지 않은 것들만 찾아서 자동으로 서비스 시작하기

Invoke-Command -cn (Get-Content c:\computers.txt) {Gwmi Win32_Service | Where{$_.State -ne "Running" -and $_.Startmode -eq "Auto"} | Start-Service -PassThru}

ex) 여러 개의 원격 컴퓨터에 현재 로그온한 사용자를 확인

Invoke-Command -ComputerName (Get-Content C:\computers.txt) {quser.exe}

ex) 업무시간에 직원들이 Gom Player를 사용하고 있는지 확인 

Invoke-Command -ComputerName Server1, Server2, Server3 {Get-Process -Name Gom}

 

  • Script 파일을 Group Policy 적용할 때 유용
    : 도메인의 구성원 컴퓨터 1000대에 동일한 작업을 하고자 하면 '.ps1파일'을 생성하여 Startup Script추가하면 사용자가 로그인 하기 전에 모두 작업이 완료된다.

 

  • EventLog 확인하기 
Get-EventLog -LogName Application -EntryType Error -After (Get-Date).AddDays(-2) 
: 2일 전부터 오늘까지 발생한 이벤트 정보 중에서 Error 만을 확인한다.

 

  • Alias 활용하기
Get-Alias -Definition Get-EventLog : Alias 확인.(없음)
Set-Alias -Name event -Value Get-EventLog : alias 설정
Export-Alias c:\Labfiles\AddedAlias.txt

Import-Alias

Import-Alias를 하면 새로운 콘솔을 띄울 때마다 설정해놓은 alias를 사용할 수 있다.

** 콘솔을 실행할 때마다 Import-Alias를 하는게 귀찮다면 Profile을 활용하여 Alias를 사용할 수 있다. 

 

mkdir $home\Documents\WindowsPowershell 폴더를 다음과 같은 위치에 만들어 profile.ps1를 작성한다

# profile.ps1 
Import-Alias -Path \\SEA-ADM1\Labfiles\AddedAlias.txt
Write-Host "Alias is successfully loaded"

이제 새로운 PowerShell 콘솔을 띄우면 정상적으로 Alias 사용이 가능하다.

'Study' 카테고리의 다른 글

WEB/WAS 취약점 진단 참고 - WebtoB  (1) 2023.10.27
커버로스(Kerberos)  (0) 2023.08.29
Windows Powershell(2)  (0) 2022.08.05
Puzzing 기본  (0) 2021.04.07

Hybrid File Server 

: On-premise 상의 파일 서버를 Azure로 migration하여 효율적인 파일 공유를 할 수 있도록 한다.


o Azure Files

PaaS 서비스의 이점을 가진 On-Premise 환경 내 파일 공유 기능 제공 

 

o DFS?

여러 대의 서버에 여러 개의 공유 폴더가 있다고 할 때, 사용자가 공유 폴더에 접근하려면 각 서버에 따로따로 접속해야 합니다. 이러한 불편을 해소해주는 것이 윈도우 서버의 분산 파일 시스템(Distributed File System, DFS)입니다.
분산 파일 시스템을 이용하면 여러 위치의 공유 폴더를 모아서 하나로 만들 수 있습니다. 이러한 가상의 공유 폴더를 네임스페이스(Namespace)라고 하는데, 사용자가 네임스페이스에 접속하면 네임스페이스에 속한 공유 폴더를 사용할 수 있습니다.
출처 https://www.soft2000.com/26153

 


실습 ) Contoso의 런던 본사(SEA-SVR1)와 시애틀 지사(SEA-SVR2) 간의 DFS(Distributed File System) 복제에 대한 우려를 해결하기 위해 Azure File Sync를 두 개의 사내 파일 공유 간의 대체 복제 메커니즘으로 테스트해본다.


Step 0) 아래 명령어를 관리자의 Windows PowerShell 창에서 입력하여 필요한 자료 다운로드

Start-BitsTransfer -Source 'https://github.com/MicrosoftLearning/AZ-800-Administering-Windows-Server-Hybrid-Core-Infrastructure/archive/refs/heads/master.zip' -Destination C:\Labfiles
Expand-Archive -Path 'C:\Labfiles\master.zip' -DestinationPath 'C:\Labfiles'
Move-item -Path "C:\Labfiles\AZ-800-Administering-Windows-Server-Hybrid-Core-Infrastructure-master\Allfiles\Labfiles\Lab10*" -Destination "C:\Labfiles" -confirm:$false

 

Step 1) SEA-SVR1 및 SEA-SVR2에 DFS 복제 구현

DFS 관리도구 설치

Install-WindowsFeature-Name RSAT-DFS-Mgmt-Con-IncludeManagementTools

Step 0 을 통해 다운로드 받은 파일 중, L10~ 파일을 powershell ISE 상에서 실행시켜 DFS를 배포한다.


이제 DFS 배포를 테스트해본다.

 

DFS는 SEA-SVR1과 SEA-SVR2의 S:\Data 폴더 간에 내용을 복제한다.
svr1에서 공유 폴더에 파일 작성
SVR2에서 공유 폴더에 접속하니 방금 전에 만든 파일이 보인다.


Step 2) DFS 복제 환경을 File Sync로 migration하기 위해 준비

먼저 파일 동기화 그룹을 만들고 구성해야 한다.

Azure에 접속하여 storage accounts 서비스 이용
생성한 storage account 정보

 이제 Azure File shares 를 만들고 사용한다

이름은 share1

** share1에 File1.txt 샘플 파일을 업로드 한다.

connect 하기 위해 Connect 탭을 클릭하여 복사

** 이후 Snapshots 서비스를 설정해놓는다.

Powershell ISE 를 이용해 실행시킨다.
Z 드라이브에 성공적으로 파일 공유가 되었음을 알 수 있다.
파일 탐색기에 Z: 를 입력하여 접속하니 Azure상에서 올렸던 File1.txt가 보인다.

** File1.txt 파일을 열어 내용을 수정한다.

Snapshot 설정을 통해 원래 파일대로 복구(Restore)도 가능하다.

 

▼ Storage Sync Service 및 File Sync 그룹을 배포한다.

아직 등록된 서버가 없다.

※ 이제 필요한 구성 요소를 모두 갖추었다.


Step 3) DFS 복제를 File Sync 기반 복제로 대체한다
크게 아래 단계로 진행한다.

  1. SEA-SVR1를 Server Endpoint에 추가한다.
  2. SEA-SVR2를 File Sync에 등록한다.
  3. DFS 복제를 제거하고 SEA-SVR2를 Server Endpoint에 추가한다.

 

Azure File Sync agent 링크를 따라가 다운로드한다.

다운로드 한 파일을 Lab10 폴더에 복사하고, Install~ 파일을 PowerShell ISE 상에서 실행시킨다.

** 주의할 점 : ResourceGroup 이름을 기억해뒀다가 쉘 스크립트 내 $rgName 변수를 수정해야 한다!

 

실행 중간에 WARNING 창에 나오는 코드를 복사하여 기억해둔다. 뒤에 작업을 해야 성공적으로 끝난다.

▼  새 창을 띄워 https://microsoft.com/devicelogin.로 접속하여 방금 기억해둔 코드를 입력한다.

코드 입력
Windows PowerShell ISE 창. 그러면 이제 쉘 스크립트가 성공적으로 마무리된다.
다시 Azure 접속하여 FileSync1확인

** SEA-SVR1 이 등록된 것을 확인할 수 있다.

\\SEA-SVR1\Data 폴더를 보면 아직 Azure와 Sync 는 안된 것을 알 수 있다. File1.txt가 없기 때문

 

▼  다시 Azure로 돌아가 FileSync1의 Sync groups에 접속한다.

server end point를 추가한다.
성공적으로 SEA-SVR1을 Endpoint로 지정하여 Sync 했다.

 

아까 SEA-SVR1을 등록할 때 사용했던 설치 파일에서 svrName만 SEA-SVR2로 바꾸어 실행한다.

** 이전과 같은 방식으로 SEA-SVR2를 등록한다

 

 이제 DFS를 삭제하고 SEA-SVR2도 End point로 등록해준다.

관리자 컴퓨터(SEA-ADM1)에서 DFS 관리도구를 통해 DELETE 작업

** SEA-SVR2 Endpoint 등록한 후 \\SEA-SVR2\Data 폴더에서 svr2-test.txt 파일을 생성한다.

 

 

 

Step 4) DFS로 복제하던 것을 Azure File Sync를 통한 복제로 성공적으로 교체했는지 확인한다.

\\SEA-SVR1\Data 폴더에서도 방금 만든 파일이 보인다.

** 파일 동기화 성공

 

 

Step 5) 각종 복제 시뮬레이션

 C:\Windows\INF 폴더에는 800개 이상의 파일이 있으며 크기는 40MB 이상이다.

Azure 접속

 파일 동기화를 모니터링할 수 있다.

 

svr2에서 Demo.txt 파일을 생성하여 작성한다.
\\svr1\data에도 Demo.txt 파일이 공유되었으며, 이를 수정해본다.
Demo.txt로 저장하면 충돌이 일어나기 때문에 알아서 '다른 이름으로 저장'이 기본으로 뜬다.

▲ 복제 충돌 시 알아서 해결해준다.

 

'Study > Cloud' 카테고리의 다른 글

AZ104 (Administer Governance and Compliance)  (0) 2022.08.06
AZ104 (Azure AD&Accounts)  (0) 2022.08.06
AZ800 (Storage Spaces Direct)  (0) 2022.08.03
AZ800 (File Server & Storage Management)  (0) 2022.08.02
AZ-800 (관리)  (0) 2022.07.29

Storage Space 

: 로컬 디스크를 그룹화하여 단일 스토리지로 이용하는 기능


Storage Space Direct

: Hyper-v를 클러스터링하여(묶어서) 하나의 Pool에 넣어 작업하는 것

출처 https://docs.microsoft.com

  • 네트워킹 Storage Space Direct는 SMB 다이렉트 및 SMB 다중 채널을 비롯한 SMB3을 사용하여 이더넷을 통해 서버 간에 통신한다.
  • 장애 조치(failover) 클러스터링. 하나의 노드에 장애가 생겼을 때 연결된 다른 노드의 컴퓨터가 서비스를 이어받아(Failover) 계속해서 서비스되도록 한다.
  • Storage Pool. 저장소 공간 기반이 되는 드라이브 컬렉션. 
  • Storage Space
  • ReFS(복원 파일 시스템). ReFS는 가상화를 위해 구축된 뛰어난 파일 시스템
  • CSV(클러스터 공유 볼륨). CSV는 클러스터 노드의 파일 시스템을 통해 액세스할 수 있는 단일 네임스페이스로, 여러 볼륨을 통합한다.
  • Scale Out File Server. 네트워크를 통해 Hyper-V를 실행하는 다른 클러스터와 같은 SMB3 액세스 프로토콜을 사용하여 클라이언트에 원격 파일 액세스를 제공하여 Storage Spaces Direct를 네트워크 연결 스토리지(NAS)로 효과적으로 전환한다.

실습) 관리자 컴퓨터(SEA-ADM1)에서 Storage Space Direct 구성하기

모든 명령어를 windows powershell 에서 진행

** Invoke-Command : 원격 설치

** 16번째 줄 뒤쪽에 잘린 내용 : Failover-Clustering -IncludeManagementTools}

Step 1)  먼저, SEA-SVR1, SEA-SVR2 및 SEA-SVR3에 file server role 및 FailOver Clustering 기능을 설치한 후, 관리도구를 설치한다.

Step 2) 클러스터 유효성 검사 

하드웨어 등이 정상인지 검사

Step 3) Failover 클러스터 구성
이름 : S2DCluster, 3개의 노드를 하나로 묶고 IP는 172.16.0.40

S2DCluster.Contoso.com 을 입력하여 새로 만든 클러스터와 연결한다.

 

** 37번째 줄 잘린 내용 : -Name S2DCluster.Contoso.com | Get-PhysicalDisk)}

Step 4) storage space direct를 사용하도록 설정


Step 5) storage pool 생성

이름은 S2DStoragePool


Step 6) virtual disk 생성(pool을 나눈다)


Step 7) file server Cluster생성

 

 

** 잘린 내용 : Contoso\Administrator"}

Step 8) File 공유

 

Stop-Computer -ComputerName SEA-SVR3 -Force

: 위 명령어를 입력해 세 번째 노드를 중지시켜본다.

결과

※ 3대를 하나로 묶었기 때문에 1대가 죽어도 계속해서 파일 share 서비스 이용이 가능하다!

즉, Storage Spaces Direct 기능이 성공적으로 동작한다는 것을 확인할 수 있었다.

'Study > Cloud' 카테고리의 다른 글

AZ104 (Azure AD&Accounts)  (0) 2022.08.06
AZ800 (Hybrid File Server)  (0) 2022.08.03
AZ800 (File Server & Storage Management)  (0) 2022.08.02
AZ-800 (관리)  (0) 2022.07.29
AZ-800 (GPO)  (0) 2022.07.27

File System

: 저장 장치에서 파일의 저장 및 검색을 구현하는 기능 제공

Windows Server File System

유형 : FAT, NTFS, ReFS

  • FAT(<=4GB) : 보안X, USB등이 해당
  • NTFS(<=8PB) : 보안O, 압축O, 서버 OS의 Boot Volume, Data Volume 등이 해당 
  • ReFS(<=35PB) : 보안O, 압축X, VM의 data volume 등이 해당(boot volume X)

FSRM(File Server Resource Manager)

: 파일 서버에 저장된 데이터를 관리 및 분류


- 폴더 할당량 지정 (최대 몇 mb, 등)
- 특정 파일 형태 저장 안되게 지정 (동영상 저장 안되게..)

이미지 파일을 저장하지 못하게 설정
이미지를 끌어오려고 했지만 access denied 된다.
이런 식으로 용량 제한도 둘 수 있다.

** Fsutil을 file createnew와 함께 사용하여 임의 크기의 파일을 생성할 수 있음

아직 100MB까지 차지 않아서 생성이 가능


Storage Spaces

: 윈도우즈 서버 및 윈도우즈 10에 내장된 스토리지 가상화 기능

: 저장소 공간 드라이브 오류로부터 데이터를 보호할 수 있는 기능

이미지 출처 https://docs.microsoft.com/ko-kr/windows-server/storage/storage-spaces/storage-spaces-states
이미지 출처 https://techgenix.com/windows-10-storage-spaces/

• Storage Pool = (물리적) 디스크 모음

• Storage Space = (가상) 디스크 모음

• Volume = 크기, 드라이브의 문자, 파일 시스템

 

장점 
• 확장 가능하고 안정적이며 저렴한 스토리지를 구현하고 쉽게 관리할 수 있다
• 동일한 풀에서 서로 다른 유형의 스토리지(예: SATA, SAS, USB 및 SCSI)를 사용할 수 있다
• 특정 드라이브를 hot spare로 지정하고 hot spare를 사용하여 고장 난 풀을 자동으로 복구할 수 있다
• MMC(Microsoft Management Console) 또는 윈도우즈 PowerShell을 사용하여 로컬 또는 원격으로 관리할 수 있다

 

Resiliency type Number of data copies maintained
데이터 복제 수
Workload recommendations
권장 작업
Mirror  2 copies (two-way mirror) 
3 copies (three-way mirror)
= 실제 디스크 집합에 2~3개의 데이터 복사본을 저장
= 단일 디스크 오류를 방지하기 위해선 최소 2개의 실제 디스크 필요
대부분의 배포에 사용. 
일반적 용도의 파일 공유 또는 VHD(가상 하드 디스크) 라이브러리에 적합
Parity 2 disks (single parity)
3 disks (dual parity)
= 실제 디스크에 데이터 및 패리티 정보 저장
= 단일 디스크 오류를 방지하기 위해선 최소 3개의 실제 디스크 필요
보관이나 백업과 같은 순차적 작업에 사용
Simple 1 disk (중복 없음) 복원력이 필요하지 않거나 대체 복원 메커니즘을 제공하는 작업

** Simple 유형은 물리적 디스크가 고장나면 (백업되어 있지 않는 이상) 바로 고장

Provisioning type Features Workload recommendations
Thin JIT(just-in-time)를 기반으로 스토리지를 쉽게 할당 초기 스토리지 용량 절약 필요시
ex) 사용자 파일이 포함된 공유 폴더
Fixed(Thick) 볼륨을 생성할 때 스토리지 용량 미리 할당 보장된 예약 용량이 필요한 경우
ex) 높은 디스크 I/O가 필요한 데이터베이스

 

 

실습 ) 저장소 풀 생성 후 새 Disk provisioning 하기
순서 : 저장소 풀 생성 > 가상 디스크 생성 > 볼륨 생성

저장소 풀 생성. 이름은 SP1


가상 디스크 생성. 이름은 Three-Mirror

** 단일 볼륨을 호스트하는 미러된 가상 디스크를 생성


3방향 미러링된 디스크를 기반으로 볼륨을 생성
볼륨 정보. T 드라이브에 할당했다.


관리자 컴퓨터에서 sea-svr3으로 접속
파일 탐색기에서 볼륨을 관리. T 드라이브로 들어가서 폴더 및 파일 생성 가능


디스크 구성을 되돌린다.


Deduplication

: 데이터 무결성을 유지하면서 데이터 내에서 중복을 식별하고 제거하는 기능

많은 사람들이 같은 파일을 중복해서 올렸을 경우, 이 기능을 설정해놔야 불필요한 용량 차지를 막을 수 있고 스토리지 관리자가 중복된 데이터와 관련된 비용을 줄일 수 있다.

 

파일 서버의 M 드라이브에 중복되는 내용의 파일이 많다.
deduplication을 실행하면 점점 Used는 줄어들고 Free Disk 용량이 늘어남을 확인할 수 있다.


iSCSI(Internet Small Computer Systems Interface)

이미지 출처 https://www.educba.com/what-is-iscsi/

: 데이터 스토리지 서비스 연결을 위한 TCP/IP 기반 스토리지 네트워킹 표준
(기본적으로 iSCSI는 TCP 포트 3260을 사용)

구성요소
• iSCSI targets : 윈도우즈 Server. 파일 및 스토리지 서비스 역할 제공
• iSCSI initiators : 클라이언트. 접근하는 주체. target의 디스크를 자신의 로컬 디스크처럼 사용할 수 있음
• iSCSI Qualified Name (IQN) : 대상을 지정하고 찾는 고유 식별자
• Internet Storage Name Service (iSNS)

 

 

실습 ) iSCSI 스토리지 구성

iSCSI를 설치하고 SEA-SVR3에 대상을 구성할 예정
디스크 2에 ReFS로 포맷된 새 볼륨을 생성.&nbsp;디스크 3도 똑같이 볼륨을 생성해준다.

 

그리고 아래 명령어를 통해 iSCSI 트래픽을 허용하는 고급 보안 규칙을 사용하여 Windows Defender 방화벽을 구성한다.

New-NetFirewallRule -DisplayName "iSCSITargetIn" -Profile "Any" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 3260

New-NetFirewallRule -DisplayName "iSCSITargetOut" -Profile "Any" -Direction Outbound -Action Allow -Protocol TCP -LocalPort 3260

 

볼륨에 할당된 드라이브 확인

 

새 iSCSI 기능 추가
중간에 initiator 선택

 

 

SEA-DC1(이니시에이터)에서 iSCSI 대상에 연결하고 구성

** 대상 연결 시 iSCSI target인 SEA-SVR3.contoso.com 입력

 

SEA-ADM1에서 iSCSI 디스크 구성을 확인

Offline으로 되어 있다.

따라서 iSCSI initiator인 SEA-DC1으로 다시 돌아가 아래 명령어를 입력하여 Online으로 바뀌도록 설정해준다.

Initialize-Disk -Number 1

New-Partition -DiskNumber 1 -UseMaximumSize -DriveLetter E

Format-Volume -DriveLetter E -FileSystem ReFS

 

Initialize-Disk -Number 2

New-Partition -DiskNumber 2 -UseMaximumSize -DriveLetter D

Format-Volume -DriveLetter D -FileSystem ReFS

 

다시 SEA-ADM1에서 iSCSI 디스크 구성을 확인

 

마지막으로 디스크 구성을 원상태로 복구시켜본다.

iSCSI target인 SEA-SVR3에서 아래 명령어를 통해 디스크를 복구시킬 수 있다.

for ($num = 1;$num -le 4; $num++) {Clear-Disk -Number $num -RemoveData -RemoveOEM -ErrorAction SilentlyContinue}

for ($num = 1;$num -le 4; $num++) {Set-Disk -Number $num -IsOffline $true}

 

'Study > Cloud' 카테고리의 다른 글

AZ800 (Hybrid File Server)  (0) 2022.08.03
AZ800 (Storage Spaces Direct)  (0) 2022.08.03
AZ-800 (관리)  (0) 2022.07.29
AZ-800 (GPO)  (0) 2022.07.27
AZ-800 (AD)  (0) 2022.07.26

<Windows Server 보안 관리 수행>

  • 1. 보안 주체 식별
    On premise 환경에서는 어떤 보안 주체(사용자 및 그룹)가 어느 관리 그룹에 속할지 정해야 한다.

관리 그룹

  1. Administrator
    = AD에도 있고 local에도 있다.
  2. Domain Admins
    = AD DS 포리스트에 있는 모든 도메인의 Users 폴더에 위치.
    해당 구성원은 로컬 도메인 내 모든 관리 작업 수행이 가능. 
    기본적으로 로컬 도메인의 Administrator 사용자 계정만 Domain Admins에 속함.
    AD에 있는 Domain Admins가 local의 Administrator 그룹에 속하게 된다.
  3. Enterprise Admins
    = AD DS 포리스트 root 도메인의 Users 폴더에 위치.
    Enterprise admins 는 하위 domain을 관리할 수 있다.
    만약 domain에 속한 각 컴퓨터 관리를 하고 싶다면 Enterprise Admins 그룹을 각 domain의 Administrator 그룹에 넣으면 된다.
  4. Schema Admins
    = 스키마 수정, 삭제 권한

 

  • 2. 최소 권한 관리
    "최소 권한" = 특정 작업이나 작업 역할을 수행하는 데 필요한 권한으로만 액세스 권한을 제한
    (적용 대상: 사용자 계정, 서비스 계정, 컴퓨팅 프로세스)

  • 3. 권한 위임
    Administrator 계정에서 특정 사용자 또는 그룹에게 특정 권한을 위임한다
    제어 위임 마법사를 통해 더욱 세부적인 권한을 위임할 수있다.

  • 4. PAW (Priviliged Access Workstation) 
    ID 시스템, 클라우드 서비스 및 기타 중요한 기능 관리와 같은 관리 작업을 수행하는 데 사용할 수 있는 컴퓨터


  • 5. 점프 서버
    내부 네트워크와 다른 보안 영역에서 디바이스에 액세스하고 관리하는 데 사용되는 강화된 서버

<Windows Server 관리 도구>

  • Windows Admin Center
  • Server Manager
  • RSAT(원격 서버 관리 도구)
  • Windows PowerShell - 서버 원격 관리
실습 )
1. Windows Admin Center 설치
아래 2개의 명령어로 명령 프롬프트에서 admin center를 다운로드하고 설치한다.

-  Start-BitsTransfer -Source https://aka.ms/WACDownload -Destination "$env:USERPROFILE\Downloads\WindowsAdminCenter.msi"
-  Start-Process msiexec.exe -Wait -ArgumentList "/i $env:USERPROFILE\Downloads\WindowsAdminCenter.msi /qn /L*v log.txt REGISTRY_REDIRECT_PORT_80=1 SME_PORT=443 SSL_CERTIFICATE_OPTION=generate"

2. 접속 및 관리할 서버 추가
관리자 컴퓨터의 도메인으로 Admin Center에 접속한다.
Overview를 보면 전체적인 컴퓨터 사용량 등이 보인다.
관리 서버 추가를 위해 상단 메뉴바의 Add, Servers Add를 눌러 추가해준다.
서버 추가

3. 원격 접속
왼쪽 하단의 Settings - Remote Desktop 설정을 Allow하면 원격접속이 가능하다.


4. Powershell로 Server 원격 관리

접속 후 서비스 상태 확인
서비스 시작

 

'Study > Cloud' 카테고리의 다른 글

AZ800 (Storage Spaces Direct)  (0) 2022.08.03
AZ800 (File Server & Storage Management)  (0) 2022.08.02
AZ-800 (GPO)  (0) 2022.07.27
AZ-800 (AD)  (0) 2022.07.26
Kubernetes - Metrics Server  (0) 2022.07.25

지난 시간 복습

AD(Active Directory)

 

주요 기능 
1. 검색 ☞ 전화번호부(전화번호 찾기가 목적), 안내표지판(건물위치를 찾기가 목적)
= "회사의 자원을 쉽게 찾기 위한 서비스"

2. 인증 ☞ A 컴퓨터에서 로그인하던, B에서 하던, C에서 하던, 미국에서 하던 싱가포르에서 하던 자신의 계정으로 로그인할 수 있고 자신이 쓰던 바탕화면을 볼 수 있음

3. Group Policy를 통한 관리 ☞ 특정 사용자에게 특정 시간에만 로그인하도록 하거나 특정 파일에 접근하지 못하도록 하는 등 사용자 그룹별로 규칙을 정하는 것

4. 3rd party 지원 


Group Policy Object(GPO)

:  AD 기반으로 되어 있는 윈도우 기반 클라이언트, 서버들을 일괄적으로 중앙에서 제어할 수 있게 하는 시스템 

:  AD DS 도메인에서 구성을 관리하며 그룹 정책 설정을 정의한다. 
강력한 관리 도구로, 많은 수의 사용자와 컴퓨터에 다양한 설정을 입력할 수 있다. 

:  사이트, 도메인, OU 단위로 그룹 정책을 설정할 수 있다. 

 

use ex) 회사 내부 진행 중인 Project Folder를 sgroup과 lgroup에만 공유하고 싶을 때, 회사 내 모든 컴퓨터의 DHCP 서비스를 중지시키고자 할 때... 

Server Manager의 'Group Policy Management' 항목을 통해 관리할 수 있다

(win 단축 명령어 : gpmc.msc)

새로운 그룹 정책을 추가할 수 있다. 이름은 new rules로 한다.
사용자 또는 컴퓨터의 하나 이상의 구성 설정에 적용되는 하나 이상의 정책 설정을 포함한다.

 

실습) Administrator 계정으로 Projectfiles 폴더를 특정 그룹(sales)에게만 공유하는 Group Policy 
ProjectFiles 폴더 구성
ProjectFiles를 공유 폴더로 설정

N: 드라이브에 projectfiles 폴더를 연결시키는 규칙 설정(실습 바로 위 사진에서 이어지는 내용)
해당 정책을 Sales 그룹에 적용시킨다.
sales 그룹의 users 확인
sales 그룹의 Cameron으로 접속
실제로 projectfiles 폴더가 공유되었음을 알 수 있다.
IT 그룹의 Bruno로 접속해보겠다.
공유 폴더가 뜨지 않음을 확인할 수 있다.

 


사용한 cmd 명령어
- gpresult /r : 그룹 정책 확인
- gpupdate /force : 윈도우 그룹정책 업데이트. 껐다키지 않고 수정사항 적용 
- net users : 사용자 계정 목록 보기

- set logon : 어디서 인증받았는지 알 수 있음

 

사용한 win+r 단축 명령어
- gpmc.msc : 그룹 정책 관리 콘솔
- services.msc : 윈도우 서비스 관리

'Study > Cloud' 카테고리의 다른 글

AZ800 (File Server & Storage Management)  (0) 2022.08.02
AZ-800 (관리)  (0) 2022.07.29
AZ-800 (AD)  (0) 2022.07.26
Kubernetes - Metrics Server  (0) 2022.07.25
Kubernetes - 인증과 권한  (0) 2022.07.25

- 주어진 범위 내에서 관리 = "Administion"
- 범위 외 관리 = "Management"

사용자 인증
- 기본 : SAM DB로 인증처리(개인)
- 중/고급 : AD로 인증처리(기업)
(SAM : lusrmgr.msc 혹은 netusers / AD : AD관리도구 를 통해 확인할 수 있다.)

사진 출처 https://docs.env0.com/docs/azure-active-directory

AD(Active Directory) 

:  네트워크 상의 모든 리소스에 관한 정보(사용자 및 컴퓨터, 그룹 등)를 논리적 계층 구조로 중앙 저장소에 저장하여 네트워크 상에서 인증을 통해 언제 어디서라도 그 리소스를 검색하고 엑세스 할 수 있게 해주는 디렉터리 서비스 

 

AD를 통해 직원들에게는 편리함을 주고 관리자는 보안(사용자 인증과 접근 권한 제어)을 구현할 수 있다.

 

ex) AD로 도메인을 형성 → 사용자가 로그인할 때 AD에 속한 계정으로 로그인 → 별도의 인증 작업을 할 필요가 없다

 


AD DS(AD Domain Service)

: 사용자, 주변 장치 등의 정보를 네트워크 상에 저장하고 이 정보들을 관리자가 통합하여 관리하도록 해준다. AD DS 를 사용하기 위해선 DNS서버를 설치해야 한다.

 

※ AD DS를 통하여 아래와 같은 작업이 가능하다

  • 앱의 설치, 구성, 업데이트
  • 보안 인프라 관리
  • 원격 액세스 서비스 및 DirectAccess를 사용하도록 설정
  • 디지털 인증서 발급 및 관리

AD DS는 논리적 및 물리적 구성 요소를 모두 포함한다.

ⓐ 논리적 구성요소 : 조직에 적합한 AD DS 설계를 구현하는 데 사용하는 구조

  • 파티션: 복제 단위
  • 스키마: AD DS에서 생성되는 개체를 정의하는 데 사용하는 개체 형식 및 특성의 정의 집합
  • 도메인
    : AD의 가장 기본이 되는 단위. AD가 설치된 윈도우 서버가 하나의 도메인이라고 보면 된다. 즉, 관리를 하기 위한 하나의 큰 범위 단위이다. 회사와 같은 것 
  • 도메인 트리: 도메인의 집합. 부모 도메인 및 연속 DNS 네임스페이스를 공유하는 도메인의 계층 구조 집합.
  • 포리스트: 두 개 이상의 트리로 AD가 구성된 것. 같은 포리스트 안의 도메인 사이에는 상호 양방향 전이 트러스트를 갖는다.(서로 신뢰)
  • 조직 구성 단위(Organization Unit, OU): 조직, 부서와 같은 것. 일종의 폴더와 같은 개념(권한 위임과 그룹 정책을 적용할 수 있는 최소한의 단위)
  • 컨테이너


ⓑ 물리적 구성요소 : 구체적인 개체 또는 실제 세계의 구체적인 구성 요소를 설명하는 개체

  • 도메인 컨트롤러(Domain Controller, DC)
    : AD가 설치된 컴퓨터. AD 설치를 통해 도메인을 만들고 이를 운영(로그인, 이용 권한 확인, 새로운 사용자 등록, 암호 변경, 그룹 등을 처리)한다. AD DS DB의 복사본을 포함한다. DC는 변경 내용을 처리하고 도메인에 있는 다른 모든 DC에게 변경 내용을 복제할 수 있다. 회사의 대표/사장과 같은 것
    DC가 여러개 있으면 가용성이 좋고(하나가 죽어도 됨) 보안성이 좋다.
  • 데이터 저장소
  • 글로벌 카탈로그
    : AD 트러스트 내의 도메인들에 포함된 개체에 대한 정보를 수집하여 저장하는 통합 저장소. 
    AD를 구성하면 가상 먼저 설치하는 DC가 글로벌 카탈로그 서버로 지정된다. 글로벌 카탈로그를 사용하면 포리스트의 다른 도메인에 있는 도메인 컨트롤러에 저장되어 있을 수 있는 개체를 빠른 속도로 검색할 수 있다.
  •  RODC(읽기 전용 도메인 컨트롤러)
    : 주 DC로부터 AD와 관련된 데이터를 전송받아 저장한 후 사용하지만 스스로 데이터를 추가하거나 변경하지는 않는다.

AD DS DB(AD DS DataBase)

: 사용자 계정, 컴퓨터 계정, 그룹과 같은 모든 도메인 개체의 중앙 저장소

 

'Study > Cloud' 카테고리의 다른 글

AZ-800 (관리)  (0) 2022.07.29
AZ-800 (GPO)  (0) 2022.07.27
Kubernetes - Metrics Server  (0) 2022.07.25
Kubernetes - 인증과 권한  (0) 2022.07.25
Kubernetes - Pod Scheduling  (0) 2022.07.25

Metrics Server

: Pod과 Node들의 CPU/Memory 사용량을 주기적으로 모니터링하고 metrics 정보를 수집하여 API Server에 제공

(pod Autoscaling 을 위해 반드시 필요함)

 

 

metric server 설치여부확인

-  kubectl top nodes
-  kubectl top pods -A

 

Metric Server 설치

-  yum install git -y
-  git clone https://github.com/237summit/kubernetes-metrics-server.git
-  cd kubernetes-metrics-server
-  kubectl apply -f .
-  kubectl get deploy -A
-  kubectl get pod -n kube-system

metrics server를 통한 각 node와 pod의 사용량 확인

 

'Study > Cloud' 카테고리의 다른 글

AZ-800 (GPO)  (0) 2022.07.27
AZ-800 (AD)  (0) 2022.07.26
Kubernetes - 인증과 권한  (0) 2022.07.25
Kubernetes - Pod Scheduling  (0) 2022.07.25
Kubernetes - Controller-2  (0) 2022.07.23

자원을 이용하기 위해

출처 :&nbsp;https://kubernetes.io/ko/docs/concepts/security/controlling-access/


>> 인증(credential(ID(Account) + PW(public key, token)) → 권한허가 → Admission Controll

 

k8s에서는 사용자 별로 특정한 Object 관리 범위를 설정할  있다. 그러므로 사용자를 생성  있어야 하고, Role 만들어 해당 User에게 RoleBinding하고, namespace별로 context 지정하여 해당 사용자는 제한된 업무만 하도록 해야 한다.

1) 인증-User Service Account

User Account

Service Account : 백그라운드에서 실행, 애플리케이션(pod)이 실행 

 

kubernetes-admin : k8s의 root계정

User : cluster외부에서 k8s조작

 

인증서 = 인증 + 데이터 암호화
사용자는 반드시 Kubernetes cluster가 발행한 인증서가 있어야 한다. 그런 후 그 인증서를 Kubernetes API에 제공한다.

 

실습 ) devuser를 새로 추가해 pod만 관리하도록 

 

devuser 계정 생성

-  useradd devuser
-  passwd devuser
-  mkdir -p ~devuser/.kube  
-  cp -i /etc/kubernetes/admin.conf ~devuser/.kube/config
-  chown devuser:root ~devuser/.kube/config

ⓐ Private Key 생성하기

-  openssl genrsa -out devuser.key 2048
-  openssl req -new -key devuser.key -out devuser.csr -subj "/CN=devuser"
-  cat devuser.csr | base64 | tr -d "\n"

 

CertificateSigningRequest 생성하기

-  wget http://down.cloudshell.kr/k8s/lab/csr-devuser.yaml : 인증서 요청 파일
-  vi csr-devuser.yaml : devuser라는 사용자를 등록

(cat devuser.csr | base64 | tr -d "\n" 했던 결과를 복사하여 request 부분에 작성한다)

 

CertificateSigningRequest(CSR) 승인하기

-  k apply -f csr-devuser.yaml

승인

-  kubectl get csr devuser -o yaml  : 사용자 추가 
-  kubectl get csr devuser -o jsonpath='{.status.certificate}' | base64 -d > devuser.crt
-  kubectl get serviceaccounts 
-  kubectl get secrets (sa의 토큰(암호)을 알 수 있음)

 

 

2) 권한 관리 - Role 및 RoleBinding (권한(role)을 만들고 이를 부여(binding)한다)

-  kubectl apply -f csr-devuser.yaml
-  kubectl get csr  : 확인
-  kubectl get csr devuser -o yaml
-  kubectl get serviceaccount

 

Role 생성하기-1: developer_role

-  kubectl create role developer_role --verb=create --verb=get --verb=list --verb=update --verb=delete --resource=pods

devuser는 pod에 대해서 create, get, list, update 권한을 갖고 있다.

 

Role 생성하기-2: sysadmin_role

-  kubectl create role sysadmin_role --verb=create --verb=get --verb=list --verb=update --verb=delete --resource=pods --dry-run=client -o yaml > sysadmin.yaml

kubectl apply -f sysadmin.yaml
-  kubectl get role

 

-  kubectl create rolebinding developer-binding-devuser --role=developer_role --user=devuser

devuser는 pod에 대해서 create, get, list, update, delete 하는 권한을 갖게 된다.

 

-  kubectl config view

현재 devuser에 대한 정보가 없다

-  kubectl config set-credentials devuser --client-key=devuser.key --client-certificate=devuser.crt --embed-certs=true

kubeconfig에 devuser가 등록되었다

-  kubectl config set-context devuser --cluster=kubernetes --user=devuser

devuser를 context에 추가한다

-  kubectl config current-context

현재 상태

-  kubectl config use-context devuser
-  kubectl config current-context

현재 context는 devuser로 바뀌었다

• kubectl get pods -o wide (## 성공)
• kubectl get svc (## 실패)
• kubectl get nodes (## 실패)
• kubectl run myweb --image=nginx (## 성공)
• kubectl delete pod --all (## 성공)
권한을 부여한 대로 잘 작동한다.

 


kubectl cluster 구성정보 확인 및 변경방법

• kubectl config 
• kubectl config view
• kubectl config get-contexts
• kubectl config set-context devuser --cluster=kubernetes --user=devuser
• kubectl config use-context devuser  (## 현재context 지정하기)
• kubectl config current-context
• kubectl config use-context kubernetes-admin@kubernetes 
• kubectl config get-contexts (## * 가현재context이다)
• kubectl config current-context

'Study > Cloud' 카테고리의 다른 글

AZ-800 (AD)  (0) 2022.07.26
Kubernetes - Metrics Server  (0) 2022.07.25
Kubernetes - Pod Scheduling  (0) 2022.07.25
Kubernetes - Controller-2  (0) 2022.07.23
Kubernetes - Controller  (0) 2022.07.22
Pod Scheduling

그림 출처 : https://kubesphere.io/blogs/monitoring-k8s-control-plane/

kubectl 및 yaml 파일로 Pod를 배포하라고 명령 → master의 API Server가 Master의 Scheduler로 보냄 Scheduler가 어느 node에 Pod를 배포할 것인지를 결정 (==> 요청하는 명령 및 Node 상태에 따라)

 

  • Pod 배정 시 특정한 Node에만 배치할 수 있다
    (nodeName, nodeSelector, nodeAffinity, podAffinity)
  • 특정한 Node에는 배정하지 않도록 설정할 수도 있다
    (podAntiAffinity, Taint, cordon)
    ex) 기본적으로 master에는 Taint 설정되어 있어서 Pod이 실행되지 않음
nodeName : node 이름 사용하여 배정
nodeSelector : node 라벨 사용하여 배정
nodeAffinity : nodeSelector와 유사, 가중치 부과
podAffinity : 특정 label을 가진 Pod가 실행중인 node에 배정
podAntiAffinity : 특정 label을 가진 Pod가 실행중이지 않는 node에 배정
Cordon : 노드에 cordon 설정 시 그 노드는 Pod를 배정받지 않음
Drain : 기존에 실행중인 Pod를 뽑아내어 다른 node로 이동하고, cordon 설정이 된다.

 

실습 1) nodeName

-  wget http://down.cloudshell.kr/k8s/lab/pod/hostPath-2pods.yaml
-  kubectl apply -f hostPath-2pods.yaml
nodeName 설정(redis와 nginx 둘 다 node1으로 배정)

-  kubectl get pod -o wide

node1에서만 생성

 

실습 2) nodeSelector
node label 지정하기 : kubectl label nodes [노드이름] [label key]=[label value]
label 조회하기 :  kubectl get node --show-labels

-  kubectl label node node1 gpu=true
-  kubectl label node node2 gpu=true

-  kubectl label node node{1,3} ssd=true
node 마다 라벨 지정

-  k get node -L gpu,ssd

-L 옵션 사용하여 조회하기

-  wget http://down.cloudshell.kr/k8s/lab/pod/tensorflow-gpu.yaml
-  wget http://down.cloudshell.kr/k8s/lab/pod/tensorflow-gpu-replicas3.yaml
-  wget http://down.cloudshell.kr/k8s/lab/pod/tensorflow-gpu-ssd.yaml
-  kubectl apply -f tensorflow-gpu.yaml -f tensorflow-gpu-replicas3.yaml -f tensorflow-gpu-ssd.yaml

gpu=true인 node에 배정하도록 nodeSelector 설정
gpu=true가 없는 node3에는 배정되지 않았음을 알 수 있다.

 

실습 3) nodeAffinity
• nodeSelector: selector field에 명시된 모든 label이 포함되어야 배정됨
nodeAffinity: 특정 node에만 Pod이 실행되도록 유도

-  kubectl label nodes node2 disktype=ssd
-  wget http://down.cloudshell.kr/k8s/lab/pod/tensorflow-gpu-ssd-affinity.yaml
-  kubectl apply -f tensorflow-gpu-ssd-affinity.yaml

yaml

required : disktype=exist
preffered: gpu="true", disktype="ssd"
node2는 둘 다 해당되니까 weight = 20
node1은 weight = 10

weight가 더 높은 node2에 배정됨을 알 수 있다.


label 삭제하기
-  kubectl label nodes node{1..3} disktype-
-  kubectl label nodes node{1..3} gpu-
-  kubectl label nodes node{1..3} ssd-

 

실습 4) podAffinity
• podAffinity : pod끼리 가깝게 배치하기
• podAntiAffinity : pod끼리 멀리 배치하기


-  kubectl run backend -l app=backend --image=busybox -- sleep 9999
-  kubectl get pods -o wide --show-labels
-  kubectl get pod -o wide


-  wget http://down.cloudshell.kr/k8s/lab/pod/pod-affinity.yaml (## podAffinity)
-  kubectl apply -f pod-affinity.yaml

label이 app=backend인 Pod가 실행중인 Node에 5개의 Pod를 배정한다

backend Pod가 실행중인 node2에 5개의 frontend Pod가 배정되었다.

 

실습 5) nodeTaint

-  kubectl describe nodes master | grep -i taint
NoSchedule : 스케줄 하지 마라

기본적으로 master에는 Taint 설정이 되어 있어 Pod를 배치하지 않는다.

-   kubectl taint nodes master node-role.kubernetes.io/master- (## Taint 설정 해제) >> pod 배정하여 실행함
-   kubectl taint nodes master node-role.kubernetes.io=master:NoSchedule (## Taint 설정)


-  kubectl taint nodes node1 role=web:NoSchedule (## pod 배정되지 않음)
-  kubectl describe nodes node{1..3} | grep -i taint (## Taint 설정 여부 확인)
-  kubectl taint nodes node1 role- (## 특정 node의 taint 삭제)

실습 6) cordon

-  kubectl cordon node1
SchedulingDisabled 된다
-  kubectl apply -f deploy-nginx.yaml
실제로 node1을 제외한 Node에 Pod들이 배정된다.

-  kubectl uncordon node1 (## cordon 기능 해제)
실습 7) drain
drain 옵션
--ignore-daemonsets : 데몬셋이 관리하는 Pod들은 무시하고 그냥 삭제
--force : rc, rs, job, daemonset, statefulset에서 관리하지 않는 Pod까지 제거


특정 node에서 동작중인 모든 Pod을 제거

-  kubectl apply -f deploy-nginx.yaml (## 4개의 pod)
-  kubectl run pod-db --image=redis (## 따로 하나의 pod 생성)
pod-db 는 node1에 배정되었다.

node1의 H/W를 교체하는 일이 생겨서 실행중인 Pod를 모두 제거한 후 다시 다른 곳으로 실행하도록 하기 위해 node1을 drain한다.
-  kubectl drain node1 --ignore-daemonsets --force

drain을 하면 해당 node(node1)는 cordon이 된다.

단독으로 실행된 pod-db는 다시 살아나지 않는다

 

'Study > Cloud' 카테고리의 다른 글

Kubernetes - Metrics Server  (0) 2022.07.25
Kubernetes - 인증과 권한  (0) 2022.07.25
Kubernetes - Controller-2  (0) 2022.07.23
Kubernetes - Controller  (0) 2022.07.22
Kubernetes - Service  (0) 2022.07.22

+ Recent posts