쿠버네티스 무게감 있게 설치하기 - 설치 확인

Moongchi·2025년 6월 1일
0

kubernetes

목록 보기
5/14

[3-1] Rocky Linux 버전 확인

[root@k8s-master ~]# cat /etc/*-release
Rocky Linux release 8.8 (Green Obsidian)

[3-2] Hostname 확인

[root@k8s-master ~]# hostname
k8s-master

[3-3], [3-4] Network 확인

[root@k8s-master ~]# ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:fc:e9:96 brd ff:ff:ff:ff:ff:ff
    altname enp0s3
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute eth0
       valid_lft 29472sec preferred_lft 29472sec
    inet6 fd00::a00:27ff:fefc:e996/64 scope global dynamic mngtmpaddr
       valid_lft 85890sec preferred_lft 13890sec
    inet6 fe80::a00:27ff:fefc:e996/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:7b:05:20 brd ff:ff:ff:ff:ff:ff
    altname enp0s8
    inet 192.168.56.30/24 brd 192.168.56.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe7b:520/64 scope link
       valid_lft forever preferred_lft forever

[3-5] 자원(cpu, memory) 확인

[root@k8s-master ~]# lscpu
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              4
[root@k8s-master ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          5.8Gi       3.5Gi       186Mi        37Mi       2.1Gi       2.0Gi
Swap:            0B          0B          0B

[4] Rocky Linux 기본 설정

[root@k8s-master ~]# timedatectl
               Local time: Sun 2025-06-01 17:02:52 KST
           Universal time: Sun 2025-06-01 08:02:52 UTC
                 RTC time: Sun 2025-06-01 08:02:54
                Time zone: Asia/Seoul (KST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

[5] kubeadm 설치 전 사전작업
방화벽 해제 확인

[root@k8s-master ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

스왑(swap) 비활성화 확인 
>[root@k8s-master ~]# free
              total        used        free      shared  buff/cache   available
Mem:        6061208     3714604      170328       38732     2176276     2012624
Swap:             0           0           0
[root@k8s-master ~]# cat /etc/fstab | grep swap
#/swapfile none swap defaults 0 0

[6] 컨테이너 런타임 설치
[6-1] 컨테이너 런타임 설치 전 사전작업

[root@k8s-master ~]# cat /etc/modules-load.d/k8s.conf
overlay
br_netfilter
[root@k8s-master ~]# cat /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
[root@k8s-master ~]# lsmod | grep overlay
overlay               139264  64
[root@k8s-master ~]# lsmod | grep br_netfilter
br_netfilter           24576  0
bridge                290816  1 br_netfilter

[6-2] 컨테이너 런타임 (containerd 설치)
[6-2-1] containerd 패키지 설치 (option2)
[6-2-1-1] docker engine (containerd.io)만 설치

[root@k8s-master ~]# yum repolist enabled
repo id                                                              repo name
appstream                                                            Rocky Linux 8 - AppStream
baseos                                                               Rocky Linux 8 - BaseOS
docker-ce-stable                                                     Docker CE Stable - x86_64
extras                                                               Rocky Linux 8 - Extras
kubernetes                                                           Kubernetes
[root@k8s-master ~]# systemctl status containerd
● containerd.service - containerd container runtime
   Loaded: loaded (/usr/lib/systemd/system/containerd.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2025-05-29 20:23:13 KST; 2 days ago

[6-3] 컨테이너 런타임 (CRI활성화)

[root@k8s-master ~]# cat /etc/containerd/config.toml
          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
            BinaryName = ""
            CriuImagePath = ""
            CriuPath = ""
            CriuWorkPath = ""
            IoGid = 0
            IoUid = 0
            NoNewKeyring = false
            NoPivotRoot = false
            Root = ""
            ShimCgroup = ""
            SystemdCgroup = true
[root@k8s-master ~]# kubectl get -n kube-system cm kubelet-config -o yaml
apiVersion: v1
data:
  kubelet: |
    apiVersion: kubelet.config.k8s.io/v1beta1
    authentication:
      anonymous:
        enabled: false
      webhook:
        cacheTTL: 0s
        enabled: true
      x509:
        clientCAFile: /etc/kubernetes/pki/ca.crt
    authorization:
      mode: Webhook
      webhook:
        cacheAuthorizedTTL: 0s
        cacheUnauthorizedTTL: 0s
    cgroupDriver: systemd
[root@k8s-master ~]# cat /var/lib/kubelet/config.yaml
apiVersion: kubelet.config.k8s.io/v1beta1
authentication:
  anonymous:
    enabled: false
  webhook:
    cacheTTL: 0s
    enabled: true
  x509:
    clientCAFile: /etc/kubernetes/pki/ca.crt
authorization:
  mode: Webhook
  webhook:
    cacheAuthorizedTTL: 0s
    cacheUnauthorizedTTL: 0s
cgroupDriver: systemd

[7] kubeadm 설치

[root@k8s-master ~]# cat /etc/selinux/config
SELINUX=permissive

[root@k8s-master ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          permissive
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      33

[root@k8s-master ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.2", GitCommit:"7f6f68fdabc4df88cfea2dcf9a19b2b830f1e647", GitTreeState:"clean", BuildDate:"2023-05-17T14:18:49Z", GoVersion:"go1.20.4", Compiler:"gc", Platform:"linux/amd64"}

[root@k8s-master ~]# kubectl version
WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short.  Use --output=yaml|json to get the full version.
Client Version: version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.2", GitCommit:"7f6f68fdabc4df88cfea2dcf9a19b2b830f1e647", GitTreeState:"clean", BuildDate:"2023-05-17T14:20:07Z", GoVersion:"go1.20.4", Compiler:"gc", Platform:"linux/amd64"}
Kustomize Version: v5.0.1
Server Version: version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.16", GitCommit:"cbb86e0d7f4a049666fac0551e8b02ef3d6c3d9a", GitTreeState:"clean", BuildDate:"2024-07-17T01:44:26Z", GoVersion:"go1.22.5", Compiler:"gc", Platform:"linux/amd64"}

[root@k8s-master ~]# systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node Agent
   Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/kubelet.service.d
           └─10-kubeadm.conf
   Active: active (running) since Thu 2025-05-29 20:26:19 KST; 2 days ago

[8] kubeadm으로 클러스터 생성
[8-1] 클러스터 초기화 (Pod Network 세팅)

[root@k8s-master ~]# kubectl get node
NAME         STATUS   ROLES           AGE     VERSION
k8s-master   Ready    control-plane   2d21h   v1.27.2

[root@k8s-master ~]# kubectl cluster-info dump | grep -m 1 cluster-cidr
                            "--cluster-cidr=20.96.0.0/16",

[root@k8s-master ~]# kubectl cluster-info
Kubernetes control plane is running at https://192.168.56.30:6443
CoreDNS is running at https://192.168.56.30:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

[root@k8s-master ~]# kubectl get pods -n kube-system
NAME                                 READY   STATUS    RESTARTS        AGE
coredns-5d78c9869d-gsqwl             1/1     Running   0               2d21h
coredns-5d78c9869d-zpvlh             1/1     Running   0               2d21h
etcd-k8s-master                      1/1     Running   0               2d21h
kube-apiserver-k8s-master            1/1     Running   0               2d21h
kube-controller-manager-k8s-master   1/1     Running   2 (3h49m ago)   2d21h
kube-proxy-w5qsc                     1/1     Running   0               2d21h
kube-scheduler-k8s-master            1/1     Running   2 (3h49m ago)   2d21h
metrics-server-7db4fb59f9-k6dhh      1/1     Running   0               2d21h

[8-2] kubectl 사용 설정

[root@k8s-master ~]# cat ~/.kube/config
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERX dwcmRXSmwKY201bGRHVnpNQjRYRFRJMU1EVXlPVEV4TWpVME1sb1hEVE0xTURVeU56RXhNalUwTWxvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05B UUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT1I3Ckt5L2RDbHdFRWRRTUNoSzFCbUYxWk96eEkySVBaZ25tOCtTZnAxUU9YYks1eFNHZkh0YVpEejRJcFhVNEtEVlMKV2FXZVA0bS9rejAxNWFqVm xGbkpqTkJqaUxKUTFkQ0FOYXVCbmtRR1NoS3FnK1NBdk9heUlpeE9NbWthYjZJNwpxYTk2SHZlc1ZtRDB2SUpva3d6S2VZa01pcW9LYVhRaUI4Q09hVUp6Nk5Edmlaa2ZZN0dzS29Md3pveTFG TXRSClA4bmNQR0tYQS96bnRxRi90ZUY0VEFyRGRkeFNXdGozR01Ra2JQZFdzN29DZlFySFNManBTZWtvd3loRVZSZGwKOGdNTTlzZ1FRY2JVTUtGUXQ5V1FmQVp3YWd4ZklJUHN6YXdsZjAvdX FmdzlTUy9UeXFESXhub3JuQ2NabGdLVQpxTTJFVXNBR09sa09BMk1FY3BFQ0F3RUFBYU5aTUZjd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBP QkJZRUZBdUFXS044eis3ekpjUUQyeWNTTkhlcG1FUnlNQlVHQTFVZEVRUU8KTUF5Q0NtdDFZbVZ5Ym1WMFpYTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBR3VxVjhuUmE3N0V2ZDBxOGJmWA pQTit5SWFzMTQ4ejcxOGE2VFhuR1FPb0Y3bjV2K3BiaGFtNjluWHhIc05lblZqMnZyUUxZV3RGRno5MGhmUVFQCjgyUmd4UDdaaEpqaDdsNjN6bWdLWHpJTUNQL1gxWWhZYnNqVElTbWN3K0hw U2oreEgwQ3RDRVoyMFZvMGlqTjEKMU9vbGtsMWo1YjZ0ZjFJeWtEMGRQdGZLaDI3TTl6L3dxT0wreGM2dnZWVlZnWnVheHJ5VzJTckx5MTh4M2t0OApHaWNyaXd4SnAyUGt2TXpWWHNlSnZ4V2 wra00vU0toSVErYVJrMVpkSmZPVCswRWRvam9mSTI1ZjV4dXVLN1pOCm52SEtZbS9pSGhkMXdUNllIbWFQMEI5R1JyQ0Z4SjhJSEpyRjJ3OUJzaklGQXZ0R28vcHd0cnl0azd5UHQyOWYKQkFv PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    server: https://192.168.56.30:6443

[8-3] CNI Plugin 설치 (calico)

[root@k8s-master ~]# kubectl get -n calico-system pod
NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-7dd9f6cf54-bb4s9   1/1     Running   0          6h7m
calico-node-n2znw                          1/1     Running   0          6h7m
calico-typha-76dc5478dc-jg42m              1/1     Running   0          2d21h
csi-node-driver-tw549                      2/2     Running   0          2d21h

[root@k8s-master ~]# kubectl get -n calico-apiserver pod
NAME                                READY   STATUS    RESTARTS   AGE
calico-apiserver-587465b696-bdgzr   1/1     Running   0          2d21h
calico-apiserver-587465b696-qj7jd   1/1     Running   0          2d21h

[root@k8s-master ~]# kubectl get installations.operator.tigera.io default -o yaml  | grep cidr
      cidr: 20.96.0.0/16
        cidr: 20.96.0.0/16

[8-4] Master에 pod를 생성 할 수 있도록 설정

[root@k8s-master ~]# kubectl describe nodes | grep Taints
Taints:             <none>

[9] 쿠버네티스 편의 기능 설치
[9-1] kubectl 자동완성 기능

[root@k8s-master ~]# cat ~/.bashrc
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
source <(kubectl completion bash)
alias k=kubectl
complete -o default -F __start_kubectl k

[9-2] Dashboard 설치

[root@k8s-master ~]# kubectl get pod -n kubernetes-dashboard
NAME                                         READY   STATUS    RESTARTS        AGE
dashboard-metrics-scraper-5cb4f4bb9c-p7bvd   1/1     Running   0               2d21h
kubernetes-dashboard-6bc7c98694-bxfjq        1/1     Running   1 (3h56m ago)   2d21h

[9-3] Metrics Server 설치

[root@k8s-master ~]# kubectl get pod -n kube-system  | grep metrics
metrics-server-7db4fb59f9-k6dhh      1/1     Running   0               2d21h

[root@k8s-master ~]# kubectl top pod -A

NAMESPACE              NAME                                         CPU(cores)   MEMORY(bytes)
anotherclass-123       api-tester-1231-755676484f-d7xtp             7m           122Mi
anotherclass-123       api-tester-1231-755676484f-tbk6w             5m           119Mi
calico-apiserver       calico-apiserver-587465b696-bdgzr            13m          34Mi
calico-apiserver       calico-apiserver-587465b696-qj7jd            29m          47Mi
calico-system          calico-kube-controllers-7dd9f6cf54-bb4s9     37m          23Mi
calico-system          calico-node-n2znw                            152m         134Mi
calico-system          calico-typha-76dc5478dc-jg42m                11m          36Mi
calico-system          csi-node-driver-tw549                        0m           24Mi
default                app-1-2-2-1-d65fb94cb-sgmkm                  4m           120Mi
default                app-1-2-2-1-d65fb94cb-xgh6q                  2m           118Mi
kube-system            coredns-5d78c9869d-gsqwl                     4m           32Mi
kube-system            coredns-5d78c9869d-zpvlh                     9m           35Mi
kube-system            etcd-k8s-master                              188m         103Mi
kube-system            kube-apiserver-k8s-master                    328m         800Mi
kube-system            kube-controller-manager-k8s-master           118m         90Mi
kube-system            kube-proxy-w5qsc                             2m           22Mi
kube-system            kube-scheduler-k8s-master                    17m          25Mi
kube-system            metrics-server-7db4fb59f9-k6dhh              13m          38Mi
kubernetes-dashboard   dashboard-metrics-scraper-5cb4f4bb9c-p7bvd   1m           31Mi
kubernetes-dashboard   kubernetes-dashboard-6bc7c98694-bxfjq        1m           24Mi
loki-stack             loki-stack-0                                 12m          63Mi
loki-stack             loki-stack-promtail-2rds4                    99m          75Mi
monitoring             grafana-646b5d5dd8-xth85                     27m          101Mi
monitoring             kube-state-metrics-86c66b4fcd-j4msz          4m           76Mi
monitoring             node-exporter-tn7db                          8m           39Mi
monitoring             prometheus-adapter-648959cd84-hxxzf          25m          39Mi
monitoring             prometheus-k8s-0                             35m          434Mi
monitoring             prometheus-operator-7ff88bdb95-vg9r7         3m           71Mi
tigera-operator        tigera-operator-84cf9b6dbb-zscwr             18m          47Mi

0개의 댓글