DEVELOP/AWS

KUBERNETES | GCP에서 쿠버네티스 사용해보기

Hanee_ 2023. 6. 8. 18:01

GCP에 세개의 서버를 생성한다.

 

 

worker1

 

 

 

 

생성된 vm instance 3개에 ssh 접속을 한 뒤 yum install 을 해준다

$ sudo yum update -y

 

 

로컬 컴퓨터에서 moba로 접속하기 위해 ssh key를 발급받는다

 

id_rsa.pub 값을 gcp 메타데이터 > SSH 키에 추가한다.

 

 

mobaxterm에 연결하기 위해 master 서버의 ip를 넣어주고 앞서 만든 ssh key를 넣어준다.

 

현재 ip는 다음과 같다.

master1	asia-northeast3-a		
10.178.0.2 (nic0)	34.64.106.7  (nic0) 	
worker1	asia-northeast3-b		
10.178.0.3 (nic0)	34.22.76.149  (nic0) 	
worker2	asia-northeast3-c		
10.178.0.4 (nic0)	34.64.153.124  (nic0)

 

모든 노드에서 다음과 같은 세팅을 진행한다.

# cat <<EOF >> /etc/hosts
10.178.0.2 master1
10.178.0.3 worker1
10.178.0.4 worker2
EOF
# hostnamectl set-hostname master
# curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
# sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/docker-ce.repo
# yum --enablerepo=docker-ce-stable -y install docker-ce-19.03.15-3.el7
# mkdir /etc/docker
# cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
# systemctl enable --now docker
# systemctl daemon-reload
# systemctl restart docker
# systemctl disable --now firewalld
# setenforce 0
# sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

# swapoff -a
# sed -i '/ swap / s/^/#/' /etc/fstab

# cat <<EOF > /etc/sysctl.d/k8s.conf # kubernetes
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

# sysctl --system
# reboot

 

Kubeadm 설치 - 모든 노드에서 설치 진행

# cat <<'EOF' > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-$basearch
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

# yum -y install kubeadm-1.19.16-0 kubelet-1.19.16-0 kubectl-1.19.16-0 --disableexcludes=kubernetes
# systemctl enable kubelet
# poweroff

alias k=kubectl
domplete -o default -F __start_kubectl k

 

 

마스터 노드

# kubeadm init --apiserver-advertise-address=10.178.0.2 --pod-network-cidr=10.244.0.0/16
# mkdir -p $HOME/.kube
# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# chown $(id -u):$(id -g) $HOME/.kube/config
# kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
# kubectl get pods --all-namespaces
# source <(kubectl completion bash)
# echo "source <(kubectl completion bash)" >> ~/.bashrc
# yum install -y bash-completion git wget unzip mysql

 

master 노드에서 kubectl apply를 하면 ip 및 토큰값이 나오는데 해당값을 붙여넣어준다.

# kubeadm join 10.178.0.2:6443 --token ~~ \
    --discovery-token-ca-cert-hash sha256:~~

 

모든 노드에 넣어준다.

# sysctl -w net.ipv4.ip_forward=1

 

# kubectl expose pod nginx-pod --name loadbalancer --type=LoadBalancer --external-ip 10.178.0.3 --port 80

 

✔ 방화벽 설정

소스 ip는 내 아이피를 넣어준다.

 

kubectl 모두 치는 대신 단축어 k를 통해 대신할 수 있도록 설정해준다.

[root@master1 ~]# vi .bashrc
[root@master1 ~]# source .bashrc