쿠베르네트스 깊이 들어가기(두 번째 부분):
15433 단어 microservicesdevopskubernetes
로컬 환경에서 k8s를 설정하려면:
컴퓨터에서 단일 노드인 Kubernetes 그룹을 실행하기 때문에 미니쿠버를 설치합니다.
설치:$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
$ sudo dpkg -i minikube_latest_amd64.deb
$ minikube start
kubectl 명령을 사용할 수 있습니다.$ kubectl get pods
기다리다Kubernetes 서비스:
Kubernetes 서비스란:
서비스는 Kubernetes 그룹에 추상적인 층을 제공하기 때문에 저희 프로그램은 직접 공개하지 않습니다.
서비스 유형(예:
기본 서비스 유형입니다.클러스터 내부 IP에 서비스를 공개합니다.들어오는 요청은 브라우저에서 왔습니다. 입구를 통해 서비스가 집단 내에서만 접근할 수 있도록 합니다.
정적 포트에 각 노드의 클러스터 IP 를 공개합니다.우리는 외부에서 nodeport 서비스로 연락할 수 있다.
부하 균형기는 전송된 요청 루트를 그룹으로 이동할 수 있습니다.
상태 적용을 위해 설계되었습니다.만약에 MongoDB 데이터베이스가 주종 구조에서 실행되고 주종 구조에서 쓰기 작업을 한다면 데이터베이스에서 주 데이터베이스와 동기화해야 한다.
답은 선택기를 통해 전송 요청을 알 수 있다는 것이다.
손 위치:
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
그런 다음 kubectl apply 명령을 각 파일 이름과 함께 사용합니다.$ kubectl apply -f nginx-depl.yaml
$ kubectl get pods
시작:
따라서 요청은 브라우저에서 온 다음에 몬고 익스프레스 응용 프로그램의 외부 서비스에 들어가서 몬고 DB의 내부 서비스에 전송하고 몬고 DBpod에 전송하며 후자는 증거를 사용하여 이를 인증한다.
$minikube start
$ touch mongo-depl.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mongodb-dep
labels:
app: mongodb
spec:
replicas: 1
selector:
matchLabels:
app: mongodb
template:
metadata:
labels:
app: mongodb
spec:
containers:
- name: mongodb
image: mongo
ports :
- containerport : 27017
env:
- name: MONGO_INITDB_ROOT_USERNAME
value :
- name : MONGO_INITDB_ROOT_PASSWORD
value :
$ touch mongo-secret.yml
apiVersion: v1
kind: Secret
metadata:
name: mongodb-secret
type: Opaque
data:
mongo-root-username: dXNlcm5hbWU=
mongo-root-password: cGFzcw==
사용자 이름과 암호는 base64 인코딩이어야 합니다.$ echo -n 'admin' | base64
$ echo -n 'password' | base64
지금 우리는 배치 파일에서 그것을 인용해야 한다$ kubectl apply -f mongo-secret.yml
env:
- name : MONGO_INITDB_ROOT_USERNAME
valueFrom:
secretKeyRef:
name: mongo-secret
key : mongo-root-username
- name : MONGO_INITDB_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mongo-secret
key : mongo-root-password
$ kubectl apply -f mongo-depl.yaml
$ kubectl gel pod
---
apiVersion : v1
kind: Service
metadata:
name: mongodb-service
spec:
selector:
app: mongodb
ports:
- protocol: TCP
port: 27017
targetPort: 27017
선택기 - 태그를 통해pod에 연결포트 - 서비스 포트
목표 항구-컨테이너 항구
$ kubectl apply -f mongo-depl.yaml
$ kubectl get service
$ kubectl describe service (service name)
$ kubectl get pod -o wide
apiVersion: apps/v1
kind: Deployment
metadata:
name: mongo-express
labels:
app: mongo-express
spec:
replicas: 1
selector:
matchLabels:
app: mongo-express
template:
metadata:
labels:
app: mongo-express
spec:
containers:
- name: mongo-express
image: mongo-express
ports:
- containerPort: 8081
env:
- name : ME_CONFIG_MONGODB_ADMINUSERNAME
valueFrom:
secretKeyRef:
name: mongodb-secret
key : mongo-root-username
- name: ME_CONFIG_MONGODB_ADMINPASSWORD
valueFrom:
secretKeyRef:
name: mongodb-secret
key : mongo-root-password
- name: ME_CONFIG_MONGODB_SERVER
valueFrom:
configMapKeyRef:
name: mongodb-configmap
key : database_url
구성 매핑:
apiVersion: v1
kind : ConfigMap
metadata:
name: mongodb-configmap
data:
database_url: mongodb-service
키 값 쌍 및 데이터베이스 URL창조의 순서가 중요합니다.
$ kubectl apply -f mongo-config.yaml
$ kubectl apply -f mongo-express.yaml
$ kubectl get pod
$ kubectl logs mongo-express-(some number)
you can see
server is running
마지막:
apiVersion : v1
kind : Service
metadata:
name: mongo-express-service
spec:
selector :
app: mongo-express
type : LoadBalancer
ports:
- protocol: TCP
port: 8081
targetport: 8081
nodePort : 30000
$ kubectl get service
$ minikube service mongo-express-service
이제 응용 프로그램 대시보드를 볼 수 있습니다.
참을성 있게 읽어 주셔서 감사합니다🔥🔥🔥
Reference
이 문제에 관하여(쿠베르네트스 깊이 들어가기(두 번째 부분):), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rahulku48837211/deep-dive-into-kubernetes-part-ii-5hka텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)