kubeadm展開Kubernetes 1.15を使用してCentOSの7

ボーエン概要:
について、Kubernetes
2、についてkubeadm
準備環境3
展開前に4または調製
1)空のiptablesのルール、ファイアウォールとSELinuxをオフにし、ドッキングウィンドウのバージョンを確認し、無効スワップ
2)無料の機密ログインは、configure hostsファイルおよびYUMソースの設定
3)架橋及びフォワードルーティングのiptablesを開く
5クラスタ展開kubernetesを
)1ダウンロードミラーにスクリプトを書く
2)必要なコンポーネントがkubernetesクラスタ展開ダウンロード
3)初期kubernetesクラスタ
4)構成マスタノードステータス
5)node01、kubernetesクラスタに参加するとnode02
6)ポスト展開最適化操作

A、Kubernetesプロフィール

Kubernetesは、オープンソース、クラウド管理プラットフォーム上のコンテナアプリケーション複数のホストです。Kubernetesの目標は、シンプルかつ効率的なのアプリケーション展開コンテナを作ることです。Kubernetesは、アプリケーションの展開、計画、更新機構のメンテナンスを提供します。

Kubernetesコア機能は、クラウドプラットフォームは、ユーザが所望の状態に応じてコンテナを実行することを保証するために、コンテナの自己管理の能力は、管理者は、その計画期間は、右の場所を見つけるためにすることを、ミニチュアのサービスをロードすることができ、同時に、Kubernetesもツールやシステムの強化でありますユーザーが簡単に独自のアプリケーションを展開することができ、人間の側面、。

フィルムボーエンはKubernetesクラスタを展開する方法について説明し、あなたが参照してくださいKubernetesをより深く理解したいKubernetes中国の文書またはKubernetes公式サイトを

二、kubeadmプロフィール

KubeadmはKubeadmiは、クラスタ構成でKubernetes公式にいくつかのベストプラクティスを学ぶことができ、各バージョンのリリースが同時に更新されますKubernetesとともに、迅速なインストールKubernetesクラスタのKubernetes公式ツールです。

第三には、環境を準備します

いいえ、デプロイメントドッキングウィンドウ環境を参照することはできません詳細にドッカーはじめとインストールの設定を環境がドッキングウィンドウ環境を使用しなければならないので、!

基本的な環境:
kubeadm展開Kubernetes 1.15を使用してCentOSの7

ハードウェア要件:
1)デュアルコアCPU、
2)最小2Gメモリと

第四に、展開前の準備

1)、ドッキングウィンドウのバージョンを確認し、ファイアウォールとSELinuxをオフにし、空のiptablesのルール、無効スワップ

以下の操作は、(生産を含む)3つのドッキングウィンドウのホスト上に配置されることになります!

[root@master ~]# docker -v             //查看docker版本信息
Docker version 18.09.0, build 4d60db4
[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld          //关闭防火墙
[root@master ~]# setenforce 0
[root@master ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux 
//关闭SELinux
[root@master ~]# iptables -F              //清空iptables规则
[root@master ~]# swapoff -a                    
[root@master ~]# sed -ri 's/.*swap.*/#&/' /etc/fstab            //禁用swap
[root@master ~]# mount -a               //重新加载挂载的配置文件
[root@master ~]# free -h                  //确认swap分区没有使用
              total        used        free      shared  buff/cache   available
Mem:           1.8G        411M        825M         10M        584M        1.2G
Swap:            0B          0B          0B
[root@master ~]# systemctl daemon-reload 
[root@master ~]# systemctl restart docker          //重新启动docker服务

2)設定は自由に機密ログインは、hostsファイルを設定し、ソースのyum

特別なステートメントは、マスターノードは実行できません!

[root@master ~]# echo -e "192.168.1.1 master\n192.168.1.2 node01\n192.168.1.3 node02" >> /etc/hosts
//配置hosts文件,便于域名解析
[root@master ~]# ssh-keygen -t rsa
[root@master ~]# ssh-copy-id root@node01
[root@master ~]# ssh-copy-id root@node02
//配置node01、node02的免密登录
[root@master ~]# scp /etc/hosts root@node01:/etc/
[root@master ~]# scp /etc/hosts root@node02:/etc/
//将更改完成的配置文件发送到node01、node02
[root@master ~]# echo -e "[kubernetes]\nname=Kubernetes\nbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/\nenabled=1\ngpgcheck=0" >> /etc/yum.repos.d/kubernetes.repo
//配置阿里云镜像站yum文件
[root@master ~]# scp /etc/yum.repos.d/kubernetes.repo root@node01:/etc/yum.repos.d/
[root@master ~]# scp /etc/yum.repos.d/kubernetes.repo root@node02:/etc/yum.repos.d/
//将yum文件发送到node01、node02服务器上
//以下操作需在三台docker主机上都执行以下
[root@master ~]# yum repolist        //查看配置的yum文件有没有可用的包
kubernetes                                  Kubernetes                                        442            //这个数字不可以为0
[root@master ~]# yum makecache          //制作yum元数据缓存

3)iptablesのブリッジとルーティングおよび転送を開き

