실습
DaemonSet
kubectl get ds -Akubectl get pod -l 'k8s-app in (kube-proxy, aws-node)' -A -o wideeksctl scale nodegroup --cluster=mycluster --nodes=3 nodegroupkubectl get nodekubectl get pod -l 'k8s-app in (kube-proxy, aws-node)' -A -o wideeksctl scale nodegroup --cluster=mycluster --nodes=2 nodegroupkubectl get node
FluentBit
kubectl create ns loggingcat <<EOF | kubectl apply -f - apiVersion: v1 kind: ServiceAccount metadata: name: fluent-bit namespace: logging --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: fluent-bit-role rules: - apiGroups: [""] resources: - namespaces - pods verbs: ["get", "list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: fluent-bit-role-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: fluent-bit-role subjects: - kind: ServiceAccount name: fluent-bit namespace: logging EOFcat <<'EOF' | kubectl apply -f - apiVersion: v1 kind: ConfigMap metadata: name: fluent-bit namespace: logging data: fluent-bit.conf: | [SERVICE] Daemon Off Flush 1 Log_Level info Parsers_File /fluent-bit/etc/parsers.conf HTTP_Server On HTTP_Listen 0.0.0.0 HTTP_Port 2020 Health_Check On [INPUT] Name tail Path /var/log/containers/*.log multiline.parser docker, cri Tag kube.* Mem_Buf_Limit 5MB Skip_Long_Lines On [FILTER] Name kubernetes Match kube.* Merge_Log On Keep_Log Off K8S-Logging.Parser On K8S-Logging.Exclude On [OUTPUT] Name stdout Match kube.* EOFcat <<EOF | kubectl apply -f - apiVersion: apps/v1 kind: DaemonSet metadata: name: fluent-bit namespace: logging labels: app: fluent-bit spec: selector: matchLabels: app: fluent-bit template: metadata: labels: app: fluent-bit spec: containers: - name: fluent-bit image: cr.fluentbit.io/fluent/fluent-bit command: - /fluent-bit/bin/fluent-bit args: - --workdir=/fluent-bit/etc - --config=/fluent-bit/etc/conf/fluent-bit.conf volumeMounts: - mountPath: /fluent-bit/etc/conf name: config - mountPath: /var/log name: varlog volumes: - name: config configMap: defaultMode: 420 name: fluent-bit - name: varlog hostPath: path: /var/log serviceAccountName: fluent-bit EOFkubectl get pods -n loggingkubectl -n logging logs ds/fluent-bitkubectl create deploy nginx --image=nginx --replicas=3kubectl logs deploy/nginxkubectl -n logging logs ds/fluent-bit | grep nginxkubectl get pod --show-labelscat <<'EOF' | kubectl apply -f - apiVersion: v1 kind: ConfigMap metadata: name: fluent-bit namespace: logging data: fluent-bit.conf: | [SERVICE] Daemon Off Flush 1 Log_Level info Parsers_File /fluent-bit/etc/parsers.conf HTTP_Server On HTTP_Listen 0.0.0.0 HTTP_Port 2020 Health_Check On [INPUT] Name tail Path /var/log/containers/*_default_*.log multiline.parser docker, cri Tag kube.* Mem_Buf_Limit 5MB Skip_Long_Lines On [FILTER] Name kubernetes Match kube.* Merge_Log On Keep_Log Off K8S-Logging.Parser On K8S-Logging.Exclude On [OUTPUT] Name cloudwatch_logs Match kube.* region ap-northeast-2 auto_create_group On log_group_name /app/log/mycluster log_stream_prefix no-label-pods log_group_template /app/log/$kubernetes['labels']['app'] log_stream_template $kubernetes['pod_name'].$kubernetes['container_name'] EOFkubectl delete pod -n logging -l app=fluent-bitkubectl get pods -n loggingkubectl -n logging logs ds/fluent-bit{ kubectl expose deploy nginx --port 80 kubectl run load-generator --image=busybox:1.28 -l app=load-generator -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://nginx; done" }kubectl -n logging logs ds/fluent-bit{ export CLUSTER_NAME=$(kubectl get node \ -o=jsonpath='{.items[0].metadata.labels.alpha\.eksctl\.io\/cluster-name}') eksctl utils associate-iam-oidc-provider \ --cluster=$CLUSTER_NAME \ --approve \ --region $AWS_REGION eksctl create iamserviceaccount \ --cluster=$CLUSTER_NAME \ --namespace=logging \ --name=fluent-bit \ --attach-policy-arn=arn:aws:iam::aws:policy/CloudWatchLogsFullAccess \ --override-existing-serviceaccounts \ --approve \ --region $AWS_REGION }kubectl -n logging get sa fluent-bit -o yamlkubectl delete pod -n logging -l app=fluent-bitkubectl get pods -n loggingkubectl -n logging logs ds/fluent-bitkubectl -n logging get pod -l app=fluent-bit -o yamlcat <<'EOF' | kubectl apply -f - apiVersion: v1 kind: ConfigMap metadata: name: fluent-bit namespace: logging data: fluent-bit.conf: | [SERVICE] Daemon Off Flush 1 Log_Level info Parsers_File /fluent-bit/etc/parsers.conf HTTP_Server On HTTP_Listen 0.0.0.0 HTTP_Port 2020 Health_Check On [INPUT] Name tail Path /var/log/containers/*_default_*.log multiline.parser docker, cri Tag kube.* Mem_Buf_Limit 5MB Skip_Long_Lines On [FILTER] Name kubernetes Match kube.* Merge_Log On Keep_Log Off K8S-Logging.Parser On K8S-Logging.Exclude On [OUTPUT] Name cloudwatch_logs Match kube.* region ${AWS_REGION} auto_create_group On log_group_name /app/log/mycluster log_stream_prefix no-label-pods log_group_template /app/log/$kubernetes['labels']['app'] log_stream_template $kubernetes['pod_name'].$kubernetes['container_name'] EOFkubectl delete pod -n logging -l app=fluent-bitaws logs describe-log-groups --log-group-name-prefix /app/logaws logs describe-log-streams \ --log-group-name /app/log/nginx{ export LOG_STREAM=$(aws logs describe-log-streams \ --log-group-name /app/log/nginx \ --query 'logStreams[0].logStreamName' --output text) echo $LOG_STREAM }aws logs get-log-events \ --log-group-name /app/log/nginx \ --log-stream-name $LOG_STREAM --query 'events[*].message'{ kubectl create deploy httpd --image=httpd kubectl expose deploy httpd --port 80 kubectl run load-generator-2 --image=busybox:1.28 -l app=load-generator -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://httpd; done" }aws logs describe-log-groups --log-group-name-prefix /app/log{ export LOG_STREAM=$(aws logs describe-log-streams \ --log-group-name /app/log/httpd \ --query 'logStreams[0].logStreamName' --output text) aws logs get-log-events \ --log-group-name /app/log/httpd \ --log-stream-name $LOG_STREAM --query 'events[*].message' }{ kubectl delete pod -l app=load-generator kubectl delete deploy nginx httpd kubectl delete clusterrole fluent-bit-role kubectl delete clusterrolebinding fluent-bit-role-binding eksctl delete iamserviceaccount \ --cluster=$CLUSTER_NAME \ --namespace=logging \ --name=fluent-bit \ --region $AWS_REGION kubectl delete ns logging aws logs delete-log-group --log-group-name /app/log/nginx aws logs delete-log-group --log-group-name /app/log/httpd aws logs delete-log-group --log-group-name /app/log/load-generator }
Node Exporter
Last updated