CentOS7はk8sクラスターを展開します

環境の紹介と準備##

オペレーティングシステムはCentos7.364ビットを使用します。詳細は次のとおりです。

[ root@k8s-master ~]# uname -a
Linux k8s-master 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 1922:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[ root@k8s-master ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511(Core)

ホスト情報###

この記事では、k8sの動作環境を展開するための3台のマシンを用意しました。詳細は次のとおりです。

ノードと関数 ホスト名 IP
master、etcd、registry k8s-master 10.211.55.6
node1 k8s-node-1 10.211.55.7
node2 k8s-node-2 10.211.55.8

3台のマシンのホスト名を設定します。マスターで実行:

1 [ root@localhost ~]# hostnamectl --static set-hostname k8s-master

node1で実行します。

1 [ root@localhost ~]# hostnamectl --static set-hostname k8s-node-1

node2で実行します。

1 [ root@localhost ~]# hostnamectl --static set-hostname k8s-node-2

3台のマシンでホストをセットアップするには、次のコマンドを実行します。

echo '10.211.55.6    k8s-master
10.211.55.6 etcd
10.211.55.6 registry
10.211.55.7 k8s-node-110.211.55.8   k8s-node-2' >>/etc/hosts

3台のマシンのファイアウォールをオフにします###

systemctl disable firewalld.service
systemctl stop firewalld.service

etcdをデプロイする##

K8sの実行はetcdに依存しているため、etcdを最初にデプロイする必要があります。この記事では、yumを使用して以下をインストールします。

1 # yum install -y etcd

yumによってインストールされたetcdのデフォルト構成ファイルは / etc / etcd / etcd.confにあります。構成ファイルを編集して、次の情報を変更します。

ETCD_NAME=master
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"
ETCD_ADVERTISE_CLIENT_URLS="http://etcd:2379,http://etcd:4001"

開始してステータスを確認します

# systemctl start etcd
# systemctl enable etcd
# etcdctl set testdir/testkey0 00
# etcdctl get testdir/testkey0 
0
# etcdctl -C http://etcd:4001 cluster-health
member 8e9e05c52164694d is healthy: got healthy result from http://0.0.0.0:2379
cluster is healthy
# etcdctl -C http://etcd:2379 cluster-health
member 8e9e05c52164694d is healthy: got healthy result from http://0.0.0.0:2379
cluster is healthy

拡張機能:Etcdクラスターの展開を参照-[http://www.cnblogs.com/zhenyuyaodidiao/p/6237019.html](http://www.cnblogs.com/zhenyuyaodidiao/p/6237019.html)

マスターをデプロイする##

Docker ###をインストールします

1 [ root@k8s-master ~]# yum install -y docker

Docker構成ファイルを構成します####

レジストリから画像をプルできるようにします。次の行を追加します:OPTIONS = '– insecure-registry Registry:5000'

[ root@k8s-master ~]# vim /etc/sysconfig/docker

# /etc/sysconfig/docker

# Modify these options if you want to change the way the docker daemon runs
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'if[-z "${DOCKER_CERT_PATH}"]; then
 DOCKER_CERT_PATH=/etc/docker
fi

OPTIONS='--insecure-registry registry:5000'

アリババクラウドのドッカーアクセラレータを設定して使用する####

cp -n /lib/systemd/system/docker.service /etc/systemd/system/docker.service
sed -i "s|ExecStart=/usr/bin/dockerd-current|ExecStart=/usr/bin/dockerd-current --registry-mirror=<your accelerate address>|g"/etc/systemd/system/docker.service
systemctl daemon-reload
systemctl restart docker.service

自動的に開始するようにブートを設定し、サービスを開始します####

# systemctl enable docker.service
# systemctl restart docker.service

kubernetsをインストールします###

1 [ root@k8s-master ~]# yum install -y kubernetes

レジストリを構築して実行する###

docker pull registry:2

//レジストリデータの管理とバックアップを容易にするために、レジストリデータボリュームをローカルに関連付けます

docker run -d -p 5000:5000 --name registry -v /data/registry:/var/lib/registry registry:2

kubernetes ###を構成して開始します

次のコンポーネントは、kubernetesマスターで実行する必要があります。

それに応じて、次の構成で色情報を変更します。

/ etc / kubernetes / apiserverを変更します####

KUBE_API_ADDRESS=”–insecure-bind-address=0.0.0.0”

KUBE_API_PORT=”–port=8080”

KUBE_ETCD_SERVERS=”–etcd-servers=http://etcd:2379“

KUBE_ADMISSION_CONTROL=”–admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota”

/ etc / kubernetes / configを変更します####

1 KUBE_MASTER="–master=http://k8s-master:8080"

サービスを開始し、ブート自動開始を設定します####

# systemctl enable kube-apiserver.service
# systemctl start kube-apiserver.service
# systemctl enable kube-controller-manager.service
# systemctl start kube-controller-manager.service
# systemctl enable kube-scheduler.service
# systemctl start kube-scheduler.service

ノード##をデプロイします

docker ###をインストールします

マスターのドッカーのインストール手順を参照してください

kubernetsをインストールします###

マスターのkubernetsのインストール手順を参照してください

kubernetes ###を構成して開始します

次のコンポーネントは、kubernetesノードで実行する必要があります。

これに対応して、次の構成情報を変更する必要があります。

/ etc / kubernetes / config ####を変更します

1 KUBE_MASTER="–master=http://k8s-master:8080"

/ etc / kubernetes / kubelet ####を変更します

KUBELET_ADDRESS="–address=0.0.0.0"
KUBELET_HOSTNAME="–hostname-override=k8s-node-1"(2番目のステーションはk8を書き込む必要があることに注意してください-node-2)
KUBELET_API_SERVER="–api-servers=http://k8s-master:8080"

サービスを開始し、ブート自動開始を設定します####

systemctl enable kubelet.service

systemctl start kubelet.service

systemctl enable kube-proxy.service

systemctl start kube-proxy.service

ステータスの表示###

マスター上のクラスター内のノードとノードステータスを表示します

# kubectl -s http://k8s-master:8080get node
NAME         STATUS    AGE
k8s-node-1   Ready     3m
k8s-node-2   Ready     16s
# kubectl get nodes
NAME         STATUS    AGE
k8s-node-1   Ready     3m
k8s-node-2   Ready     43s

これまでに、kubernetesクラスターが構築されました。

オーバーレイネットワークの作成-フランネル##

フランネルをインストールする###

インストールするマスターとノードで次のコマンドを実行します

1 # yum install -y flannel

フランネルを構成する###

マスターとノードの両方で/ etc / sysconfig / flanneldを編集し、次の構成を変更します。

# etcd url location.  Point this to the server where etcd runs
FLANNEL_ETCD_ENDPOINTS="http://etcd:2379"

etcd ###でフランネルに関するキーを構成します

Flannelは、構成にEtcdを使用して、複数のFlannelインスタンス間の構成の一貫性を確保するため、etcdでは次の構成が必要です。

# etcdctl mk /atomic.io/network/config '{ "Network": "10.0.0.0/16" }'{"Network":"10.0.0.0/16"}

起動###

Flannelを起動した後、dockerとkuberneteを順番に再起動する必要があります。マスターで実行:

systemctl enable flanneld.service 
systemctl start flanneld.service 
service docker restart
systemctl restart kube-apiserver.service
systemctl restart kube-controller-manager.service
systemctl restart kube-scheduler.service

ノードで実行:

systemctl enable flanneld.service

systemctl start flanneld.service

service docker restart

systemctl restart kubelet.service

systemctl restart kube-proxy.service

フランネルネットワーク###

Flannelは、k8sで最も単純なネットワークと見なされています。ここでは、Flannelネットワークを理解するのに役立つ[記事](http://tonybai.com/2017/01/17/understanding-flannel-network-for-kubernetes/)を見つけることができます。

テスト##

# docker pull nginx #外部ネットワークレジストリからnginxミラーをプルします
# docker tag nginx registry:5000/nginx #ローカルミラーにタグを付ける
# docker push registry:5000/nginx #ローカルレジストリにプッシュ
# docker rmi registry:5000/nginx #ローカルミラーを削除する

cat << EOF >nginx.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
 name: nginx
spec:
 replicas:2
 template:
 metadata:
  labels:
  app: nginx
 spec:
  containers:- name: nginx
  image: registry:5000/nginx
  ports:- containerPort:80
  resources:
   requests:
   cpu: 400m
EOF
# kubectl create -f nginx.yaml #nginxを作成する-dpmtの展開

cat << EOF >nginx-svc.yaml
apiVersion: v1
kind: Service
metadata:
 name: nginx-svc
 labels:
 app: nginx-svc
spec:
 type: NodePort
 selector:
 app: nginx
 ports:- port:80
 targetPort:80
 nodePort:30088
EOF
# kubectl create -f nginx-svc.yaml #nginxを作成する-svcサービス
# kubectl describe service nginx-svc
Name:			nginx-svc
Namespace:default
Labels:			app=nginx-svc
Selector:		app=nginx
Type:			NodePort
IP:10.254.53.185
Port:<unset>80/TCP
NodePort:<unset>30088/TCP
Endpoints:10.0.19.2:80,10.0.4.2:80
Session Affinity:	None
No events.
# curl http://k8s-node-1:30088/ #nodePortを介してnginxサービスをテストします

テスト中に2つの問題が発生しました。

  1. ポッドサービスはContainerCreating状態になっています。後で、[ここ](http://www.voidcn.com/article/p-kpjywccp-bny.html)を参照し、rhsm関連のパッケージをインストールして解決してください。
  2. nginx-svc.yamlファイルの spec.selector.appの名前が、 nginx.yamlspec.template.metadata.labels.appと一致していないため、NodePortを介してサービスにアクセスできません。

参照##

  1. http://qinghua.github.io/kubernetes-deployment/
  2. http://wdxtub.com/2017/06/05/k8s-note/
  3. https://jimmysong.io/kubernetes-handbook/guide/accessing-kubernetes-pods-from-outside-of-the-cluster.html
  4. http://tonybai.com/2017/01/17/understanding-flannel-network-for-kubernetes/
  5. http://www.cnblogs.com/puroc/p/6297851.html
  6. https://kubernetes.io/docs/tasks/run-application/run-stateless-application-deployment/

Recommended Posts

CentOS7.3.1611はk8s1.5.2クラスターを展開します
CentOS7はk8sクラスターを展開します
Centos7はKubernetesクラスターを展開します
Centos7インストールk8sクラスター1.15.0バージョン
k8sプラクティス(1):Centos 7.6デプロイメントk8s(v1.14.2)クラスター
Centos7はHAproxyを展開してNginxクラスターを実装します
k8sプラクティス(15):Centos7.6はk8s v1.16.4高可用性クラスター(アクティブおよびスタンバイモード)を展開します
centos7でk8s1.9.9をビルドする
CentOS6インストールcouchdb2クラスター
CentOS7はRabbitMQサービスを展開します
CentOS6.8はzookeeperクラスターを展開します
Centos7ビルドKubernetesクラスター
Centos7mqttクラスターのインストール
CentOS7はNFSサービスを展開します
CentOSクラスター関連の問題
CentOS7環境でのKubernetes(k8s)クラスターの迅速な展開
Centos7.4デプロイメント構成Elasticsearch5.6クラスター
CentOS7インストールrabbitmqクラスター(バイナリ)
Centos7へのGlusterfsクラスターのインストール
CentOS 7 GaleraClusterインストールガイド
CentOSでのRedisクラスターのインストール
CentOSはハーバーミラーウェアハウスを展開します
CentOS7.7はk8をデプロイします(1マスター+ 2ノード)
CentOs7.3ビルドSolrCloudクラスターサービス
Centos7はpython3仮想環境を展開します
centos7でk8sクラスターをインストールおよび構成するための詳細な手順
CentOS7.7はk8をデプロイします(3マスター+3ノード+1クライアント)
CentOS7.7はk8s + Prometheus(1マスター+ 2ノード)を展開します
CentOS 8(2)
Centos6.9でのRabbitMQクラスター展開レコード
Centos7hadoopクラスターのインストールと構成
CentOS7でのElasticsearchクラスター展開レコード
k8sクラスターのバイナリインストール(1)-開始
CentOS 8(1)
CentOS8はKMSサービスを展開してOfficeをアクティブ化します
(1)クラスター環境を構築するためのCentos7のインストール
CentOS6でのRHCSクラスターの簡単な実践