[root@master ~]# echo -e "net.bridge.bridge-nf-call-iptables = 1\nnet.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.d/k8s.conf
[root@master ~]# sysctl -p  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
//开启iptables桥接功能
[root@master ~]# echo -e "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf 
[root@master ~]# sysctl -p
net.ipv4.ip_forward = 1
//开启路由转发功能
[root@master ~]# scp /etc/sysctl.d/k8s.conf root@node01:/etc/sysctl.d/   
[root@master ~]# scp /etc/sysctl.d/k8s.conf root@node02:/etc/sysctl.d/
[root@master ~]# scp /etc/sysctl.conf root@node01:/etc/
[root@master ~]# scp /etc/sysctl.conf root@node02:/etc/
//将文件复制到node01、node02
//在node01、node02执行以下命令
[root@node01 ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@node01 ~]# sysctl -p  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
[root@node02 ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@node02 ~]# sysctl -p  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
//如果在配置过程中出现错误,需执行以下命令
[root@master ~]# modprobe br_netfilter
//使内核加载br_netfilter模块

この時点で、環境がフィニッシュに準備ができて考えられています!

第五に、クラスタの展開kubernetes

特定の会社が開発しkubernetes、彼らは特定の画像を使用して、その制限のために,,中国で開発され、特定の会社になると、直接画像をダウンロードし、多くの国内kubernetesがありますすることはできませんプロバイダを反映し、例えば、アリ、清華大学は、我々は最初のダウンロードに国内のミラーリングkubernetesクラスタの展開を必要とします。

1)ダウンロードイメージにスクリプトを書きます

その複雑さ、fallibilityのため。だから私は意図的にスクリプトを提供します。

必要なスクリプトのマスターノード:

[root@master ~]# cat push.sh 
#!/bin/bash
K8S_VERSION=v1.15.0
ETCD_VERSION=3.3.10
DASHBOARD_VERSION=v1.8.3
FLANNEL_VERSION=v0.11.0-amd64
DNS_VERSION=1.3.1
PAUSE_VERSION=3.1
# 基本组件
docker pull mirrorgooglecontainers/kube-apiserver:$K8S_VERSION
docker pull mirrorgooglecontainers/kube-controller-manager:$K8S_VERSION
docker pull mirrorgooglecontainers/kube-scheduler:$K8S_VERSION
docker pull mirrorgooglecontainers/kube-proxy:$K8S_VERSION
docker pull mirrorgooglecontainers/etcd-amd64:$ETCD_VERSION
docker pull mirrorgooglecontainers/pause:$PAUSE_VERSION
docker pull coredns/coredns:$DNS_VERSION
# 网络组件
docker pull quay.io/coreos/flannel:$FLANNEL_VERSION
# 修改镜像标签
docker tag mirrorgooglecontainers/kube-apiserver:$K8S_VERSION k8s.gcr.io/kube-apiserver:$K8S_VERSION
docker tag mirrorgooglecontainers/kube-controller-manager:$K8S_VERSION k8s.gcr.io/kube-controller-manager:$K8S_VERSION
docker tag mirrorgooglecontainers/kube-scheduler:$K8S_VERSION k8s.gcr.io/kube-scheduler:$K8S_VERSION
docker tag mirrorgooglecontainers/kube-proxy:$K8S_VERSION k8s.gcr.io/kube-proxy:$K8S_VERSION
docker tag mirrorgooglecontainers/etcd-amd64:$ETCD_VERSION k8s.gcr.io/etcd:$ETCD_VERSION
docker tag mirrorgooglecontainers/pause:$PAUSE_VERSION k8s.gcr.io/pause:$PAUSE_VERSION
docker tag coredns/coredns:$DNS_VERSION k8s.gcr.io/coredns:$DNS_VERSION
#删除冗余的images
docker rmi mirrorgooglecontainers/kube-apiserver:$K8S_VERSION
docker rmi mirrorgooglecontainers/kube-controller-manager:$K8S_VERSION
docker rmi mirrorgooglecontainers/kube-scheduler:$K8S_VERSION
docker rmi mirrorgooglecontainers/kube-proxy:$K8S_VERSION
docker rmi mirrorgooglecontainers/etcd-amd64:$ETCD_VERSION
docker rmi mirrorgooglecontainers/pause:$PAUSE_VERSION
docker rmi coredns/coredns:$DNS_VERSION
[root@master ~]# docker images            //脚本下载完成之后,确认本地有以下镜像
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
k8s.gcr.io/kube-proxy                v1.15.0             d235b23c3570        6 months ago        82.4MB
k8s.gcr.io/kube-apiserver            v1.15.0             201c7a840312        6 months ago        207MB
k8s.gcr.io/kube-controller-manager   v1.15.0             8328bb49b652        6 months ago        159MB
k8s.gcr.io/kube-scheduler            v1.15.0             2d3813851e87        6 months ago        81.1MB
quay.io/coreos/flannel               v0.11.0-amd64       ff281650a721        11 months ago       52.6MB
k8s.gcr.io/coredns                   1.3.1               eb516548c180        11 months ago       40.3MB
k8s.gcr.io/etcd                      3.3.10              2c4adeb21b4f        13 months ago       258MB
k8s.gcr.io/pause                     3.1                 da86e6ba6ca1        2 years ago         742kB

