Rancher를 통해 클라우드 네이티브 애플리케이션 게시 기반 구축

랜처 2.7.0 애플리케이션

제로, 전제 조건

0.1 커널 라우팅 및 전달 구성

# vim /etc/sysctl.conf
# cat /etc/sysctl.conf
...
net.ipv4.ip_forward=1
# sysctl -p
net.ipv4.ip_forward = 1

0.2 docker-ce 설치

모든 호스트에 docker-ce 설치

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

0.3 목장주 배포

# mkdir -p /opt/data/rancher_data
# docker run -d --privileged -p 80:80 -p 443:443  -v /opt/data/rancher_data:/var/lib/rancher --restart=always --name rancher-2-7-0 rancher/rancher:v2.7.0

1. 랜처 초기 구성

여기에 이미지 설명을 삽입하세요.

2. 클러스터 생성

기존 클러스터를 가져옵니다. 이번에 가져온 클러스터 버전은 k8s 1.25.2입니다.

여기에 이미지 설명을 삽입하세요.

모든 kubernetes 클러스터에 대한 범용 가져오기를 선택합니다.

여기에 이미지 설명을 삽입하세요.

가져온 클러스터에 이름 추가

여기에 이미지 설명을 삽입하세요.

가져온 클러스터에 라벨 추가

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

기존 클러스터를 rancher에 등록

여기에 이미지 설명을 삽입하세요.

복사 후 k8s 클러스터의 마스터 노드에서 해당 명령을 실행합니다.

[root@k8s-master01 ~]# curl --insecure -sfL https://192.168.10.163/v3/import/pg977t2z59g872brkj75qmxtkgkz8x5lrwwpdhkprvmcjhhr7tp6wm_c-m-p7wrqk4w.yaml | kubectl apply -f -

실행 후 4개의 네임스페이스가 추가되었는지 확인

[root@k8s-master01 ~]# kubectl get ns
NAME                          STATUS   AGE
calico-apiserver              Active   36h
calico-system                 Active   36h
cattle-fleet-system           Active   60s 新添加
cattle-impersonation-system   Active   77s 新添加
cattle-system                 Active   81s 新添加
default                       Active   36h
kube-node-lease               Active   36h
kube-public                   Active   36h
kube-system                   Active   36h
local                         Active   27s 新添加
tigera-operator               Active   36h

모든 실행이 완료되면 모든 k8s 클러스터 노드가 rancher에 등록된 것을 확인할 수 있습니다.

여기에 이미지 설명을 삽입하세요.

3. 애플리케이션 출시

애플리케이션이 게시된 클러스터를 선택하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

3.1 Nginx 애플리케이션 배포

애플리케이션을 게시하기 전에 프로젝트/네임스페이스를 생성하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

프로젝트/네임스페이스가 생성된 후 워크로드 생성을 선택합니다(배포 유형).

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

애플리케이션 게시를 위한 네임스페이스, 애플리케이션 이름 및 복사본 수를 지정합니다.

여기에 이미지 설명을 삽입하세요.

포드 라벨 지정

여기에 이미지 설명을 삽입하세요.

애플리케이션에서 사용하는 이미지 및 컨테이너 유형 지정(표준 컨테이너)

여기에 이미지 설명을 삽입하세요.

애플리케이션 게시를 위한 포트 추가, 즉 해당 서비스 생성

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

위의 모든 구성이 완료되면 생성을 클릭합니다.

여기에 이미지 설명을 삽입하세요.

생성된 애플리케이션 관찰

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

실제 머신에서 생성된 애플리케이션에 액세스

여기에 이미지 설명을 삽입하세요.

3.2 MySQL 애플리케이션 배포

k8s 클러스터의 기존 스토리지 클래스 보기

영구 동적 저장소 클래스를 미리 준비해야 합니다.

[root@k8s-master01 ~]# kubectl get sc
NAME                   PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
nfs-client (default)   fuseim.pri/ifs   Delete          Immediate           false                  15h

목장주 UI 인터페이스에서 보기
여기에 이미지 설명을 삽입하세요.

mysql을 게시하기 전에 프로젝트/네임스페이스를 만듭니다.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

PVC 생성

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

서비스 생성

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

이 선택기에 주의하세요. 지금 생성하세요. MySQL 애플리케이션을 생성할 때 Pod 라벨이 이와 일치해야 합니다.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

