Kubernets展開ハーバー(最新版)

コンテナ、ミラー、コンテナの3つの基本的な構成要素として知られている倉庫は、楽しいK8Sは当然運命ミラーリング倉庫建物、私はここに繰り返すことが必要であるとは思わない民間の倉庫鏡の必要性を免れることはできません。今日、この記事では、民間港ミラーリング倉庫を構築するための展開プロセスを完了K8Sした実験環境を説明しています。

K8Sハーバーは、ミラー倉庫としてそれを使用する必要がありますか?もちろん、必ずしも、しかし、あなたは対照的に知っているよ、私たちはあなたのような振り付けデファクト標準コンテナとしてK8Sより良いほとんど秒のように、あらゆる点でハーバーをしようとしていると、ほぼ唯一のオプションとなっています選択します。

また、これは苦労し熟考著者である、そして成功したと、専用のこの記事に読者を執筆することを目的に、それを展開するようにしてください。

実験環境を紹介し、仕事に取り掛かる、がらくたをカット:

1、CentOSの7最小

2、K8Sは、単一ノード1.15.5マスタ;(1.16変化が大きいために、全てが最高のバージョン1.15を使用可能)

3、舵2.15

4、港


舵を展開し
、ヘルムクライアントのインストール


ロットヘルムのインストールは、これがインストールされたバイナリ使用しています。もっとヘルムのインストール方法は、公式のヘルプドキュメントを参照してくださいすることができます。

方法1:公式のワンクリックインストールで提供されるスクリプトを使用します

カールhttps://raw.githubusercontent.com/helm/helm/master/scripts/get> get_helm.sh 
のchmod 700 get_helm.sh 
./get_helm.sh

二、ヘルムサーバーのインストールティラー

注:特にエラーが次のように報告される、クラスタK8S内の各ノードに(YUM -y socatに関するインストール)ソフトウェアをインストールsocatに関する。

socatに関するが見つかりません:ポート転送を行うことができない:エラーがdc6da4ab99ad9c497c0cef1776b9dd18e0a612d507e2746ed63d36ef40f30174、UIDをポッドポート44134を転送します。
エラー:ティラーに接続することはできません

centos7がデフォルトでインストールされているので、私を無視し、インストールを確認してください。

ティラーはKubernetes展開クラスタにデプロイされ、あなたは単にインストールを完了するために、以下の簡単な手順を使用することができます。

ヘルムのinit

第三に、ティラーを許可するために

、サーバーティラーヘルムがKUBE-System名前空間でKubernetesで展開展開があるので、それはアプリケーションの中Kubernetesで接続KUBE-APIを作成し、削除するために行くだろう。
Kubernetesバージョン1.6の当初から、APIサーバーは、RBACの承認を可能にしました。デフォルトは定義されていませんServiceAccount現在ティラーは、アクセスAPIサーバーを拒否さにつながることができます展開を、承認しました。だから我々は、明示的に追加ティラーの展開を承認する必要があります。
Kubernetesサービスアカウントを作成し、ティラー役割を結合:

kubectl作成serviceaccount --namespace KUBE-システムティラー
clusterrolebindingティラー・クラスタ・ルール--clusterroleを作成kubectl =クラスタ管理者--serviceaccount = KUBE-システム:ティラー

kubectlパッチ更新のAPIオブジェクトを使用します。

kubectlパッチは、ティラー展開--namespace KUBEシステムの展開-p '{ "スペック":{ "テンプレート":{ "スペック":{ "serviceAccount": "チラー"}}}}

認証が成功したかどうかを確認するには  

--namespace KUBE-システムを展開取得kubectl YAML --outputティラー-展開| grepをserviceAccount 
    serviceAccount:ティラー
    serviceAccountName:ティラー

第四に、インストールが成功ティラーであったかどうかを検証します   

kubectl -n KUBE-システムはポッド取得| grepのティラー
耕運機-デプロイ- 6d68f5c78f-nql2z 1/1 0 5メートルの実行

