Kubernetesレコード
22086 ワード
環境7台の仮想マシン、3 master 3 node、1台はDockerプライベートライブラリとして VIP 192.168.11.222
master 192.168.11.31 192.168.11.32 192.168.11.33
node 192.168.11.34 192.168.11.35 192.168.11.36
Harbor registry 192.168.11.200
システム構成 SSHを起動し、起動 から起動する.ファイアウォールとselinux を閉じる swap を閉じるシステムルーティングパラメータを構成し、kubeadmがルーティング警告 を報告することを防止する.ノード名 を変更修正/etc/hostsファイル 無鍵登録 を構成する.
ポイントごとに実行
keepalivedのインストール(masterノードのみ)
インストール
プロファイル/etc/keepalived/keepalivedを変更します.conf
バックアップ後の各ノードの変更
順次起動
対応するIP構成を変更して起動すると、2つのノードがBACKUP STATEであることがわかるはずです
インストールディレクトリを作成し、準備したファイルをこのパスにコピーし、次にインストールするのはインストールディレクトリ内のファイルを基準にします.
Etcd httpsのインストール(masterノードのみ) k 8 s 1実行 k 8 s 2実行 k 8 s 3実行
Etcd証明書 CA証明書と鍵 を作成する
cfssl、CloudFlareのPKIツールセットcfsslをインストールしてCertificate Authority(CA)証明書と鍵ファイルを生成します.cfsslツールをデプロイホストにインストールしない場合は、他のホストでこの手順を行い、証明書をetcdをデプロイするホストにコピーするように生成します. ETCDのTLS鍵と証明書 を生成する
ca-config.json:複数のprofilesを定義し、それぞれ異なる期限切れ時間、シーンの使用などのパラメータを指定できます.その後、証明書に署名するときにprofileを使用します.Signing:この証明書が他の証明書に署名するために使用できることを示します.生成されたca.pem証明書のCA=TRUE;server auth:clientがこのCAでserverが提供した証明書を検証できることを示します.Client auth:serverがこのCAでclientが提供した証明書を検証できることを示します.
通信の安全を保証するために、クライアント(etcdctlなど)とetcdクラスタ、etcdクラスタとの間の通信はTLS暗号化を使用する必要があります.このセクションでは、etcd TLS暗号化に必要な証明書と秘密鍵を作成します.CAプロファイルの作成:
「CN」:Common Name、kube-apiserverは、証明書からこのフィールドを要求されたユーザー名として抽出します(User Name).ブラウザはこのフィールドを使用して、Webサイトが合法であるかどうかを検証します.「O」:Organization,kube-apiserverは証明書からこのフィールドを要求ユーザが属するグループ(Group)として抽出する. CA証明書と秘密鍵の生成: etcd証明書署名要求の作成:
hosts:証明書の使用を許可するetcdノードIPを指定します.各ノードのIPはすべて中あるいはすべての機械が1つの対応するIPの証明書を申請しなければならなくて、ここですべてのIPを配置して入ってくることを選択します etcd証明書および秘密鍵の生成:
次に、ファイルを他のmasterノードにコピーする必要があります.
3つのポイントを一緒に実行
etcdのsystemd unitファイルを作成する etcdの作業ディレクトリとデータディレクトリを/var/lib/etcdと指定し、サービスを開始する前にこのディレクトリを作成する必要があります. 通信セキュリティを保証するために、etcdの公開鍵(cert-fileとkey-file)、Peers通信の公開鍵とCA証明書>(peer-cert-file、peer-key-file、peer-trusted-ca-file)、クライアントのCA証明書(trusted-ca-file)を指定する必要がある. --initial-cluster-state値がnewの場合、--nameのパラメータ値は--initial-clusterリストにある必要があります. etcdサービス を開始認証サービス
Dockerのインストール
クbelet、クbectl、クbeadm、クbecniのインストール
k 8 sディレクトリに切り替え、プライマリスレーブノードが同時に実行され、ノードからkubeadmをインストールする必要があり、後で
すべてのmasterノードに
VIPのあるマスターノードで次のコマンドを実行します.
他のマスターノードで実行
起動後、VIPが存在するマスターノードの構成を他のマスターにコピーします.
nodeノードで実行するには、次の手順に従います.
クラスタのユーザー名パスワードの追加
デフォルトの検証方式にはkubeconfigとtokenがありますが、ここではbasicauth方式でapiserverの検証を行います.
編集/etc/kubernetes/manifests/kube-apiserver.yaml、kube-apiserverにbasic_を追加auth検証
クbeletを再起動し、再起動しなければ adminライセンス デフォルトのcluster-adminはすべての権限を持っており、adminとcluster-admin bindにはcluster-adminの権限があります.
k 8 s注意点: The connection to the server 192.168.11.160:6443 was refused - did you specify the right host or port? ログを表示するコマンド 共通コマンド Harborのインストールと構成
Harborのインストールにはdocker-composeが必要です.docker-composeはpipでインストールできます.
pipとdocker-composeのインストール
centos 7下
harborのインストール
Harbor v 1をダウンロードします.6.0,harbor.を修正するcfgは
K 8 Sアプリケーションログ収集——EFK(Elasticsearch/Fileebeat/Kibana)
システム環境 3台の仮想マシン、1つのmaster 2つのnode master 192.168.11.218 k8s-master1-test
node 192.168.11.219 k8s-node1-test 192.168.11.221 k8s-node2-test
その他 3台の機器はすべてjdk 1を取り付ける.8,elasticsearchはjavaが開発した であるため 3台全取付elasticsearch 192.168.11.218をプライマリノードとする 192.168.11.219および192.168.11.221は、データノード として機能する.メインノード192.168.11.218にkibana をインストールする必要がある.
ELKバージョン情報: Elasticsearch-6.0.0 kibana-6.0.0 filebeat-5.4.0
インストールes
構成es
Elasticsearchプロファイルはこの2つの場所にあり、2つのプロファイルがあります./etc/elasticsearch/elasticsearch.yml /etc/sysconfig/elasticsearch
elasticsearch.ymlファイルはクラスタノードなどの関連情報を構成するために使用され、elasticsearchファイルは、あるプロファイルのパスやjavaのいくつかのパス構成など、サービス自体を構成する構成です.
192.168.77.128でプロファイルを編集します.
残りの2つのノードは同じようにプロファイルを編集します.
インストール完了起動:
curlはesクラスタの状況を表示します.
クラスタの詳細を表示するには、次の手順に従います.
kibanaのインストール
kibanaの構成
編集
開始:
ブラウザへのアクセスは常用:
ログ収集
filebeatミラーを作成するには:
まずfilebeat-5.4.0-linux-x 86を用意します.64.tar.gz docker-entrypoint.sh dockerfile build dockerミラー
k 8 s Secretとライブラリ認証の構成
このように、podで定義されたミラーがプライベートライブラリのプライベートミラーを引き出す必要がある場合は、
Deployment構成
参照先: kubeadmクイック配備kubernetes(HA) [K 8 s 1.9実践]Kubeadm 1.9 HA高可用性クラスタローカルオフラインミラー配置 k 8 s(一)、1.9.0高可用性クラスタローカルオフライン配置記録 Harborの構築(vmwareエンタープライズクラスdockerミラー私服) ELKログ分析プラットフォーム(上)——ELK紹介及びElasticsearch分布式クラスタ の構築 ELKログ分析プラットフォームを構築する(下)——kibanaとlogstashサーバー を構築する K 8 S filebeatを使用してアプリケーションログ を統一的に収集アプリケーションログ収集・Kubernetes Handbook-Kubernetes中国語ガイド
システム構成
service sshd start
systemctl enable sshd.service
systemctl stop firewalld && systemctl disable firewalld
vim /etc/selinux/config
SELINUX=disabled
setenforce 0
getenforce
swapoff -a && sed -i '/swap/d' /etc/fstab
echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
cat /etc/sysctl.conf
sysctl -p
hostnamectl set-hostname k8s1
hostnamectl set-hostname k8s2
hostnamectl set-hostname k8s3
hostnamectl set-hostname k8s4
hostnamectl set-hostname k8s5
hostnamectl set-hostname k8s6
hostnamectl set-hostname k8s-deploy
192.168.11.31 k8s1
192.168.11.32 k8s2
192.168.11.33 k8s3
192.168.11.34 k8s4
192.168.11.35 k8s5
192.168.11.36 k8s6
192.168.11.200 k8s-deploy
192.30.253.113 github.com
192.30.252.131 github.com
185.31.16.185 github.global.ssl.fastly.net
74.125.237.1 dl-ssl.google.com
173.194.127.200 groups.google.com
192.30.252.131 github.com
185.31.16.185 github.global.ssl.fastly.net
74.125.128.95 ajax.googleapis.com
ポイントごとに実行
ssh-keygen
ssh-copy-id k8s1
ssh-copy-id k8s2
ssh-copy-id k8s3
ssh-copy-id k8s4
ssh-copy-id k8s5
ssh-copy-id k8s6
ssh-copy-id k8s-deploy
keepalivedのインストール(masterノードのみ)
インストール
yum install -y keepalived
プロファイル/etc/keepalived/keepalivedを変更します.conf
バックアップ後の各ノードの変更
global_defs {
router_id LVS_k8s
}
vrrp_script CheckK8sMaster {
script "curl -k https://192.168.11.222:6443" //VIP IP
interval 3
timeout 9
fall 2
rise 2
}
vrrp_instance VI_1 {
state MASTER
interface eno16777736 //ifconfig IP ,
virtual_router_id 61
priority 120
advert_int 1
mcast_src_ip 192.168.11.31 // IP
nopreempt
authentication {
auth_type PASS
auth_pass sqP05dQgMSlzrxHj
}
unicast_peer {
#192.168.11.31 //master ,
192.168.11.32
192.168.11.33
}
virtual_ipaddress {
192.168.11.222/24 //VIP IP
}
track_script {
CheckK8sMaster
}
}
順次起動
systemctl enable keepalived && systemctl restart keepalived
systemctl status keepalived
対応するIP構成を変更して起動すると、2つのノードがBACKUP STATEであることがわかるはずです
インストールディレクトリを作成し、準備したファイルをこのパスにコピーし、次にインストールするのはインストールディレクトリ内のファイルを基準にします.
Etcd httpsのインストール(masterノードのみ)
export NODE_NAME=k8s1
export NODE_IP=192.168.11.31
export NODE_IPS="192.168.11.31 192.168.11.32 192.168.11.33"
export ETCD_NODES=k8s1=https://192.168.11.31:2380,k8s2=https://192.168.11.32:2380,k8s3=https://192.168.11.33:2380
export NODE_NAME=k8s2
export NODE_IP=192.168.11.32
export NODE_IPS="192.168.11.31 192.168.11.32 192.168.11.33"
export ETCD_NODES=k8s1=https://192.168.11.31:2380,k8s2=https://192.168.11.32:2380,k8s3=https://192.168.11.33:2380
export NODE_NAME=k8s3
export NODE_IP=192.168.11.33
export NODE_IPS="192.168.11.31 192.168.11.32 192.168.11.33"
export ETCD_NODES=k8s1=https://192.168.11.31:2380,k8s2=https://192.168.11.32:2380,k8s3=https://192.168.11.33:2380
Etcd証明書
cfssl、CloudFlareのPKIツールセットcfsslをインストールしてCertificate Authority(CA)証明書と鍵ファイルを生成します.cfsslツールをデプロイホストにインストールしない場合は、他のホストでこの手順を行い、証明書をetcdをデプロイするホストにコピーするように生成します.
chmod +x cfssl_linux-amd64
mv cfssl_linux-amd64 /usr/local/bin/cfssl
chmod +x cfssljson_linux-amd64
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
chmod +x cfssl-certinfo_linux-amd64
mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo
ca-config.json:複数のprofilesを定義し、それぞれ異なる期限切れ時間、シーンの使用などのパラメータを指定できます.その後、証明書に署名するときにprofileを使用します.Signing:この証明書が他の証明書に署名するために使用できることを示します.生成されたca.pem証明書のCA=TRUE;server auth:clientがこのCAでserverが提供した証明書を検証できることを示します.Client auth:serverがこのCAでclientが提供した証明書を検証できることを示します.
通信の安全を保証するために、クライアント(etcdctlなど)とetcdクラスタ、etcdクラスタとの間の通信はTLS暗号化を使用する必要があります.このセクションでは、etcd TLS暗号化に必要な証明書と秘密鍵を作成します.CAプロファイルの作成:
cat > ca-config.json <
cat > ca-csr.json <
「CN」:Common Name、kube-apiserverは、証明書からこのフィールドを要求されたユーザー名として抽出します(User Name).ブラウザはこのフィールドを使用して、Webサイトが合法であるかどうかを検証します.「O」:Organization,kube-apiserverは証明書からこのフィールドを要求ユーザが属するグループ(Group)として抽出する.
cfssl gencert -initca ca-csr.json | cfssljson -bare ca
ls ca*
cat > etcd-csr.json <
hosts:証明書の使用を許可するetcdノードIPを指定します.各ノードのIPはすべて中あるいはすべての機械が1つの対応するIPの証明書を申請しなければならなくて、ここですべてのIPを配置して入ってくることを選択します
cfssl gencert -ca=ca.pem \
-ca-key=ca-key.pem \
-config=ca-config.json \
-profile=kubernetes etcd-csr.json | cfssljson -bare etcd
mkdir -p /etc/etcd/ssl
cp etcd.pem etcd-key.pem ca.pem /etc/etcd/ssl/
次に、ファイルを他のmasterノードにコピーする必要があります.
# ,
rm -rf /etc/etcd/ssl/*
scp -r /etc/etcd/ssl/ 192.168.11.31:/etc/etcd/
scp -r /etc/etcd/ssl/ 192.168.11.32:/etc/etcd/
3つのポイントを一緒に実行
cd /root/install
tar -xvf etcd-v3.1.10-linux-amd64.tar.gz
mv etcd-v3.1.10-linux-amd64/etcd* /usr/local/bin
etcdのsystemd unitファイルを作成する
mkdir -p /var/lib/etcd
cd /var/lib/etcd
cat > etcd.service <
mv etcd.service /etc/systemd/system/
systemctl daemon-reload && systemctl enable etcd && systemctl start etcd && systemctl status etcd
#
systemctl status etcd.service
journalctl -xe
etcdctl \
--endpoints=https://${NODE_IP}:2379 \
--ca-file=/etc/etcd/ssl/ca.pem \
--cert-file=/etc/etcd/ssl/etcd.pem \
--key-file=/etc/etcd/ssl/etcd-key.pem \
cluster-health
Dockerのインストール
# docker , docker
cd /root/install
yum -y remove docker docker-common
cd docker
yum -y localinstall docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
yum -y localinstall docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm
# docker
systemctl start docker && systemctl enable docker
#
docker ps
# 、 , /etc/docker/daemon.json ( docker )
{
"max-concurrent-downloads": 3,
"max-concurrent-uploads": 5,
"registry-mirrors": ["https://7bezldxe.mirror.aliyuncs.com/"],
"insecure-registries": ["192.168.11.200","192.168.11.218","192.168.11.188","192.168.11.230","192.168.11.112"]
}
クbelet、クbectl、クbeadm、クbecniのインストール
k 8 sディレクトリに切り替え、プライマリスレーブノードが同時に実行され、ノードからkubeadmをインストールする必要があり、後で
kubeadm join
でk 8 sクラスタに参加することができます.cd ../k8s
yum -y install *.rpm
vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
#Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs"
systemctl enable docker && systemctl restart docker
systemctl daemon-reload && systemctl restart kubelet
# docker_images
cd ../docker_images
for i in `ls`;do docker load -i $i;done
すべてのmasterノードに
config.yaml
ファイルを作成cat < config.yaml
apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
etcd:
endpoints:
- https://192.168.11.31:2379
- https://192.168.11.32:2379
- https://192.168.11.33:2379
caFile: /etc/etcd/ssl/ca.pem
certFile: /etc/etcd/ssl/etcd.pem
keyFile: /etc/etcd/ssl/etcd-key.pem
dataDir: /var/lib/etcd
networking:
podSubnet: 10.244.0.0/16
kubernetesVersion: 1.9.0
api:
advertiseAddress: "192.168.11.222"
token: "b99a00.a144ef80536d4344"
tokenTTL: "0s"
apiServerCertSANs:
- "k8s1"
- "k8s2"
- "k8s3"
- 192.168.11.31
- 192.168.11.32
- 192.168.11.33
- 192.168.11.222
featureGates:
CoreDNS: true
EOF
VIPのあるマスターノードで次のコマンドを実行します.
kubeadm init --config config.yaml
# join
kubeadm join --token b99a00.a144ef80536d4344 192.168.11.222:6443 --discovery-token-ca-cert-hash sha256:cf68966ae386e10c0233e008f21597d1d54a60ea9202d0c360a4b19fa8443328
kubectl apply -f kubeadm-kuberouter.yaml
kubectl get pod --all-namespaces
他のマスターノードで実行
systemctl enable kubelet && systemctl start kubelet
起動後、VIPが存在するマスターノードの構成を他のマスターにコピーします.
# mkdir /etc/kubernetes/pki/
scp /etc/kubernetes/pki/* 192.168.11.31:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/* 192.168.11.32:/etc/kubernetes/pki/
# systemctl status kubelet activating (auto-restart), , init
kubeadm init --config config.yaml #
# master pod( )
kubectl taint nodes --all node-role.kubernetes.io/master-
# master pod( )
kubectl taint nodes centos-master-1 node-role.kubernetes.io/master=true:NoSchedule
#
kubectl get nodes
kubectl get cs
kubectl get pods --all-namespaces
nodeノードで実行するには、次の手順に従います.
kubeadm join --token b99a00.a144ef80536d4344 192.168.11.222:6443 --discovery-token-ca-cert-hash sha256:cf68966ae386e10c0233e008f21597d1d54a60ea9202d0c360a4b19fa8443328
クラスタのユーザー名パスワードの追加
デフォルトの検証方式にはkubeconfigとtokenがありますが、ここではbasicauth方式でapiserverの検証を行います.
# /etc/kubernetes/pki/basic_auth_file
#user,password,userid
admin,admin,2
編集/etc/kubernetes/manifests/kube-apiserver.yaml、kube-apiserverにbasic_を追加auth検証
- --basic_auth_file=/etc/kubernetes/pki/basic_auth_file
クbeletを再起動し、再起動しなければ
The connection to the server 192.168.11.223:6443 was refused - did you specify the right host or port?
に報告しますsystemctl daemon-reload && systemctl restart kubelet.service
kubectl get clusterrole/cluster-admin -o yaml
kubectl create clusterrolebinding login-on-dashboard-with-cluster-admin --clusterrole=cluster-admin --user=admin
kubectl get clusterrolebinding/login-on-dashboard-with-cluster-admin -o yaml
k 8 s注意点:
# Active: inactive (dead)
systemctl status kubelet
systemctl daemon-reload && systemctl restart kubelet
kubectl logs kube-apiserver --namespace=kube-system
kubectl get componentstatuses // node
kubectl get svc -n kube-system //
kubectl cluster-info //
kubectl describe --namespace kube-system service kubernetes-dashboard //
kubectl apply -f kube-apiserver.yaml // kube-apiserver
kubectl delete -f /root/k8s/k8s_images/kubernetes-dashboard.yaml //
kubectl delete service example-server //
systemctl start kube-apiserver.service // 。
kubectl get deployment --all-namespaces //
kubectl get pod -o wide --all-namespaces // pod
kubectl get pod -o wide -n kube-system // node
kubectl describe pod --namespace=kube-system // pod
kubectl describe depoly kubernetes-dashboard -n kube-system
kubectl get depoly kubernetes-dashboard -n kube-system -o yaml
kubectl get service kubernetes-dashboard -n kube-system //
kubectl delete -f kubernetes-dashboard.yaml //
kubectl get events //
kubectl get rc/kubectl get svc
kubectl get namespace // namespace
find -type f -print -exec grep hello {} \;
kubeadm reset
netstat -lutpn | grep 6443
Harborのインストールにはdocker-composeが必要です.docker-composeはpipでインストールできます.
pipとdocker-composeのインストール
# pip , pip
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
# docker-compose
pip install -U docker-compose
centos 7下
pip install docker-compose
インストールdocker-compose下エラー:Cannot uninstall'requests.It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall. 解決策:pip install docker-compose--ignore-installed requestsharborのインストール
Harbor v 1をダウンロードします.6.0,harbor.を修正するcfgは
hostname = 192.168.11.200
を使用し、harborディレクトリで./install.sh
を実行してインストールを完了します.# harbor
docker-compose ps
# / / harbor
docker-compose start/stop/restart
K 8 Sアプリケーションログ収集——EFK(Elasticsearch/Fileebeat/Kibana)
システム環境
インストールes
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.rpm
rpm -ivh elasticsearch-6.0.0.rpm
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
### You can start elasticsearch service by executing
sudo systemctl start elasticsearch.service
構成es
Elasticsearchプロファイルはこの2つの場所にあり、2つのプロファイルがあります.
elasticsearch.ymlファイルはクラスタノードなどの関連情報を構成するために使用され、elasticsearchファイルは、あるプロファイルのパスやjavaのいくつかのパス構成など、サービス自体を構成する構成です.
192.168.77.128でプロファイルを編集します.
cluster.name: es-master-node #
node.name: k8s-master1-test #
node.master: true #
node.data: false #
network.host: 0.0.0.0 # ip, ip
http.port: 9200 # es
discovery.zen.ping.unicast.hosts: ["192.168.11.218", "192.168.11.219", "192.168.11.221"] #
残りの2つのノードは同じようにプロファイルを編集します.
cluster.name: es-master-node #
node.name: k8s-node1-test #
node.master: false #
node.data: true #
network.host: 0.0.0.0 # ip, ip
http.port: 9200 # es
discovery.zen.ping.unicast.hosts: ["192.168.11.218", "192.168.11.219", "192.168.11.221"] #
インストール完了起動:
systemctl start elasticsearch.service
curlはesクラスタの状況を表示します.
curl 'localhost:9200/_cluster/health?pretty'
#
{
"cluster_name" : "es-master-node",
"status" : "yellow",
"timed_out" : false,
"number_of_nodes" : 2,
"number_of_data_nodes" : 1,
"active_primary_shards" : 1,
"active_shards" : 1,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 1,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 50.0
}
クラスタの詳細を表示するには、次の手順に従います.
curl '192.168.11.218:9200/_cluster/state?pretty'
kibanaのインストール
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-x86_64.rpm
rpm -ivh kibana-6.0.0-x86_64.rpm
kibanaの構成
編集
vim /etc/kibana/kibana.yml
以下を追加server.port: 5601 # kibana
server.host: 192.168.11.218 # ip
elasticsearch.url: "http://192.168.11.218:9200" # es ip, ip
logging.dest: /var/log/kibana.log # kibana , messages
開始:
systemctl start kibana
ブラウザへのアクセスは
http://192.168.11.218:5601/
でよい# es :
curl '192.168.11.218:9200/_cat/indices?v'
# :
curl -XGET '192.168.77.128:9200/system-syslog-2018.03?pretty'
# , :
curl -XDELETE 'localhost:9200/logcollection-test'
ログ収集
filebeatミラーを作成するには:
まずfilebeat-5.4.0-linux-x 86を用意します.64.tar.gz
#!/bin/bash
config=/etc/filebeat/filebeat.yml
env
echo 'Filebeat init process done. Ready for start up.'
echo "Using the following configuration:"
cat /etc/filebeat/filebeat.yml
exec "$@"
FROM centos
MAINTAINER YangLiangWei
# Install Filebeat
WORKDIR /usr/local
COPY filebeat-5.4.0-linux-x86_64.tar.gz /usr/local
RUN cd /usr/local && \
tar xvf filebeat-5.4.0-linux-x86_64.tar.gz && \
rm -f filebeat-5.4.0-linux-x86_64.tar.gz && \
ln -s /usr/local/filebeat-5.4.0-linux-x86_64 /usr/local/filebeat && \
chmod +x /usr/local/filebeat/filebeat && \
mkdir -p /etc/filebeat
ADD ./docker-entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/docker-entrypoint.sh
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["/usr/local/filebeat/filebeat","-e","-c","/etc/filebeat/filebeat.yml"]
docker build -t filebeat:v5.4.0
docker tag filebeat:v5.4.0 192.168.11.218/hlg_web/filebeat:v5.4.0
k 8 s Secretとライブラリ認証の構成
# .dockerconfigjson login cat /root/.docker/config.json | base64 -w 0
kind: Secret
apiVersion: v1
metadata:
name: regsecret
type: kubernetes.io/dockerconfigjson
data:
".dockerconfigjson": ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjExLjIxOCI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0KfQ==
このように、podで定義されたミラーがプライベートライブラリのプライベートミラーを引き出す必要がある場合は、
imagePullSecrets
フィールドを追加すればよい. containers:
- image: 192.168.11.200/hlg_web/datalower:1.1
name: app
ports:
- containerPort: 80
volumeMounts:
- name: app-logs
mountPath: /app/log
- image: 192.168.11.200/hlg_web/filebeat:v5.4.0
name: filebeat
volumeMounts:
- name: app-logs
mountPath: /log
- name: filebeat-config
mountPath: /etc/filebeat/
volumes:
- name: app-logs
emptyDir: {}
- name: filebeat-config
configMap:
name: filebeat-config
imagePullSecrets:
- name: regsecret
Deployment構成
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: logcollection-test
namespace: default
spec:
replicas: 1
template:
metadata:
labels:
run: logcollection-test
spec:
containers:
- image: 192.168.11.200/hlg_web/datalower:1.1
name: app
ports:
- containerPort: 80
volumeMounts:
- name: app-logs
mountPath: /app/log
- image: 192.168.11.200/hlg_web/filebeat:v5.4.0
name: filebeat
volumeMounts:
- name: app-logs
mountPath: /log
- name: filebeat-config
mountPath: /etc/filebeat/
volumes:
- name: app-logs
emptyDir: {}
- name: filebeat-config
configMap:
name: filebeat-config
---
apiVersion: v1
kind: ConfigMap
metadata:
name: filebeat-config
data:
filebeat.yml: |
filebeat.prospectors:
- input_type: log
paths:
- "/log/*"
output.elasticsearch:
hosts: ["192.168.11.218:9200"]
index: "logcollection-test"
参照先: