[実践演習] kubernetes&ドッキングウィンドウ-kubernetes管理プラットフォームのインストールと使用

スタンドアロンインストールのドッキングウィンドウで導入し、その後、思い出すことができないたびに手動でドッキングウィンドウのインスタンスを作成するまでの2、高可用性ではありませんスタンドアロンインストールされているプレイされ、より便利に構築するために管理しました。

だから、特別なドッキングウィンドウ、スケジューリング、より多くの主流のソリューションですkerbernetesプラットフォームの破壊を、管理するために作成されたさまざまなを出産しました。(K8Sと呼ばれます)


実験環境:

オペレーティングシステム: CentOS7

クラスタをkerbernetes:実験は、クラスタに基づいて展開されていない、管理ノードは、スタンドアロン展開であるkerbernetes

ノード IPアドレス
マスター 10.1.30.34
etcd 10.1.30.34
ミラー倉庫 10.1.30.34:5000
node01 10.1.30.35
node02 10.1.30.36


1、環境の準備:

1.1ファイアウォールをオフにします

firewalld停止systemctl 
systemctl無効firewalld

1.2閉じるのselinux

setenforce 0 
viのは/ etc / selinuxを/ configに
SELINUX =無効

ヤムヤム拡張ソースの設定および取り付け

わずか構成されたyumのソースを使用してアリ雲、[練習]を参照して、Linuxオペレーティングシステム04- yumのソースを設定するにはドリルhttps://blog.51cto.com/14423403/2416049を

1.4ホスト名を変更します

ホスト名を変更します。

viのは/ etc /ホスト名

#それぞれ独自の名前に対応する修正。

10.1.30.34入力マスター

10.1.30.35入力node01

10.1.30.36入力とnode02

また、あなたは直接ホスト名を入力し、ホスト名を変更して、有効にするためにマシンを再起動する必要があります

1.5ホストテーブルを変更します

すべての3つを変更する必要が

VIの/ etc / hosts
127.0.0.1はlocalhost localhost.localdomainをlocalhost4 localhost4.localdomain4 
:: 1 localhostのlocalhost.localdomainをlocalhost6 localhost6.localdomain 
10.1.30.34マスター
10.1.30.34 etcd 
10.1.30.35 node01 
10.1.30.36とnode02

1.6コンフィギュレーション・フリー密集ログイン

SSH-keygenは

  デフォルトの缶を入力する//方法

SSHコピー-ID {IP}他のマシン

その他のリモートマシンよろしいですプロンプトが表示されたら、接続を続行したい(はい/いいえ)?

押して、はい継続し、パスワードターゲットホストの入力を求めるメッセージが表示します。

リモートでログオンするためのパスワードのためのプロンプトがない場合は、他のマシンのIPテストへのsshは、操作は完了です。


2、マスターのインストール:

次2.Xの内容は、唯一のマスター(インストール10.1.30.34ノード)、必要なノードを必要としています。

2.1インストールサービスetcd

YUM etcd -yをインストール

設定etcd

我々は/etc/etcd/etcd.conf
ETCD_LISTEN_CLIENT_URLS = "のhttp:// localhostを:2379は、http://10.1.30.34:2379" 
ETCD_ADVERTISE_CLIENT_URLS = "http://10.1.30.34:2379"

ファイル名を指定して実行etcd

etcd開始systemctl 
systemctlはetcdを有効にします

Etcdネットワーク構成情報

etcdctlセット/ K8S /ネットワーク/コンフィグ '{ "ネットワーク": "173.16.0.0/16"}

ポッドサービスクラスタの複数の構成ドッカーインスタンスによって作成された次のセグメント#1 YAMLは、IPアドレスが割り当てられたときにこれが使用されます。そして正しく割り当てられたノードアドレスと通信するために、後部フランネルと一致するように構成される。

#注173.16.0.0/16これは容易に変更することができるが、16ビット、24ビットの問題の使用。


2.2インストールkurbernetsマスター

yumをkubernetesマスターをインストール-y

設定APIサーバー

viのは/ etc / kubernetes / apiserver 
KUBE_API_ADDRESS = " -安全でないバインドアドレス= 0.0.0.0"
KUBE_ETCD_SERVERS = "--etcd-サーバ=のhttp://10.1.30.34:2379"  
KUBE_SERVICE_ADDRESSES = " -サービス-クラスタIP-範囲= 173.16.0.0 / 16" 
KUBE_ADMISSION_CONTROL = " -入場コントロール= NamespaceLifecycle、NamespaceExists 、LimitRanger、ResourceQuota」

でKUBE_ADMISSION_CONTROLのデフォルトを除去する必要性に#注意SecurityContextDenyServiceAccount、および構成関連の権利は、実験する必要はありません。

同じネットワークセグメント--serviceクラスタ-IP-範囲はetcdセットを必要とします

グローバルコンフィギュレーション・ファイル

viのは/ etc / kubernetes /設定
KUBE_MASTER = "--master =のhttp://10.1.30.34:8080"

サービスを開始し、サービスが起動するように設定されています

KUBE-apiserver KUBE-スケジューラKUBEコントローラマネージャイネーブルsystemctl  
KUBE-apiserver KUBE-スケジューラKUBEコントローラマネージャを再起動systemctl

検証テスト:

Webアクセスhttp://10.1.30.34:8080/、正常に戻るがあります。

001.png

3、ノードのインストール:

次3.Xコンテンツ、そうでない場合にのみインストールせずにノードのノードのインストール、マスターに記載がない限り。

