kubeadm install k8sおよびDashBoardに基づくサービスグリッド

序文:

マイクロサービスはまだ普及しておらず、サービスグリッドの登場により3つの会社に感心しました。私は死なずに死なないという原則に従って、深い(ru)研究を行いました。このシリーズは、「サービスグリッドのkubeadmに基づくk8sとDashBoardのインストール」、「サービスグリッドのKubernetesに基づくIstioのインストール」、「サービスグリッドのIstio基本プラクティス」、「サービスグリッド」の4つの記事で構成されています。 Istioを使用してマイクロサービスを開発します。

 

学習への道はでこぼこですが、この道はあなたの人生を疑うようにあなたを陥落させるピットのピットです。したがって、この記事では、インターネットでのベストプラクティスと私のピットステッピングプラクティスを収集、ピットやルーチンのないk8sチュートリアルのインストールが称賛され、奨励されていると結論付けました

 

冒頭の言葉:

注:k8sのステータスが間違っている場合は、kubeletサービスのステータスを確認し、設定したホストが有効になるかどうかに注意してください

#kubeletログ情報の表示
journalctl -xeu kubelet

環境:インストール環境は、CentOS 7を実行するHyper-V仮想マシンであり、Kubernetesは1.18です。

 

機械の基本設定

 

仮想マシンを作成します。

Hyper-Vを使用して仮想マシンを作成し、CentOSをインストールします。Hyper-VのCentOSがインターネットにどのようにアクセスするかが問題です。

 

最も簡単な方法は、Hyper-Vでネットワークを作成し、作成したネットワークを仮想マシンに使用することです。同時に、図に示すように、仮想マシンが外部ネットワークにアクセスできるように、仮想マシンを自身の物理マシンのネットワークでHyper-Vで作成されたネットワークと共有できます。

 

 

ホスト名は、1台のマシンのみ、またはすべてのノードで設定できます。

#マスターノードが
hostnamectl setを実行 - ホスト名 k8s- マスター  #スレーブ
ノードが
hostnamectlセットを実行 - ホスト名 k8s-node1

 

/ etc / hostsファイルを変更して、ホスト名とIPアドレスをマップします。

vim / etc / hosts 
##次の内容をファイルに
追加しますip address k8s - master 
ip address k8s -node1

 

再起動するたびにIPが変更されないようにするには、静的IPアドレスを設定します。

このパスに切り替え
cd / etc / sysconfig / network- scripts 

#ファイル情報を表示ls#最初のファイルを編集、一般名はifcfg -ens + number、ローカルはifcfg- eth0 
vim ifcfg - eth0 

BOOTPROTO = " 静的な"   静的なように変更#
IPADDR = 192.168242.138   #が自分修正することができ
GATEWAY = 192.168242.2    #を、同じ物理マシンのゲートウェイ= NETMASKにネットワークを作成255.255255.0 ONBOOT = yesの

 

DNSを設定する

VIMの/ etc / resolv.confの    
#は、次の書き込み
ネームサーバ192.168242.2   #一貫したゲートウェイ

 

ネットワークサービスを再起動します

サービスネットワークの再起動

 

テスト中

ping www.baidu.com  

 

ファイアウォールをオフにして無効にする

systemctl stop firewalld 

systemctl disable firewalld

 

SeLinuxを閉じる

コンテナがホストのファイルシステムにアクセスできるように、selinuxを閉じます。

#無効に
 セッド -i ' S /強制/無効/ 'は/ etc / SELinuxの/ コンフィグ

#検証閉じる
CATの/ etc / SELinuxの/ configに

 

スワップを無効にする

kubernetesの操作を閉じないとエラーが発生し、インストールが成功しても、ノードの再起動後kubern etesサーバーの操作エラーが表示されます

#ファイルを編集し、#を使用してスワップ
vim / etc / fstab にコメントを付けます

 

コンピュータを再起動します

リブート

 

スワップを表示

無料 -h

 

selinuxのステータスを表示する

getenforce無効

 

Docker設定

Dockerのyumインストールソースを構成し、docker-ceをインストールします。

Dockerインストールソースの構成

 yum -y install  yum -utils yum -config-manager --add-repo http:// mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

利用可能なバージョンを確認し、適切なバージョンを選択してください

 yumリストdocker-ce --showduplicates | grep  " ^ doc " | ソート -r

 

インストールする

yum -y install docker-ce- 18.061 .ce- 3 .el7

 

ドッカーを起動

systemctl start 

docker systemctl enable docker 

#验证
dockerの状態systemctl status docker

 

k8sをインストールする

Alibaba Cloud Yumミラーとしてkubernetesを構成する

echo  " [kubernetes] name = Kubernetes baseurl = https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled = 1 pgcheck = 1 repo_gpgcheck = 1 gpgkey = https://mirrors.aliyun。 com / kubernetes / yum / doc / yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg " > / etc / yum .repos.d / kubernetes.repo

 

kubernetesコンポーネントをインストールする

yum  install -y parenting beadm kubectl --disableexcludes = kubernetes systemctl enable 

###验证parenting状
systemctl status parenting

前のコマンドは、マスターと各ノードで別々に実行する必要があります。

 

Kubernetesマスターノードをインストールする

単一ノードのKubernetesの場合、次のように、マスターノードでポッドを分散できるように設定する必要があることに注意してください。

kubectl taint nodes --all node-role.kubernetes.io/master-

 

インストールする必要があるイメージのリストを作成します

kubeadm構成イメージリスト

 

プルツールをインストールする

curl -Lo / usr / local / bin / azk8spull https:// github.com/xuxinkun/littleTools/releases/download/v1.0.0/azk8spullchmod + x / usr / local / bin / azk8spull

使用方法:azk8spull k8s.gcr.io/pause:3.1

 

azk8spullツールを使用して、必要なイメージを順番にプルします

 

ネットワーク構成

エコー 1 > / proc / sys / net / bridge / bridge-nf-call-iptables エコー 1 > / proc / sys / net / ipv4 / ip_forward

 

マスターを初期化する

sudo kubeadm init --pod-network-cidr = 10.2440.0 / 16

注:--pod-network-cidrを設定する必要があります。これもフランネルと同じであるため、IPアドレスは上記に記載するのが最適です。

インストールが成功すると、結合クラスターのステートメントとトークン値が次のように出力されます。

次に、rootとして次の
コマンドを実行することにより、任意の数のワーカーノードに参加できます。kubeadm join  192.168137.2056443 --token 66ym67.0wdrafrclpzuwk74 --discovery-token-ca-cert-hash sha256:e7b32df67ec6d75bf79c94499a40450aa5e33f6b23365cd7f0f6eaeba4f15c70

ノードのインストール用に保存できます

 

インストールが失敗した場合は、リセットできます

kubeadmのリセット

 

承認情報を構成する

initが成功すると、マスターノードが正常に初期化され、成功後にいくつかの操作が要求されます。(失敗した場合は、問題に基づいて改善してください)。

クラスタの使用を開始するには、次のコマンドを実行する必要があります。

これは、主に関連する構成情報をユーザーディレクトリに保存するために承認情報を構成するため、関連する認証情報を毎回入力する必要はありません。

mkdir -p $ HOME / .be 

sudo  cp -i /etc/kubernetes/admin.conf $ HOME / .be / config 

sudo  chown $(id -u):$(id -g)$ HOME / .be / config

 

kubeletの構成を確認する

cat / var / lib / kubelet / kubeadm-flags。env  
KUBELET_KUBEADM_ARGS =-cgroup-driver = cgroupfs --network-plugin = cni

 

フランネルをインストール

Flannelは、CoreOSチームがKubernetes向けに設計したオーバーレイネットワークツールです。その目的は、Kuberentesを使用するすべてのCoreOSホストが完全なサブネットを持つことを支援することです。

sysctl net.bridge.bridge-nf-call-iptables = kubectl apply -f https:// raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 

systemctl restart 

docker kubectl get nodes

 

ノードをインストール

マスターのみをインストールする場合は、スキップできます

1.イメージをインストールします

2.ネットワーク構成

3. マスターに保存されたステートメントを使用して、ノードをクラスターに参加させます

kubeadm  192.168に参加します。137.2056443 --token 66ym67.0wdrafrclpzuwk74 --discovery-token-ca-cert-hash sha256:e7b32df67ec6d75bf79c94499a40450aa5e33f6b23365cd7f0f6eaeba4f15c70

忘れた場合は、次のステートメントを使用して取得できます。

kubeadm token create --print- join -command

 

ダッシュボードをインストール

ダッシュボードのyamlファイルを取得する

wget https:// raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

