# 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 => 해당 경로에 daemon.json을 생성하면서 log 부분을 셋팅해줘야 쿠버네티스를 설치할 수 있음 # 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 # free -h => 메모리 공간을 확인해서 쿠버네티스는 스왑 메모리를 사용하지 않으므로 off 시켜주기 => 임시 명령어라서 재부팅 시 원래대로 돌아옴 # swapoff -a # sed -i '/ swap / s/^/#/' /etc/fstab 마지막 줄에 #을 넣어서 재부팅 시에도 swapoff 되게 만드는 명령어
# cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF => k8s.conf 파일을 생성하면서 네트워크 관련 내용을 삽입 # sysctl --system => k8s.conf에 설정해준 것이 커널에 적용할 내용이니까 커널 적용 명령어 사용 # reboot => 필수는 아니지만, 위의 내용들을 확실하게 적용시켜 주기 위해 재부팅 # 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.gpghttps://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF
# kubeadm init --apiserver-advertise-address=192.168.0.192 --pod-network-cidr=10.244.0.0/16 => 10점대 IP는 pod의 IP범위 # mkdir -p $HOME/.kube # cp -i /etc/kubernetes/admin.conf $HOME/.kube/config # chown $(id -u):$(id -g) $HOME/.kube/config => master를 사용하기 위해 자격증명을 기재하는 명령어 # kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml => 기존에 있는 yaml파일을 내려 받으면서 apply 시키는 명령어 => 쿠버네티스 pod들이 서로 통신할 수 있도록 네트워크를 설정하는 flannel이라는 모듈 명령어 이후 출력 되었던 토큰을 worker1과 worker2에 복사 붙여 넣기클러스터 구축 완료 : master1이 worker1,2를 통제하는 모습
# kubectl apply -f replicaset.yaml # kubectl get replicasets.apps -o wide master노드에는 pod가 만들어지지 않은 이유 : 그렇게 스케쥴이 되어 있기 때문에 # kubectl describe replicasets.apps nginx-replicaset
--- Deployment
# vi deployment.yaml apiVersion: apps/v1 kind: Deployment => kind 부분만 ReplicaSet으로 바꾸면 똑같은 yaml파일 => Deployment는 ReplicaSet보다 업데이트 기능, 롤백 기능이 강화되어 더 많이 사용됨 => replicas에서 설정한 특정 개수의 pod를 유지하고자 하는 목적은 동일 metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx-deployment template: metadata: name: nginx-deployment labels: app: nginx-deployment spec: containers: - name: nginx-deployment-container image: nginx ports: - containerPort: 80