inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Bậc thầy Kubernetes cho DevOps

Tải xuống tài liệu bài giảng và tệp ━

kubeinstall.sh 오류 확인 요청드립니다.

16

hyungsulee7798

1 câu hỏi đã được viết

0

다운받은 vmware 이미지로 강의 진행중입니다,

노션에서 다운받은 kubeibstall.sh을 작성하고 실행하면 다은과 같은 오류가 나옵니다. 내용 확인 부탁드립니다.

image.png

docker kubernetes

Câu trả lời 1

0

boanproject

버전이 좀 오래되어서 아래와 같이 변경을 했습니다.

제가 설치해보니 잘 되는데, 한번 교체를 해서 해보시기 바랍니다.




#!/usr/bin/env bash
# =====================================================================
#  Kubernetes 단일 노드(Control-plane + Worker) 설치 스크립트
#  대상 OS : Ubuntu 18.04 / 20.04 / 22.04 (cgroup v1/v2 모두 지원)
#  구성    : containerd + kubeadm/kubelet/kubectl v1.30 + Flannel CNI
#  사용법  : sudo bash install-k8s.sh
# =====================================================================
set -euo pipefail

# ---------------------------- 설정값 ---------------------------------
K8S_VERSION="${K8S_VERSION:-v1.30}"                 # Kubernetes 마이너 버전
POD_CIDR="${POD_CIDR:-10.244.0.0/16}"               # Flannel 기본 Pod 대역
NODE_IP="${NODE_IP:-$(hostname -I | awk '{print $1}')}"  # API 서버 광고 IP
KUBE_USER="${SUDO_USER:-$(whoami)}"                 # kubectl을 사용할 일반 사용자
FLANNEL_URL="https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml"
export DEBIAN_FRONTEND=noninteractive

log() { echo -e "\n\033[1;32m[$(date +%H:%M:%S)] ==> $*\033[0m"; }

if [ "$(id -u)" -ne 0 ]; then
  echo "root 권한이 필요합니다: sudo bash $0" >&2; exit 1
fi

# ------------------------------------------------------------------
log "STEP 1. Swap 비활성화"
# ------------------------------------------------------------------
swapoff -a
sed -i.bak -E '/\sswap\s/ s/^([^#])/#\1/' /etc/fstab
free -h

# ------------------------------------------------------------------
log "STEP 2. 커널 모듈(overlay, br_netfilter) 및 sysctl 설정"
# ------------------------------------------------------------------
cat <<EOF > /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter

cat <<EOF > /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 >/dev/null
sysctl net.bridge.bridge-nf-call-iptables net.ipv4.ip_forward

# ------------------------------------------------------------------
log "STEP 3. 방화벽(ufw) 쿠버네티스 필수 포트 허용"
# ------------------------------------------------------------------
if command -v ufw >/dev/null 2>&1 && ufw status | grep -q "Status: active"; then
  ufw allow 22/tcp            # SSH
  ufw allow 6443/tcp          # kube-apiserver
  ufw allow 2379:2380/tcp     # etcd
  ufw allow 10250/tcp         # kubelet API
  ufw allow 10257/tcp         # kube-controller-manager
  ufw allow 10259/tcp         # kube-scheduler
  ufw allow 30000:32767/tcp   # NodePort 서비스
  ufw allow 8472/udp          # Flannel VXLAN
  ufw allow from "${POD_CIDR}"    # Pod 네트워크 내부 통신
  ufw allow from 10.96.0.0/12     # Service 네트워크 내부 통신
  ufw status numbered
fi

# ------------------------------------------------------------------
log "STEP 4. 필수 패키지 설치"
# ------------------------------------------------------------------
apt-get update -y || true
apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
mkdir -p -m 755 /etc/apt/keyrings

# ------------------------------------------------------------------
log "STEP 5. containerd 설치 (Docker 공식 저장소)"
# ------------------------------------------------------------------
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  | gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
  > /etc/apt/sources.list.d/docker.list
apt-get update -y || true
apt-get install -y containerd.io

# containerd 기본 설정 생성 + SystemdCgroup 활성화 + pause 이미지 지정
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sed -i -E 's#sandbox_image = ".*"#sandbox_image = "registry.k8s.io/pause:3.9"#' /etc/containerd/config.toml
systemctl restart containerd
systemctl enable containerd
containerd --version

# ------------------------------------------------------------------
log "STEP 6. kubeadm / kubelet / kubectl 설치 (${K8S_VERSION})"
# ------------------------------------------------------------------
curl -fsSL "https://pkgs.k8s.io/core:/stable:/${K8S_VERSION}/deb/Release.key" \
  | gpg --dearmor --yes -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] \
