devops/kubernetes

kubernetes Hard Way 설치 <6>

Hoony.Song 2023. 5. 30. 11:26
반응형

K8S Worker Nodes 부트스트래핑

워커 노드 설정 (워커 노드 1과 2에 전부 작업)

○ OS dependencies 설치 

{
  sudo apt-get update
  sudo apt-get -y install socat conntrack ipset
}

○ 쿠버네티스 워커 바이너리 다운로드 및 설치 

wget -q --show-progress --https-only --timestamping \
  https://github.com/containernetworking/plugins/releases/download/v0.6.0/cni-plugins-amd64-v0.6.0.tgz \
  https://storage.googleapis.com/kubernetes-release/release/v1.12.0/bin/linux/amd64/kubectl \
  https://storage.googleapis.com/kubernetes-release/release/v1.12.0/bin/linux/amd64/kube-proxy \
  https://storage.googleapis.com/kubernetes-release/release/v1.12.0/bin/linux/amd64/kubelet

○ 설치 디렉토리 생성

sudo mkdir -p \
  /opt/cni/bin/ \
  /var/lib/kubelet \
  /var/lib/kube-proxy \
  /var/lib/kubernetes \
  /var/run/kubernetes

○ 다운 받은 바이너리 설치 

{
  chmod +x kubectl kube-proxy kubelet
  sudo mv kubectl kube-proxy kubelet /usr/local/bin
  sudo tar -xvf cni-plugins-amd64-v0.6.0.tgz -C /opt/cni/bin/
}

○ 도커 설치

sudo apt install docker.io -y

○ kubelet 구성

{
  sudo cp ${HOSTNAME}-key.pem ${HOSTNAME}.pem /var/lib/kubelet/
  sudo cp ${HOSTNAME}.kubeconfig /var/lib/kubelet/kubeconfig
  sudo cp ca.pem /var/lib/kubernetes/
}

○ kubelet-config.yaml 설정 파일 생성

cat << EOF | sudo tee /var/lib/kubelet/kubelet-config.yaml
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
authentication:
  anonymous:
    enabled: false
  webhook:
    enabled: true
  x509:
    clientCAFile: "/var/lib/kubernetes/ca.pem"
authorization:
  mode: Webhook
clusterDomain: "cluster.local"
clusterDNS:
  - "10.32.0.10"
runtimeRequestTimeout: "15m"
tlsCertFile: "/var/lib/kubelet/${HOSTNAME}.pem"
tlsPrivateKeyFile: "/var/lib/kubelet/${HOSTNAME}-key.pem"
EOF

○ kubelet.service systemd 파일 생성 

cat <<EOF | sudo tee /etc/systemd/system/kubelet.service
[Unit]
Description=Kubernetes Kubelet
Documentation=https://github.com/kubernetes/kubernetes
After=containerd.service
Requires=containerd.service

[Service]
ExecStart=/usr/local/bin/kubelet \\
  --config=/var/lib/kubelet/kubelet-config.yaml \\
  --container-runtime=docker \\
  --image-pull-progress-deadline=2m \\
  --kubeconfig=/var/lib/kubelet/kubeconfig \\
  --network-plugin=cni \\
  --register-node=true \\
  --v=2
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

 쿠버네티스 Proxy 구성

sudo cp kube-proxy.kubeconfig /var/lib/kube-proxy/kubeconfig

○ kube-proxy-config.yaml 설정 파일 생성

cat <<EOF | sudo tee /var/lib/kube-proxy/kube-proxy-config.yaml
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
clientConnection:
  kubeconfig: "/var/lib/kube-proxy/kubeconfig"
mode: "iptables"
clusterCIDR: "10.200.0.0/16"
EOF

○ kubelet-proxy.service systemd 파일 생성 

cat <<EOF | sudo tee /etc/systemd/system/kube-proxy.service
[Unit]
Description=Kubernetes Kube Proxy
Documentation=https://github.com/kubernetes/kubernetes

[Service]
ExecStart=/usr/local/bin/kube-proxy \\
  --config=/var/lib/kube-proxy/kube-proxy-config.yaml
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

○ 워커 서비스 시작

{
  sudo systemctl daemon-reload
  sudo systemctl enable kubelet kube-proxy
  sudo systemctl start kubelet kube-proxy
}

○ 결과 확인  active(runnung) 으로 나와야 함

sudo systemctl status kubelet kube-proxy

○ 컨트롤러1 에서 kubectl get nodes --kubeconfig admin.kubeconfig

NAME       STATUS     ROLES    AGE    VERSION
worker-0   NotReady   <none>   103s   v1.12.0
worker-1   NotReady   <none>   103s   v1.12.0

이렇게 나오면 정상

 

 

반응형

'devops > kubernetes' 카테고리의 다른 글

kubernetes Hard Way 설치 <완>  (0) 2023.05.30
kubernetes Hard Way 설치 <7>  (0) 2023.05.30
kubernetes Hard Way 설치 <5>  (0) 2023.05.30
kubernetes Hard Way 설치 <4>  (0) 2023.05.30
kubernetes Hard Way 설치 <3>  (0) 2023.05.30