必要なスクリプトノードのノード:

[root@node01 ~]# cat push.sh 
#!/bin/bash
K8S_VERSION=v1.15.0
FLANNEL_VERSION=v0.11.0-amd64
PAUSE_VERSION=3.1
# 基本组件
docker pull mirrorgooglecontainers/kube-proxy:$K8S_VERSION
docker pull mirrorgooglecontainers/pause:$PAUSE_VERSION
# 网络组件
docker pull quay.io/coreos/flannel:$FLANNEL_VERSION
# 修改镜像标签
docker tag mirrorgooglecontainers/kube-proxy:$K8S_VERSION k8s.gcr.io/kube-proxy:$K8S_VERSION
docker tag mirrorgooglecontainers/pause:$PAUSE_VERSION k8s.gcr.io/pause:$PAUSE_VERSION
#删除冗余的images
docker rmi mirrorgooglecontainers/kube-proxy:$K8S_VERSION
docker rmi mirrorgooglecontainers/pause:$PAUSE_VERSION
[root@node01 ~]# docker images            //脚本下载完成之后,确认本地有以下镜像
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
k8s.gcr.io/kube-proxy    v1.15.0             d235b23c3570        6 months ago        82.4MB
quay.io/coreos/flannel   v0.11.0-amd64       ff281650a721        11 months ago       52.6MB
k8s.gcr.io/pause         3.1                 da86e6ba6ca1        2 years ago         742kB

次の画像は、あなたが他のバージョンを使用している場合、あなた自身を変更することができ、唯一の上記のスクリプト展開Kubernetes 1.15バージョンです!

2)クラスタkubernetesを展開するために必要なコンポーネントをダウンロード

[root@master ~]# yum -y install kubeadm-1.15.0-0 kubelet-1.15.0-0 kubectl-1.15.0-0
//master端下载所需组件
[root@node01 ~]# yum -y install kubeadm-1.15.0-0 kubelet-1.15.0-0
[root@node02 ~]# yum -y install kubeadm-1.15.0-0 kubelet-1.15.0-0
//node端下载所需组件

3)初期化kubernetesクラスタ

完了する画像マスターノードをダウンロードした後、彼らは、次のコマンドを実行する前に!

[root@master ~]# kubeadm init --kubernetes-version=v1.15.0 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap
//这里指定的版本必须和前面yum安装的版本一致。指定的两个网络则是官方建议使用的网段
//如果执行上述命令后,返回CPU相关的报错信息,那么需要调大CPU的核心数
//初始化成功后,首先复制下面返回的这条命令,并妥善保存
//若初始化失败,修改完成之后需执行kubeadm reset进行重置群集
kubeadm join 192.168.1.1:6443 --token t8z5r7.37p2ho7saq978ag4 \
    --discovery-token-ca-cert-hash sha256:c62eaeb47c2bce30a1169304c46c31f49f76655998b153ab5bdf4daac976368a 
//上面这条命令是用来其他节点加入到当前k8s群集中需要执行的
//一旦丢失,特别麻烦,并且只有24小时有效期,每次初始化群集后产生的都不一样
[root@master ~]#  mkdir -p $HOME/.kube
[root@master ~]#  cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# chown $(id -u):$(id -g) $HOME/.kube/config

