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
'DEVELOP > AWS' 카테고리의 다른 글
DOCKER | docker-compose.yml 프로메테우스 + 그라파나 컨테이너 생성하기 (0) | 2023.06.19 |
---|---|
AWS | EKS, ECR (0) | 2023.06.16 |
KUBERNETES | Taint, Toleration, Drain, Cordon, Daemonset 실습 (0) | 2023.06.08 |
KUBERNETES | 프로메테우스, 그라파나 실습 (1) | 2023.06.07 |
AWS | NAT 인스턴스, S3, CloudFront, Lambda, MediaConvert구축 (0) | 2023.05.09 |