ヘルムバージョンの
クライアントを:&version.Version {SemVer: "v2.15.0"、GitCommit: "c2440264ca6c078a06e088a838b0476d2fc14750"、GitTreeState:「クリーン"} 
サーバー:&version.Version {SemVer:" v2.15.0" 、GitCommit: "c2440264ca6c078a06e088a838b0476d2fc14750"、GitTreeState: ""クリーン}

港のインストール

公式発表では具体的な表情https://github.com/goharbor/harbor-helmは
ヘルム倉庫を追加します。

舵レポ追加港https://helm.goharbor.io

公式の導入チュートリアルでは、ここで、(私の心は静かにそれはここで挨拶)マスターされている詳細な動作の基本的なポイントであることを前提としています。

まず、港のチャート項目の検索:

ヘルム検索港

写真.PNG

第二に、地元、修正しやすいvalues.yamlにダウンロード:

実権を握っ港/港をフェッチ

解凍プロジェクトパッケージのダウンロード、解凍して、経路変更values.yamlファイルを入力します。

 タールzxvf港-1.2.1.tgzの  
 CD港
 Vimのvalues.yaml

パラメータは、公式の説明を参照しますが、初心者のために、データの永続性に加えて、修正する必要があり、他のすべてのデフォルト値、そしておなじみのレビューの後ろに一つずつできる変更します。

「NFS」、私は事前に展開してきました、:STORAGECLASSなど、すべてのSTORAGECLASSをvalues.yaml変更

あなたはそれを逃した場合、あなたが戻って行くことができて、私のチュートリアル「を見て予備Kubernetesダイナミックボリューム・ストレージ(NFS)」、に戻ってそれを置く:https://blog.51cto.com/kingda/2440315。

もちろん、あなたが直接このファイルにステートメントを変更することができます。

SED -iさん#のSTORAGECLASS: "" #storageClass: "NFS" #G "values.yaml

写真.PNG

その後、別の場所ですべてのデフォルト、およびインストールを開始します。

舵は--name港-V1をインストールします。--wait --timeout 1500 --debug --namespace港

PVが自動的に作成され、PVCは早くあなたが思うように動作しない場合がありますので、非常に多くのポッドは、最初にエラーにつながる、それは少し患者でなければならず、何度か再起動する準備ができるまで待ちます。

インストールコマンドの実行上の一つの状態で立ち往生されている可能性があり、少しの忍耐を持っており、すべてのポッドを待つようにしてください舵がすべてポッドの状態を検出するためにインストールして実行されますが、正常に起動しています。


我々は唯一のデフォルトのインストール設定を使用しているので、デフォルトは港湾サービスを公開するヘルム進入方法を開始することですので、あなたが入力コントローラをプリインストールしていない場合、その後、港の正常な動作に影響を与えませんが、あなたがそれにアクセスすることはできませんが、

したがって、以下は進入コントローラをインストールする方法について説明します。

そこの公式ソースはK8Sが、ここではキーのインストール・スクリプト・ファイルに直接投稿されています。

apiVersion: v1
kind: Namespace
metadata:
  name: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
---
kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-configuration
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
---
kind: ConfigMap
apiVersion: v1
metadata:
  name: tcp-services
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
---
kind: ConfigMap
apiVersion: v1
metadata:
  name: udp-services
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nginx-ingress-serviceaccount
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
  name: nginx-ingress-clusterrole
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
rules:
  - apiGroups:
      - ""
    resources:
      - configmaps
      - endpoints
      - nodes
      - pods
      - secrets
    verbs:
      - list
      - watch
  - apiGroups:
      - ""
    resources:
      - nodes
    verbs:
      - get
  - apiGroups:
      - ""
    resources:
      - services
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - "extensions"
    resources:
      - ingresses
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - ""
    resources:
      - events
    verbs:
      - create
      - patch
  - apiGroups:
      - "extensions"
    resources:
      - ingresses/status
    verbs:
      - update
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
  name: nginx-ingress-role
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
rules:
  - apiGroups:
      - ""
    resources:
      - configmaps
      - pods
      - secrets
      - namespaces
    verbs:
      - get
  - apiGroups:
      - ""
    resources:
      - configmaps
    resourceNames:
      # Defaults to "<election-id>-<ingress-class>"
      # Here: "<ingress-controller-leader>-<nginx>"
      # This has to be adapted if you change either parameter
      # when launching the nginx-ingress-controller.
      - "ingress-controller-leader-nginx"
    verbs:
      - get
      - update
  - apiGroups:
      - ""
    resources:
      - configmaps
    verbs:
      - create
  - apiGroups:
      - ""
    resources:
      - endpoints
    verbs:
      - get
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
  name: nginx-ingress-role-nisa-binding
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: nginx-ingress-role
subjects:
  - kind: ServiceAccount
    name: nginx-ingress-serviceaccount
    namespace: ingress-nginx
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: nginx-ingress-clusterrole-nisa-binding
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: nginx-ingress-clusterrole
subjects:
  - kind: ServiceAccount
    name: nginx-ingress-serviceaccount
    namespace: ingress-nginx
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: nginx-ingress-controller
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
spec:
  #replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: ingress-nginx
      app.kubernetes.io/part-of: ingress-nginx
  updateStrategy:
    rollingUpdate:
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      labels:
        app.kubernetes.io/name: ingress-nginx
        app.kubernetes.io/part-of: ingress-nginx
      annotations:
        prometheus.io/port: "10254"
        prometheus.io/scrape: "true"
    spec:
      serviceAccountName: nginx-ingress-serviceaccount
      hostNetwork: true
      containers:
        - name: nginx-ingress-controller
          image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.22.0
          args:
            - /nginx-ingress-controller
            - --configmap=$(POD_NAMESPACE)/nginx-configuration
            - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
            - --udp-services-configmap=$(POD_NAMESPACE)/udp-services
            - --publish-service=$(POD_NAMESPACE)/ingress-nginx
            - --annotations-prefix=nginx.ingress.kubernetes.io
          securityContext:
            allowPrivilegeEscalation: true
            capabilities:
              drop:
                - ALL
              add:
                - NET_BIND_SERVICE
            # www-data -> 33
            runAsUser: 33
          env:
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
          ports:
            - name: http
              containerPort: 80
            - name: https
              containerPort: 443
          livenessProbe:
            failureThreshold: 3
            HTTPGET:
              パス:/ healthz 
              ポート:10254 
              スキーム:HTTP 
            initialDelaySeconds:10 
            periodSeconds:10 
            successThreshold:1 
            timeoutSecondsの:1 
          readinessProbe:
            failureThreshold:3 
            HTTPGET:
              パス:/ healthzの
              ポート:10254 
              スキーム:HTTP 
            periodSeconds:10 
            successThreshold:1 
            timeoutSecondsの:1 
---

kubectlがインストールされて使用してください。

あなたが任意のノードK8Sドメインへのデフォルトの入力のアクセスを解決した場合は、直接ログインするには、デフォルトのアカウントとパスワードを使用します。

おすすめ

転載: blog.51cto.com/kingda/2444261