次のように初期化が成功した後スクリーンショット情報:
kubeadm展開Kubernetes 1.15を使用してCentOSの7
情報は、図に表示されない場合は、初期化の失敗クラスタkubernetesを示します!

4)構成マスタノードステータス

[root@master ~]# kubectl get nodes        //查看群集节点信息
NAME     STATUS     ROLES    AGE   VERSION
master   NotReady   master   19m   v1.15.0
//从状态中可以看出是NotReady(没有准备好)

推奨されるgithubのダウンロードフランネルツール、など:
kubeadm展開Kubernetes 1.15を使用してCentOSの7
:ドロップダウンバージョンを選択した後、として、次のフィールドを見つける
kubeadm展開Kubernetes 1.15を使用してCentOSの7
最初の方法:

[root@master ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

以下の写真は、成功を示すダウンロード!
kubeadm展開Kubernetes 1.15を使用してCentOSの7

第二の方法:
推奨速度はこのように悪い場合は!

[root@master ~]# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
[root@master ~]# kubectl apply -f kube-flannel.yml
//将配置文件下载完成后,对下载的配置文件执行相应的命令

することができます上記の2つの方法のいずれかを選択します!

[root@master ~]# kubectl get nodes          //再次查看群集节点情况
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   50m   v1.15.0
//此时发现状态已经是Ready(准备好了)

5)node01、node02で参加kubernetesクラスタ

イメージノードの所望のノードが、構成要素は、次のコマンドの前に、インストールされます。

[root@node01 ~]# kubeadm join 192.168.1.1:6443 --token t8z5r7.37p2ho7saq978ag4 \
    --discovery-token-ca-cert-hash sha256:c62eaeb47c2bce30a1169304c46c31f49f76655998b153ab5bdf4daac976368a 
[root@node02 ~]# kubeadm join 192.168.1.1:6443 --token t8z5r7.37p2ho7saq978ag4 \
    --discovery-token-ca-cert-hash sha256:c62eaeb47c2bce30a1169304c46c31f49f76655998b153ab5bdf4daac976368a 
//执行masterr初始化kubernetes群集时返回的命令,以便加入到master的kubernetes群集中      

以下は、図に示すように、成功するために表示されます。
kubeadm展開Kubernetes 1.15を使用してCentOSの7

[root@master ~]# kubectl get nodes      //master节点查看群集节点情况
NAME     STATUS   ROLES    AGE     VERSION
master   Ready    master   57m     v1.15.0
node01   Ready    <none>   3m44s   v1.15.0
node02   Ready    <none>   3m50s   v1.15.0
//发现node节点已经正常加入群集中

これまでのところ、Kubernetesクラスタが展開されました!私たちは、次の最適化の操作をお勧めします。

6)ポスト展開最適化操作

間隔(1)マスターノードセット]タブのデフォルト(YMLを頻繁にファイルを記述する必要があるため)

[root@master ~]#  echo "set tabstop=2" >> .vimrc 
[root@master ~]# source .vimrc
//设置tab键默认间距为两个空格,并使其生效

(2)設定kubectl自動補完コマンド(マスターノードとノードを構成するノード)

[root@master ~]#  yum -y install bash-completion
[root@master ~]# source /usr/share/bash-completion/bash_completion 
[root@master ~]#  source <(kubectl completion bash)
[root@master ~]#  echo "source <(kubectl completion bash)" >> ~/.bashrc

(3)マスタノードクラスタKubernetesが確認問題がありません

[root@master ~]# kubectl get pod --all-namespaces
//查看pod资源,确保返回的信息都是running
//不指定具体的名称空间,表示查看本节点所有的名称空间

若しくは

[root@master ~]# kubectl get pod -n kube-system
//查看pod资源,确保返回的信息都是running
//指定kubernetes集群的名称空间

:コマンドの結果は次のように、返すように完成された場合にのみ
kubeadm展開Kubernetes 1.15を使用してCentOSの7

(4)マスタノードノードノードドッカー、カイからブートに参加するkubeletサービスを構成

[root@master ~]# systemctl enable docker
[root@master ~]# systemctl enable kubelet

セットアップが完了したら、テストを再開することをお勧めします!問題がないことを、状態の完了後に再度確認するために、または実行中の状態を確認するために、クラスタノードを再起動します。

----------記事。読書をありがとう------------

おすすめ

転載: blog.51cto.com/14157628/2463901