생성된 SVC 확인

[root@k8s-master01 ~]# kubectl get svc -n mydata1
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
mysqldata1   ClusterIP   None         <none>        3306/TCP   49s

SVC에 해당하는 IP 주소를 구문 분석합니다.

Headless SVC를 사용하므로 SVC에서는 ClusterIP를 할당하지 않으므로 결과가 없습니다.

[root@k8s-master01 ~]# dig -t a mysqldata1.mydata1.svc.cluster.local @10.96.0.10

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t a mysqldata1.mydata1.svc.cluster.local @10.96.0.10
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 18405
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mysqldata1.mydata1.svc.cluster.local. IN A

;; AUTHORITY SECTION:
cluster.local.          30      IN      SOA     ns.dns.cluster.local. hostmaster.cluster.local. 1664333089 7200 1800 86400 30

;; Query time: 0 msec
;; SERVER: 10.96.0.10#53(10.96.0.10)
;; WHEN: 三 9月 28 10:47:03 CST 2022
;; MSG SIZE  rcvd: 158

Statefulset 유형 애플리케이션 생성

여기에 이미지 설명을 삽입하세요.

해당 이름을 선택하여 입력하세요. 서비스 이름은 미리 생성된 서비스입니다.

여기에 이미지 설명을 삽입하세요.

MySQL 컨테이너 이미지 선택

여기에 이미지 설명을 삽입하세요.

환경 변수 추가

환경 변수를 통해 MySQL 관리자 비밀번호를 설정하고 이를 MySQL 데이터베이스에 추가합니다.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

Pod 라벨은 생성된 SVC의 선택기가 사용하는 라벨과 일치해야 합니다.

여기에 이미지 설명을 삽입하세요.

MySQL은 데이터를 지속적으로 저장해야 하기 때문에 스토리지를 선택해야 하는데, 이번에는 앞서 생성한 PVC를 사용한다.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

이전에 생성한 PVC를 MySQL 컨테이너의 /var/lib/mysql 디렉터리에 마운트합니다.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

애플리케이션 릴리스 관찰

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

명령을 실행하여 애플리케이션을 사용할 수 있는지 확인하십시오.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

3.3 WordPress 애플리케이션 배포

프로젝트/네임스페이스 생성

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

네임스페이스 생성 상태 관찰

[root@k8s-master01 ~]# kubectl get ns
NAME                          STATUS   AGE
calico-apiserver              Active   37h
calico-system                 Active   37h
cattle-fleet-system           Active   59m
cattle-impersonation-system   Active   59m
cattle-system                 Active   59m
default                       Active   37h
kube-node-lease               Active   37h
kube-public                   Active   37h
kube-system                   Active   37h
local                         Active   58m
mydata1                       Active   34m
nginxweb                      Active   50m
tigera-operator               Active   37h
webpp1                        Active   34s  新添加命名空间

배포에 해당하는 애플리케이션 게시

여기에 이미지 설명을 삽입하세요.

배포 컨트롤러 유형 선택

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

애플리케이션에서 사용하는 포트를 추가하고 이번에는 노드 포트를 사용하여 게시합니다.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

애플리케이션에 필요한 환경변수를 구성하고 환경변수를 통해 데이터베이스에 연결

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

환경 변수 정의를 위한 데이터베이스 도메인 이름 구문 분석

[root@k8s-master01 ~]# dig -t a mysqldata1-0.mysqldata1.mydata1.svc.cluster.local. @10.96.0.10

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t a mysqldata1-0.mysqldata1.mydata1.svc.cluster.local. @10.96.0.10
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38690
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mysqldata1-0.mysqldata1.mydata1.svc.cluster.local. IN A

;; ANSWER SECTION:
mysqldata1-0.mysqldata1.mydata1.svc.cluster.local. 30 IN A 10.224.69.203  解析出来Pod IP地址

;; Query time: 0 msec
;; SERVER: 10.96.0.10#53(10.96.0.10)
;; WHEN: 三 9月 28 11:32:07 CST 2022
;; MSG SIZE  rcvd: 143

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

애플리케이션 생성 관찰

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

물리적 시스템에 게시된 애플리케이션에 액세스

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

4. 클러스터 삭제

여기에 이미지 설명을 삽입하세요.

여기에 이미지 설명을 삽입하세요.

추천

출처blog.csdn.net/weixin_47758895/article/details/130599457