3 .1取付ドッカー(マスター、ノードがインストールされる必要があります

yumをドッキングウィンドウ-yインストール
systemctl開始ドッキングウィンドウを

小さな引っ張り試験用画像

ドッキングウィンドウで実行busyboxのエコーの「Hello World」

3 .2取付フランネルマスター、ノードがインストールされる必要があります

kurbernetsマスタとノード間の内部通信のために使用#flannel、ノードへのノードは、この機能を提供するだけでなく、同様のキャラコ、追加のインストールを必要とせず、それ自体をkurbernets。

yumのフランネルをインストール-y
配置flannel
vi /etc/sysconfig/flanneld
FLANNEL_ETCD_ENDPOINTS="http://10.1.30.34:2379" 
FLANNEL_ETCD_PREFIX="/k8s/network"

#注意/k8s/network与之前etcd配置保持一致

3.3安装kubernetes node

yum install kubernetes-node -y

编辑全局配置文件

vi /etc/kubernetes/config
KUBE_MASTER="--master=http://10.1.30.34:8080"

编辑kubelet组件

#此组件很重要,配置错误yaml经常无法正常创建docker

vi /etc/kubernetes/kubelet
KUBELET_ADDRESS="--address=0.0.0.0"

#对所有接口开放,使master能够登录node查看pod信息;该参数默认为127.0.0.1

KUBELET_PORT="--port=10250"
KUBELET_HOSTNAME="--hostname-override=node01"

#node01、02按实际修改 

KUBELET_API_SERVER="--api-servers=http://10.1.30.34:8080"

# pod infrastructure container

KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"

#修改根镜像下载地址,默认为registry.access.redhat.com/rhel7/pod-infrastructure:latest,yaml后面创建docker,kubectl get pod后面,pod一直卡在ContainerCreating不变为running,会有个报错。也可以修改为私有镜像仓库,参见“下一篇k8s私有镜像仓库的搭建”,可以修改为registry:5000/ pod-infrastructure:latest",那么所有镜像就能从registry那边pull与push了

# Add your own!

KUBELET_ARGS="--cluster_dns=173.16.0.100 --cluster_domain=cluster.local"

 #添加DNS配置项,173.16.0.100的地址,在etcd配置的网段里面,随便选择一个IP地址都可以,注意一定要是etcd配置的地址段

修改dns解析配置(注意只有这一步master也需要修改

vi /etc/resolv.conf

将内部信息改为(追加)

search default.svc.cluster.local svc.cluster.local cluster.local
nameserver 173.16.0.100

启动服务与设置开机启动

systemctl enable kubelet kube-proxy 
systemctl restart kubelet kube-proxy

每次修改配置后的配置重载与服务重启(必须daemon-reload重载,修改才生效)

systemctl daemon-reload
systemctl restart kubelet kube-proxy

Node整体服务开启

systemctl restart flanneld
systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet kube-proxy
iptables -P FORWARD ACCEPT

#不加node与master的通信会有问题


4、创建实例:

在master运行

kubectl get node

返回节点ready,表示节点已正常。

002.png

kubectl get pod表示no resource,表示还未有创建实例。

003.png

在master上配置rcyaml文件与svcyaml文件,用于在node创建docker实例。使用tomcat进行测试。

vi myweb-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: myweb
spec:
  replicas: 2
  selector:
    app: myweb
  template:
    metadata:
      labels:
        app: myweb
    spec:
      containers:
        - name: myweb
          image: registry:5000/tomcat
          ports:
          - containerPort: 8080
          env:
            - name: MYSQL_SERVICE_HOST
              value: 'mysql'
            - name: MYSQL_SERVICE_PORT
              value: '3306'

#其中replicas: 2表示2个pod,相当于2个副本

image: tomcat,这里可以修改不同的镜像源/tomcat,注意registry:5000/tomcat需要私有仓库支持,详见“”


编辑svc文件

vi myweb-svc.yaml
apiVersion: v1
kind: Service
metadata: 
  name: myweb
spec:
  type: NodePort
  ports:
    - port: 8080
      name: myweb-svc
      nodePort: 30001
  selector:
    app: myweb

创建pod与svc

kubectl create -f myweb-rc.yaml
kubectl create -f myweb-svc.yaml

#删除可以将create改为delete

查看结果

kubectl get pod
kubectl get svc

004.png

测试docker实例是否可用

可以直接访问node:30001端口进行测试,看是否正常返回tomcat页面。

如10.1.30.35:30001

005.png

5、排错:

如果发现pod一直卡在ContainerCreating,没有变为running

到node上面运行如下命令查看日志

journalctl -u kubelet -f

发现报错

details: (open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory)

解决方法:(每个node节点都需要)

yum install *rhsm*

然后执行

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm

然后执行

rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem

然后执行

docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest

回到master,删除myweb-rc,重新创建myweb-rc

kubectl delete -f myweb-rc.yaml
kubectl create -f myweb-rc.yaml


等待一会儿,重新kubectl get pod

NAME          READY     STATUS    RESTARTS   AGE
myweb-j916d      1/1       Running     0       47m
myweb-m962p      1/1       Running     0       47m

pod正常运行,变为running状态。

kubectl get svc
NAMEのCLUSTER-IP EXTERNAL-IP PORT(S)AGEの
kubernetes 173.16.0.1 <なし> 443 / TCPの6Hの
myweb 173.16.133.17 <ノード> 8080:30001 / TCP 5H

10.1.30.35:30001テストを再訪。


おすすめ

転載: blog.51cto.com/14423403/2416702