Kubernetes 1.17.3 및 KubeSphere 3.0.0 설치 가이드

  1. 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
  1. 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"}}}'
  1. 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
  1. 플러그인 설치

설명서: https://kubesphere.io/zh/docs/pluggable-components/devops/

태그: kubernetes kubesphere helm tiller openebs

6월 12일 16:05에 게시됨