kubeadm을 사용하여 k8s 클러스터 구축(연습)

Kubeadm은 Kubernetes 클러스터의 신속한 배포를 위해 kubeadm init 및 kubeadm Join을 제공하는 K8s 배포 도구입니다.

1. 환경 준비

서버 요구 사항:

  • 권장 최소 하드웨어 구성: 2코어 CPU, 2G 메모리, 20G 하드 디스크
  • 서버가 외부 네트워크에 접속하는 것이 가장 좋습니다. 인터넷에서 이미지를 가져와야 합니다. 서버가 인터넷에 접속할 수 없는 경우 해당 이미지를 미리 다운로드하여 노드로 가져와야 합니다.

소프트웨어 환경:

OS: centos7.9_x64
도커: 20-ce
K8s: 1.23
서버:

k8s-마스터:192.168.176.138
k8s-node1:192.168.176.136
k8s-node2:192.168.176.137

2. 초기화 구성

설치 환경 준비: 모든 노드에서 다음 작업을 수행해야 합니다.

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
setenforce 0  # 临时

# 关闭swap
swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久

# 根据规划设置主机名
hostnamectl set-hostname <hostname>

# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.176.138 k8s-master
192.168.176.136 k8s-node1
192.168.176.137 k8s-node2
EOF

# 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system  # 生效

# 时间同步
yum install ntpdate -y
ntpdate time.windows.com

Docker, kubeadm, kubelet 설치 [모든 노드 작업]

도커를 설치합니다:

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce
systemctl enable docker && systemctl start docker

 이미지 다운로드 가속기를 구성합니다.

vim /etc/docker/daemon.json

{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}


systemctl restart docker
docker info                                                        #查看docker信息,进行确认

Alibaba Cloud 소프트웨어 소스 추가:

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

kubeadm, kubelet, kubectl을 설치합니다.

yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
systemctl enable kubelet

3. k8s-master 배포 [마스터 노드 실행]

kubeadm 배포

kubeadm init \
  --apiserver-advertise-address=192.168.176.138 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.23.0 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16 \
  --ignore-preflight-errors=all

--apiserver-advertise-address 클러스터 광고 주소
--image-repository 기본 풀 이미지 주소 k8s.gcr.io는 중국에서 액세스할 수 없으므로
다음과 일치하는 Alibaba Cloud 이미지 웨어하우스 주소 --kubernetes-version K8s 버전을 지정합니다.
--service-cidr 클러스터 내부 가상 네트워크, 포드 통합 액세스 입구 --pod- network
-cidr 포드 네트워크, 아래 배포된 CNI 네트워크 구성 요소 yaml과 일치

초기화는 일정 시간 동안 기다려야 하며, 초기화 후 조인 명령이 출력되어 먼저 복사되고 노드 node는 마스터에 조인할 때 사용됩니다.

kubeadm join 192.168.176.138:6443 --token 3jpr2o.snrmtx9p8qoo6w9p \
        --discovery-token-ca-cert-hash sha256:10e85d3372e0307bfebef85fac9d21d2f647383129f5742c00c44402264d05e2

k8s 인증 파일을 복사합니다.

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

작업 노드 보기:

kubectl get nodes

아직 네트워크 플러그인이 배포되지 않았기 때문에 준비가 되지 않았습니다. NotReady이므로 계속 진행하세요. 

4. k8s 노드 노드 구성 [노드 노드 동작]

클러스터에 새 노드를 추가하려면 kubeadm init에서 kubeadm Join 명령 출력을 실행하세요.

기본 토큰은 24시간 동안 유효하며, 만료되면 해당 토큰을 더 이상 사용할 수 없습니다. 이때 토큰을 다시 생성해야 하며 다음 명령을 사용하여 직접 생성할 수 있습니다.

 kubeadm token create --print-join-command

5. 컨테이너 네트워크 배포(마스터 실행)

Calico는 현재 Kubernetes의 주류 네트워크 솔루션인 순수한 3계층 데이터 센터 네트워크 솔루션입니다.

YAML 다운로드:

curl https://docs.projectcalico.org/archive/v3.20/manifests/calico.yaml -O

다운로드 후에는 kubeadm init의 --pod-network-cidr에 지정된 것과 동일한 Pod 네트워크 정의(CALICO_IPV4POOL_CIDR)를 수정해야 합니다.

파일을 수정한 후 다음을 배포합니다.

kubectl apply -f calico.yaml
kubectl get pods -n kube-system                        #执行结束要等上一会才全部running

Calico Pod가 실행되면 노드가 준비됩니다.

 6. 대시보드 배포

대시보드는 K8s 리소스의 기본 관리에 사용할 수 있는 공식 UI입니다.

YAML 다운로드 주소:

 wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml

기본적으로 대시보드는 클러스터 내에서만 접속이 가능하므로 서비스를 NodePort 형태로 수정하여 외부에 노출시킵니다.

vi recommended.yaml
...
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30001
  selector:
    k8s-app: kubernetes-dashboard
  type: NodePort
...
kubectl apply -f recommended.yaml
kubectl get pods -n kubernetes-dashboard

접속 주소: https://NodeIP:30001 

 해당 페이지 접속 시 접속이 불가능할 수 있습니다.

 서비스 계정을 만들고 기본 클러스터 관리자 관리자 클러스터 역할을 바인딩합니다.

# 创建用户
kubectl create serviceaccount dashboard-admin -n kube-system
# 用户授权
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
# 获取用户Token
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

 

출력 토큰을 사용하여 대시보드에 로그인하세요.

 k8s 클러스터 구축 완료

Supongo que te gusta

Origin blog.csdn.net/qq_54494363/article/details/130974395
Recomendado
Clasificación