kubeadm配備k 8 s

5484 ワード

kubeadmは、公式コミュニティが発表したkubernetesクラスタを迅速に導入するためのツールです.
このツールは、2つのコマンドでkubernetesクラスタの導入を完了します.
#      Master   
$ kubeadm init

#     Node           
$ kubeadm join 

1.設置要求
Kubernetesクラスタマシンの導入は、開始前に次の条件を満たす必要があります.
  • 1台または複数台のマシン、オペレーティングシステムCentOS 7.x-86_x64
  • ハードウェア構成:2 GB以上のRAM、2つのCPU以上のCPU、ハードディスク30 GB以上の
  • クラスタ内のすべてのマシン間ネットワーク相互接続
  • は外部ネットワークにアクセスでき、ミラー
  • を引き出す必要がある.
  • swapパーティション
  • を禁止
    2.学習目標
  • すべてのノードにDockerとkubeadm
  • をインストール
  • Kubernetes Master
  • の導入
  • コンテナネットワークプラグイン
  • を配備
  • Kubernetesノードを配備し、Kubernetesクラスタにノードを追加する
  • Dashboard Webページを展開し、Kubernetesリソース
  • を視覚的に表示
    3.準備環境
         :
    $ systemctl stop firewalld
    $ systemctl disable firewalld
    
      selinux:
    $ sed -i 's/enforcing/disabled/' /etc/selinux/config 
    $ setenforce 0
    
      swap:
    $ swapoff -a  $   
    $ vim /etc/fstab  $   
    
          IP    (       ):
    $ cat /etc/hosts
    192.168.31.61 k8s-master
    192.168.31.62 k8s-node1
    192.168.31.63 k8s-node2
    
        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
    

    4.すべてのノードにDocker/kubeadm/kubeletをインストール
    KubernetesのデフォルトCRI(コンテナ運転時)はDockerなので、先にDockerをインストールします.
    4.1 Dockerのインストール
    $ 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-18.06.1.ce-3.el7
    $ systemctl enable docker && systemctl start docker
    $ docker --version
    Docker version 18.06.1-ce, build e68fc7a
    

    4.2アリクラウドYUMソフトウェアソースの追加
    $ 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
    

    4.3クbeadm,クbeletおよびクbectlのインストール
    バージョンの更新が頻繁であるため、ここではバージョン番号の配置を指定します.
    $ yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0
    $ systemctl enable kubelet
    

    5.Kubernetes Masterの配備
    192.168.31.63(Master)で実行します.
    $ kubeadm init \
      --apiserver-advertise-address=192.168.31.61 \
      --image-repository registry.aliyuncs.com/google_containers \
      --kubernetes-version v1.15.0 \
      --service-cidr=10.1.0.0/16 \
      --pod-network-cidr=10.244.0.0/16
    

    デフォルトではミラーアドレスk 8 s.gcr.ioが国内でアクセスできないため、アリクラウドミラー倉庫アドレスを指定します.
    kubectlツールを使用するには:
    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
    

    6.Podネットワークカード(CNI)のインストール
    $ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
    

    quay.ioというregisteryにアクセスできることを確認します.
    ダウンロードに失敗した場合は、このミラーアドレスに変更できます:lizhenliang/flannel:v 0.11.0-amd 64
    7.Kubernetes Nodeに加入する
    192.168.31.65/66(ノード)で実行します.
    クラスタに新しいノードを追加し、kubeadm initから出力されるkubeadm joinコマンドを実行します.
    $ kubeadm join 192.168.31.61:6443 --token esce21.q6hetwm8si29qxwn \
        --discovery-token-ca-cert-hash sha256:00603a05805807501d7181c3d60b478788408cfe6cedefedb1f97569708be9c5
    

    8.kubernetesクラスタのテスト
    Kubernetesクラスタにpodを作成し、正常に動作しているかどうかを確認します.
    $ kubectl create deployment nginx --image=nginx
    $ kubectl expose deployment nginx --port=80 --type=NodePort
    $ kubectl get pod,svc
    

    アクセス先:http://NodeIP:Port
    9.Dashboardの配備
    $ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
    

    デフォルトのミラーは国内でアクセスできません.ミラーアドレスを変更するには、lizhenliang/kubernetes-dashboard-amd 64:v 1.10.1
    デフォルトのDashboardでは、クラスタ内でしかアクセスできません.サービスをNodePortタイプに変更し、外部に露出します.
    kind: Service
    apiVersion: v1
    metadata:
      labels:
        k8s-app: kubernetes-dashboard
      name: kubernetes-dashboard
      namespace: kube-system
    spec:
      type: NodePort
      ports:
        - port: 443
          targetPort: 8443
          nodePort: 30001
      selector:
        k8s-app: kubernetes-dashboard
    
    $ kubectl apply -f kubernetes-dashboard.yaml
    

    アクセス先:http://NodeIP:30001
    サービスaccountを作成し、デフォルトのcluster-admin管理者クラスタロールをバインドします.
    $ kubectl create serviceaccount dashboard-admin -n kube-system
    $ kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
    $ kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
    

    出力のtokenを使用してDashboardにログインします.