클러스터를 통합하는 방법에 대한 자습서의 슈 실제 작업은 Gitlab 프로젝트를 k3s

k3s 소개

K3s이 목장 연구소에서 발행 한 경량는 Kubernetes 릴리스입니다,이 제품은는 Kubernetes에게 자원이 제한된 환경 디자인 개발과 운영 및 유지 보수 인력을 실행하도록 설계되었습니다.

그것은 공인는 Kubernetes 릴리스입니다, 최소 시스템 요구 사항은 다음과 같습니다

  • 커널 버전 : 리눅스 3.10+

  • 각 서버 요구 사항 최소 RAM : 512메가바이트

  • 각 노드의 RAM 최소 요구 사항 : 75메가바이트

  • 디스크 공간 최소 요구 사항 : 2백메가바이트

  • 지원되는 하드웨어 아키텍처 : x86_64에,하는 ARMv7, ARM64

즉 만약 IoT 관련 시나리오에 적용 k3s 때문에 이러한 요구 사항은 매우 낮은 프로파일입니다.

GitLab에서 프로젝트를 만듭니다

k3s를 설치하기 전에, Gitlab에 새 프로젝트를 만들 수 있도록, API를했다.

1.png

일단 생성되면, 우리는 메뉴 바의 운영 측면에 클릭하고 하위 메뉴로는 Kubernetes를 선택합니다.

2.png

우리는 지금 두 가지 옵션이 있습니다 :

  • 는 Kubernetes GKE에 새 클러스터 만들기

  • 클러스터 기존 가져 오기 구성는 Kubernetes (에 관계없이 클러스터의 어디에서 수입을 만들 수 있습니다)

참고 : GitLab의 현재 버전에서 새 클러스터가 GKE로 제한됩니다 만들 수 있습니다.

3.png

우리는 [이] 추가 기존 클러스터 탭을 선택했다.

4.png

이 단계에서, 우리는 우리가 통합 된 클러스터 구성을 제공 할 필요가 몇 가지 필드를 입력해야합니다. 일시적으로되어 무시했다 탭을 엽니 다. 이제, 우리는 새로운는 Kubernetes 클러스터를 만들로 이동합니다.

클러스터 k3s 만들기

우리는 지금는 Kubernetes 기반 k3s 클러스터를 시작합니다. 왜 k3s 그것은 무엇입니까? 나는 그것이 예를 설정하는 것이 얼마나 쉬운 지 보여주고 싶은 때문에. 명확한 단계를 만들기 위해, 우리는 단지 클러스터 노드를 설정합니다.

내가 우분투를 노드 1 이름이 18.04 서버를 구성한 후, 우리는 이는 공인는 Kubernetes 클러스터 단지 k3s를 설치하려면 다음 명령을 실행 호스트에서 쉘을 얻을.

루트 @의 노드 1 : ~ $ 컬 -sfL https://get.k3s.io | SH -

명령 도커 빠른 설치와 유사 위의 명령 :

https://get.docker.com 컬 | 

安装完毕之后,可以在/etc/rancher/k3s/k3s.yaml中找到连接到集群的配置文件。

root@node1:~ $ cat /etc/rancher/k3s/k3s.yaml
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tL...tCg==
    server: https://localhost:6443
  name: default
contexts:
- context:
    cluster: default
    user: default
  name: default
current-context: default
kind: Config
preferences: {}
users:
- name: default
  user:
    password: 48f4b...4b4e7
    username: admin

本地kubectl将自动使用此配置。

$ kubectl get nodes
NAME    STATUS ROLES  AGE VERSION
node1   Ready  master 3m  v1.14.5-k3s.1

注意:正如我们看到的Quick Start那样(https://k3s.io/),添加额外的节点并不复杂,它基本上只需要从主服务器上的/var/lib/rancher/k3s/server/node-token获取一个令牌,并使用以下命令即可连接其他一些节点:

$ curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=XXX sh -

在Gitlab中集成

现在让我们获取在Gitlab项目中集成全新的k3s集群所需的所有信息。

  • 集群名字:k3s

  • API Server的URL:在配置文件中,API Server指定为:https://localhost:6443 。为了从外部访问,我们需要提供node1 外部的IP地址。

  • 集群的CA证书:要向Gitlab提供集群CA证书,我们需要解码配置中指定的那个文件(就像它在base 64中一样)。

$ kubectl config view --raw \
-o=jsonpath='{.clusters[0].cluster.certificate-authority-data}' \
| base64 --decode


  • Service token

获取一个识别令牌的过程牵涉到几个步骤。我们首先需要创建一个ServiceAccount并且向它提供一个cluster-admin角色。以下命令可以完成这些步骤:

$ cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
  name: gitlab-admin
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: gitlab-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: gitlab-admin
  namespace: kube-system
EOF

当service account创建完毕之后,我们检索关联的类型secret的资源:

$ SECRET=$(kubectl -n kube-system get secret | grep gitlab-admin | awk '{print $1}')

下一步是提取与secret关联的JWT令牌:

$ TOKEN=$(kubectl -n kube-system get secret $SECRET -o jsonpath='{.data.token}' | base64 --decode)
$ echo $TOKEN

我们已经完成了所有设置,现在回到之前打开的选项卡中,开始使用所有信息并填写Gitlab 【Add existing cluster 】表单的字段:

5.png

集群集成之后,我们可以直接从web界面安装helm(Kubernetes包管理器)。

6.png

7.png

现在,我们可以从命令行检查tiller 守护程序(helm的服务器端组件)是否运行。

$ kubectl get deploy --all-namespaces | grep tiller
NAMESPACE           NAME          READY UP-TO-DATE AVAILABLE AGE
gitlab-managed-apps tiller-deploy 1/1   1          1         67s

集群现在已经可以使用了。除此之外,GitLab的Web界面允许一键安装其他组件:

  • Ingress Controller,暴露集群中运行的服务

  • Cert-Manager,使用Let's Encrypt管理TLS证书

  • Prometheus,监控运行在集群中 的应用程序

  • Knative,部署Serverless工作负载

8.png

总 结

在本文中,我们了解如何创建一个k3s集群并且将其集成到一个Gitlab项目中。当然,任何Kubernetes集群都可以使用相同的过程。

我们现在可以添加各种资源到项目中:

  • 源代码

  • Dockerfile,指定如何从代码中创建Docker镜像

  • Kubernetes资源,如部署、服务……

  • .gitlab-ci.yaml 파일은 CI 파이프 라인을 정의하고 응용 프로그램을 배포하는 방법과 관련 클러스터는 Kubernetes에 대해 테스트



추천

출처blog.51cto.com/12462495/2432564