壁がある場合は、最初にファイルをダウンロードしてから、サーバーにコピーできます。

ダッシュボードをk8sにインストールする

kubectl apply -f kubernetes-dashboard.yaml

 

管理ユーザーを作成

kubectl create clusterrolebinding admin --clusterrole = cluster-admin --user = admin

 

管理者ユーザーをkubernetes-dashboardサービスにバインドする

####プロンプトがすでに存在する場合は、
clusterrolebinding kubectl create clusterrolebinding kubernetes -dashboard --clusterrole = cluster-admin --serviceaccount = kube-system:kubernetes-dashboardの後に名前を変更します

 

ポート転送

デフォルトでは、ダッシュボードはローカルホストでのみアクセスできるため、ポート転送が必要です

####这样使用https://ip:10443端口访问即可
nohup kubectl port-forward -n kubernetes-dashboard service/kubernetes-dashboard 10443:443 --address 0.0.0.0 &

 

经过一系列操作之后,可以通过https://ip:10443进行访问,但是此时是只能通过token访问的,token获取方式如下:

####执行如下命令,获取所有的secret,找到名字为dashboard-admin的kubectl get secrets

NAME                                       TYPE                                  DATA   
AGEdashboard
-admin-sa-token-zhjng kubernetes.io/service-account-token 3 16h
default-token-vqjcd   kubernetes.io/service-account-token 3 17h ####执行如下命令,获取Token kubectl describe secret dashboard-admin-sa-token-zhjng

 

复制输出的token到登录界面即可。

 

启用Basic Auth(用户名和密码)

默认是token方式,比较繁琐

编辑kubernetes-dashboard.yaml文件(默认在/etc/kubernetesdashboard下)

####找到kind为Deployment下的containers-->节点,加入如下配置,默认为token 
- --authentication-mode=basic

保存退出,现在访问https://ip:10443会有一个用户名和密码的输入框,可以登录成功,但是看不到数据。

通过kubectl getpods -n kubernetes-dashboard 查看DashBoard的pods状态,如果状态不为 Running,则表明其实失败或启动中。可以通过 kubectl describe pods -n kubernetes-dashboard进行查看,确定是否存在异常,如果发现最后的状态是Pull Image,表明拉取镜像太慢,可以手动通过 azk8spull imagename或者是通过docker pull imagename手动拉取。

Tips:强制替换执行yaml文件

kubectl replace --force -f kubernetes-dashboard.yaml

 

解决访问安全问题

经过上边的操作,可以使用用户名和密码登录,但是看不到数据,继续折腾。创建包含用户名和密码的csv文件

####格式是 密码,用户名,uid
echo "admin,admin,1" > /etc/kubernetes/config/basic_auth.csv

 

编辑kube-apiserver.yaml文件

 

vim /etc/kubernetes/mainfests/kube-apierver.yaml

####找到-kube-apiserver节点,加入如下配置,注意层级
 - --basic-auth-file=/etc/kubernetes/config/k8sdashboardauth.csv
 - --authorization-mode=Node,RBAC
 
 
####由于使用了配置文件,则需要把宿主机器的config文件夹挂载到容器中
####1.在配置文件中找到volumes节点,加入如下配置,注意层级
  - hostPath:
      path: /etc/kubernetes/config
      type: DirectoryOrCreate
    name: k8s-auth-config
    
####2.在配置文件中找到volumeMounts节点,加入如下配置,注意层级
    - mountPath: /etc/kubernetes/config
      name: k8s-auth-config
      readOnly: true


####退出编辑,保存文件

这个时候,退出登录DashBoard,重新登录,不出意外,可以看到所有的数据了,到此为止,DashBoard实现了使用用户名和密码登录。

注意:不管是启动的kubernest相关的组件,还是DashBoard,都是运行在docker中的容器,当出现问题的时候,可以使用docker logs 容器名称(容器id)查看日志,或者使用 kubectl pods -n namespace方式查看pod的信息,进行确定问题所在。

 

总结:

通过一步一步,我们终于把kubernetes给安装成功了,同时也安装了一个dashboard可以可视化操作,也开启了用户名和密码方式的登录。到这里,kubernetes的安装工作就完成了,相信你跟着上述的步骤,可以成功的安装成功。

 

参考文章

https://blog.csdn.net/jholy/article/details/84962357

おすすめ

転載: www.cnblogs.com/ListenFly/p/12733967.html