- Kubernetes 1.17.3 설치
### Docker, kubeadm, kubelet 설치
1. Docker 저장소 설정
yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://mirror.bangmod.cloud/docker-ce/linux/centos/docker-ce.repo
2. Docker 설치 및 시작
yum install -y docker-ce systemctl start docker systemctl enable docker
다음 내용으로 /etc/docker/daemon.json 파일 생성:
{ "registry-mirrors": ["https://docker.mirror.server"] }
서비스 재시작:
systemctl daemon-reload systemctl restart docker
3. 시스템 부팅 시 Docker 자동 시작 설정
systemctl enable docker && systemctl start docker docker --version
4. kubeadm, kubelet, kubectl 설치
cat > /etc/yum.repos.d/kubernetes.repo << EOF [kubernetes] name=Kubernetes baseurl=https://k8s.mirror.server/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 EOF
호스트 파일 수정
vim /etc/hosts 192.168.226.128 master-node 192.168.226.129 worker1 192.168.226.130 worker2
특정 버전 설치
yum install -y kubelet-1.17.3 kubeadm-1.17.3 kubectl-1.17.3 rpm -qa | grep kube
kubelet 자동 시작 설정
systemctl enable kubelet
Swap 비활성화
swapoff -a sed -i 's/.swap./#&/' /etc/fstab sysctl --system
###### 마스터 노드에서 실행:
mkdir k8s_setup && cd k8s_setup
kubeadm init
--apiserver-advertise-address=192.168.226.128
--image-repository registry.local/google_containers
--kubernetes-version v1.17.3
--service-cidr=10.1.0.0/16
--pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
### Node 추가 명령 기록 (예: kubeadm join)
kubeadm join 192.168.226.128:6443 --token abcdef.abcdefabcdef --discovery-token-ca-cert-hash sha256:abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdef
Flannel 네트워크 플러그인 설치
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
</div>2. KubeSphere 소개
----------------
KubeSphere는 클라우드 네이티브 환경을 위한 오픈 소스 프로젝트로, Kubernetes 위에 구축된 다중 테넌트 컨테이너 관리 플랫폼입니다. 사용자 친화적인 인터페이스와 가이드를 제공하여 학습 곡선을 낮추고 개발, 테스트, 운영의 복잡성을 줄여줍니다.
공식 웹사이트: https://kubesphere.io/
3. Helm 및 Tiller 설치
-------------------
<div>```
wget http://helm.download.server/helm-v2.17.0-linux-amd64.tar.gz
tar xf helm-v2.17.0-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin/
cp linux-amd64/tiller /usr/local/bin/
helm version
## RBAC 권한 설정 파일 생성
cat > tiller-rbac.yaml << EOF
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller-sa
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: tiller-crb
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller-sa
namespace: kube-system
EOF
kubectl apply -f tiller-rbac.yaml
# Tiller 설치
helm init --service-account tiller-sa --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.17.0 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
kubectl get pods --all-namespaces
# 확인
helm version
- OpenEBS 설치
설명서: https://v2-1.docs.kubesphere.io/docs/installing-on-kubernetes/introduction/overview/
# Master 노드의 타인트 제거
kubectl taint nodes master-node node-role.kubernetes.io/master:NoSchedule-
kubectl create ns openebs-storage
kubectl apply -f https://openebs.github.io/charts/openebs-operator-1.5.0.yaml
# StorageClass 설치
cat > storage-class.yaml << EOF
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-storage
provisioner: storage.provider/nfs
reclaimPolicy: Delete
EOF
kubectl apply -f storage-class.yaml
kubectl get sc
# 기본 StorageClass 설정
kubectl patch storageclass openebs-hostpath -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
- KubeSphere 설치
설명서: https://kubesphere.io/zh/docs/installing-on-kubernetes/introduction/overview/
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.0.0/kubesphere-installer.yaml
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.0.0/cluster-config.yaml
# 진행 상황 모니터링
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
kubectl get pod --all-namespaces
접속 URL: http://IP:30880
아이디: admin
비밀번호: P@88w0rd
Master 노드에 다시 타인트 적용:
kubectl taint nodes master-node node-role.kubernetes.io/master=:NoSchedule
- 플러그인 설치
설명서: https://kubesphere.io/zh/docs/pluggable-components/devops/