https://pkgs.k8s.io/core:/stable:/${K8S_VERSION}/deb/ /" \
  > /etc/apt/sources.list.d/kubernetes.list
apt-get update -y || true
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl
systemctl enable --now kubelet
kubeadm version -o short

# ------------------------------------------------------------------
log "STEP 7. kubeadm init (클러스터 초기화)"
# ------------------------------------------------------------------
if [ ! -f /etc/kubernetes/admin.conf ]; then
  kubeadm config images pull
  kubeadm init \
    --pod-network-cidr="${POD_CIDR}" \
    --apiserver-advertise-address="${NODE_IP}" \
    | tee /root/kubeadm-init.log
else
  echo "이미 초기화된 클러스터입니다 (/etc/kubernetes/admin.conf 존재) - 건너뜀"
fi

# ------------------------------------------------------------------
log "STEP 8. kubectl 설정 (root, ${KUBE_USER})"
# ------------------------------------------------------------------
mkdir -p /root/.kube
cp -f /etc/kubernetes/admin.conf /root/.kube/config
USER_HOME=$(getent passwd "${KUBE_USER}" | cut -d: -f6)
mkdir -p "${USER_HOME}/.kube"
cp -f /etc/kubernetes/admin.conf "${USER_HOME}/.kube/config"
chown -R "$(id -u "${KUBE_USER}")":"$(id -g "${KUBE_USER}")" "${USER_HOME}/.kube"
export KUBECONFIG=/etc/kubernetes/admin.conf

# ------------------------------------------------------------------
log "STEP 9. Flannel CNI 설치"
# ------------------------------------------------------------------
kubectl apply -f "${FLANNEL_URL}"

# ------------------------------------------------------------------
log "STEP 10. 단일 노드에서 Pod 스케줄링 허용 (control-plane taint 제거)"
# ------------------------------------------------------------------
kubectl taint nodes --all node-role.kubernetes.io/control-plane- || true

# ------------------------------------------------------------------
log "STEP 11. 노드 Ready 대기"
# ------------------------------------------------------------------
kubectl wait --for=condition=Ready node --all --timeout=300s
kubectl get nodes -o wide
kubectl get pods -A

# ------------------------------------------------------------------
log "STEP 12. 동작 테스트 (nginx 배포 + NodePort 노출)"
# ------------------------------------------------------------------
kubectl create deployment nginx-test --image=nginx --dry-run=client -o yaml | kubectl apply -f -
kubectl expose deployment nginx-test --port=80 --type=NodePort --dry-run=client -o yaml | kubectl apply -f -
kubectl rollout status deployment/nginx-test --timeout=300s
NODE_PORT=$(kubectl get svc nginx-test -o jsonpath='{.spec.ports[0].nodePort}')
kubectl get deploy,svc,pods -o wide
echo "--- curl http://${NODE_IP}:${NODE_PORT} ---"
curl -s "http://${NODE_IP}:${NODE_PORT}" | grep -i "<title>" || true

log "설치 완료! 일반 사용자(${KUBE_USER})로 'kubectl get nodes' 를 실행해 보세요."
echo "워커 노드 추가 명령: $(kubeadm token create --print-join-command)"

26년 11월 기준 쿠버네티스 설치 가이드 요청

0

13

1

ubuntu 18.04 다운로드 링크 삭제

0

65

2

cilium install 오류

0

175

2

external-ip로 지정된 ip주소로 접속되지 않습니다.

0

136

1

Google cloud에서 클러스터를 만드는 중에 다음과 같은 오류가 발생합니다.

0

209

2

강의가 중간에 끊긴 느낌이 듭니다.

0

128

1

이론 강의 pdf 자료 다운로드 문의

0

209

2

vmware 로 가상서버 여러 대 띄울때 고정ip 로 각각 할당하는 법 알려주세요

0

1632

2

강의해주시는 별도의 강의 자료는 없나요 ??

0

253

1

스토리지 클래스

0

276

1

버전관리

0

227

1

강의 흐름 이상

0

302

1

4 쿠버네티스 워크로드에서부터 갑자기

0

312

1

영상이 나오지 않습니다.

1

259

1

kubeadm init 실패(+join할 때도 참고)

2

1578

0

2024년 3월 4일 기준 설치

3

1679

2

loadbalancer 문의 드립니다.

0

283

1

NodePord local 환경에서 안됨

0

479

2

kubectl apply 와 create 차이점

0

985

1

서비스 DNS 연습문제 중 마지막 요청 실패 질문있습니다 (feat. 서비스 생성 실패 해결방법)

0

356

1

master init error

0

613

2

gasbugs/http-go 이미지 에러

1

432

2

GKE 질문입니다

0

339

1

worker에서 join할 때 오류발생

0

633

2