運用保守エンジニアインタビュー概要
元のリンク: https://www.cuiliangblog.cn/detail/article/2
1、Linux
1. Linuxシステムの起動プロセス
- ステップ 1: POST、BIOS のロード
- ステップ 2: MBR を読み取る
- ステップ 3: ブートローダーの grub ブート メニュー
- ステップ 4: カーネルをロードする
- ステップ 5: init プロセスは、inittab フォルダーに従って実行レベルを設定します。
- ステップ 6: init プロセスが rc.sysinit を実行する
- ステップ 7: カーネルモジュールを開始する
- ステップ 8: さまざまな実行レベルでスクリプト プログラムを実行する
- ステップ 9: /etc/rc.d/rc.lo を実行する
2. Linux ファイルの種類
ファイル属性 | ファイルの種類 |
---|---|
- | 通常のファイル、つまりファイル |
d | ディレクトリファイル |
b | ブロックデバイスはハードディスクなどのブロックデバイスファイルで、ブロック単位のランダムアクセスをサポートします。 |
c | キャラクタデバイスは、文字単位での線形アクセスをサポートするキーボードなどのキャラクタデバイスファイルです。 |
私 | シンボリック リンクはシンボリック リンク ファイルであり、ソフト リンク ファイルとも呼ばれます。 |
p | パイプ 名前付きパイプ ファイル |
s | Socket は 2 つのプロセス間の通信に使用されるソケット ファイルです。 |
3. centos6 および 7 では、ソース コードからインストールされたプログラムをブート セルフスタートにどのように追加しますか?
- 一般的な方法: /etc/rc.d/rc.local ファイルを編集し、ファイルの最後にサービス開始コマンドを追加します。
- centos6: ①/etc/rc.d/init.dディレクトリに入る、②新規サービス起動スクリプトを作成、スクリプト内にchkconfigパラメータを指定、③実行権限を追加、④chkconfig --addを実行して自動起動するサービスを追加
- centos7: ① /usr/lib/systemd/system ディレクトリに移動します。 ② [ユニット] [サービス] [インストール] 関連の設定を含む新しいカスタム サービス ファイルを作成し、実行権限を追加します。 ③ systemctl Enable サービス名を実行します。
4. lvm について簡単に説明します。lvm を使用して / パーティションを拡張するにはどうすればよいですか?
- 機能: ディスクを動的に管理できます。オンデマンドで動的にサイズ変更
- コンセプト:
①PV - 物理ボリューム: 物理ボリュームは論理ボリューム管理の最下位にあり、実際の物理ハードディスク上のパーティション、物理ハードディスク全体、または RAID デバイスになります。
②VG - ボリューム グループ: ボリューム グループは物理ボリューム上に確立され、ボリューム グループには少なくとも 1 つの物理ボリュームが含まれている必要があり、ボリューム グループが確立された後、物理ボリュームをボリューム グループに動的に追加できます。論理ボリューム管理システム プロジェクトは、1 つのボリューム グループのみを持つことも、複数のボリューム グループを持つこともできます。
③LV - 論理ボリューム: 論理ボリュームはボリュームグループ上に構築され、ボリュームグループ内の未割り当て領域を使用して新しい論理ボリュームを作成でき、論理ボリューム作成後に領域を動的に拡張および縮小できます。システム内の複数の論理ボリュームは、同じボリューム グループまたは異なるボリューム グループに属することができます。
- / パーティションを拡張する手順:
①ディスク
を追加します。 ② fdisk コマンドを使用して、新しく追加したディスクに
パーティションを作成します。 ③ パーティションの作成が完了したら、パーティション タイプを lvm に変更します。
④ pvcreate を使用して物理ボリュームを作成します。 ⑤
vgextend コマンドを使用して、新しく追加したパーティションをルート ディレクトリ パーティションに追加します。 ⑥
lvextend コマンドを使用して容量を拡張します。
⑦ xfs_growfs を使用してボリュームのパーティション サイズを調整します。
5. du と df の統計結果が一致しないのはなぜですか?
- ユーザーによって削除された多数のファイルは、削除されるとファイル システム ディレクトリに表示されなくなるため、du はそれらのファイルを再度カウントしません。
- ただし、この時点で削除されたファイル ハンドルを保持している実行中のプロセスがまだある場合、ファイルはディスクから削除されず、パーティション スーパーブロック内の情報は変更されず、df は引き続き削除されたファイルをカウントします。
- lsof コマンドを使用して、削除された状態のファイルを照会できます。削除されたファイルは、システム内で削除済みとしてマークされます。システムに多数の削除されたファイルがある場合、du と df の統計結果は矛盾します。
6. カーネルをアップグレードするにはどうすればよいですか?
- 方法 1
# 添加第三方yum源进行下载安装。
Centos 6 YUM源:http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
Centos 7 YUM源:http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
# 先导入elrepo的key,然后安装elrepo的yum源:
rpm -import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
# 查看可用的内核相关包
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
yum -y --enablerepo=elrepo-kernel install
- 方法 2
# 通过下载kernel image的rpm包进行安装。
官方 Centos 6: http://elrepo.org/linux/kernel/el6/x86_64/RPMS/
官方 Centos 7: http://elrepo.org/linux/kernel/el7/x86_64/RPMS/
# 获取下载链接进行下载安装即可
wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-4.4.185-1.el7.elrepo.x86_64.rpm
rpm -ivh kernel-lt-4.4.185-1.el7.elrepo.x86_64.rp
# 查看默认启动顺序
[root@localhost ~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (5.2.2-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (4.4.182-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-957.21.3.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-957.10.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-e34fb4f1527b4f2d9fc75b77c016b6e7) 7 (Core)
由上面可以看出新内核(4.12.4)目前位置在0,原来的内核(3.10.0)目前位置在1
# 设置默认启动
[root@localhost ~]# grub2-set-default 0 // 0代表当前第一行,也就是4.12.4版本
# 重启验证
7. nginx ログのアクセス数の上位 10 個の IP アドレスをカウントするにはどうすればよいですか?
awk '{array[$1]++}END{for (ip in array)print ip,array[ip]}' access.log |sort -k2 -rn|head
8. /var/log/ の .log の末尾にある 30 日前のログを削除するにはどうすればよいですか?
find /var/log/ -type f -name .*.log -mtime 30|xargs rm -f
9. ansible にはどのようなモジュールがありますか? 機能は何ですか?
モジュール | 関数 |
---|---|
コピー | ファイルをホストにコピーする |
クロン | 時限タスク |
フェッチ | 管理されているファイルをローカルにコピーします |
ファイル | ファイルモジュール |
グループ | ユーザーグループモジュール |
ユーザー | ユーザーモジュール |
ホスト名 | ホスト名モジュール |
脚本 | スクリプトモジュール |
サービス | サービス開始モジュール |
指図 | リモート実行コマンドモジュール |
シェル | リモート実行コマンド モジュール、コマンドの高度な使用法 |
うーん | パッケージグループモジュールをインストールする |
設定 | ホストシステム情報の表示 |
10. nginx が apache より速いのはなぜですか?
- nginxはepollモデルを採用
- Apacheはセレクトモデルを採用
11. 4 層ロードと 7 層ロードの違いは何ですか?
- IP+ポートに基づくレイヤー4転送
- 第 7 層は、URL などのアプリケーション層情報に基づいて負荷分散を行います。
12. lvs の動作モードは何ですか? どれが一番性能が高いのでしょうか?
- dr: ダイレクトルーティングモード。リクエストはLVSによって受け入れられ、実際にサービスを提供するサーバーがLVSを経由せずに直接ユーザーに戻ります。(最高のパフォーマンス)
- tun: トンネル モードの場合、クライアントはアクセス VIP パケットを LVS サーバーに送信します。LVS サーバーはリクエスト メッセージを再パッケージ化し、バックエンドの実サーバーに送信します。バックエンド実サーバーはリクエストメッセージを解凍し、VIP があることを確認した後にリクエストを処理します。データ要求を処理した後、バックエンド実サーバーはクライアントに直接応答します。
- nat: ネットワーク新聞の出入りは LVS によって処理される必要があります。LVS は RS へのゲートウェイとして機能する必要があります。パケットが LVS に到着すると、LVS は宛先アドレス変換 (DNAT) を実行して、宛先 IP を RS の IP に変更します。RSがパケットを受信した後、クライアントが直接送信しているようです。RS が処理を完了して応答を返した後、送信元 IP は RS IP、宛先 IP はクライアントの IP になります。このとき、RS パケットはゲートウェイ (LVS) を介して転送され、LVS は送信元アドレス変換 (SNAT) を実行してパケットの送信元アドレスを VIP に変更します。これにより、クライアントにはパケットが LVS から直接返されたかのように見えます。クライアントはバックエンド RS の存在を認識できません。
- Fullnat モード: fullnat モードは nat モードに似ていますが、nat との違いは、nat モードはアドレス変換を 2 回のみ実行するのに対し、fullnat モードは 4 回実行することです。
13. lvs nginx haproxy keeplived の長所と短所は何ですか?
参考リンク:https://blog.51cto.com/816885/2529993?source=dra
14. 下記URLアドレス、各部の意味
https://www.baidu.com/s?word=123&ie=utf-8
- https: https 暗号化プロトコルを使用してアクセスします
- www.baidu.com/s: リクエストアドレス
- ?word&ie=utf-8: リクエストパラメータ、複数のパラメータ、接続を取得します。
15. Tomcatの各ディレクトリの意味、ポートの変更方法、メモリ数の変更方法は?
- Bin には Tomcat コマンドが保存されます
- conf は Tomcat 設定ファイルを保存します
- lib には、Tomcat の実行時にロードする必要がある jar パッケージが格納されます。
- log Tomcat の実行によって生成されたログがあります
- 一時ファイルの操作中に生成される一時ファイル
- webappsサイトディレクトリ
- work は Tomcat の実行時にコンパイルされたファイルを保存します
- conf/server.xml ポート番号を変更する
- bin/catalina.sh JVM メモリを変更する
16. nginx リバースプロキシの場合、バックエンドに実際のアクセス元 IP を取得させるにはどうすればよいですか?
在location配置段添加以下内容:
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
17. nginx 負荷分散アルゴリズムとは何ですか?
- RR回転トレーニング
- 加重回転トレーニング
- ip_hash 静的スケジューリング アルゴリズム
- 公平な動的スケジューリング アルゴリズム
- url_hash URL ハッシュ
- leat_conn 最小接続数
18. ストレステストはどのように実施するのですか?
例: 10 人のユーザーをシミュレートし、Baidu ホームページに対して合計 100 件のリクエストを開始します。
テストコマンド: ab -n 100 -c 10 https://www.baidu.com/index.htm
19.curl コマンドはどのように https リクエストを送信しますか? 応答ヘッダー情報を表示するにはどうすればよいですか? フォーム情報の取得および投稿を送信するにはどうすればよいですか?
- https リクエストを送信します:curl --tlsv1 'https://www.bitstamp.net/api/v2/transactions/btcusd/'
- 応答ヘッダー情報:curl -I
- 取得:curlリクエストアドレス?key1=value1&key2=value2&key3=value3
- post:curl -d “key1=value1&key2=value2&key3=value3”
二、mysql
1. インデックスによってクエリが高速になるのはなぜですか? デメリットは何ですか?
デフォルトの方法では、検索条件に従ってテーブル全体をスキャンし、条件が一致した場合に検索結果セットを追加します。特定のフィールドにインデックスを追加すると、クエリはまずインデックス リストに移動して、一度に特定の値を持つ行の数を検索し、トラバーサルで一致する行の数を大幅に減らすため、クエリの速度が大幅に向上します
。
- インデックスの作成と維持には時間がかかり、データ量が増えると時間がかかります。
- インデックスは物理領域を占有する必要があります。データ テーブルが占有するデータ領域に加えて、各インデックスも一定量の物理領域を占有します。クラスタ化インデックスを確立する必要がある場合、必要な領域はさらに大きくなります。
- テーブル内のデータを追加、削除、変更する場合、インデックスも動的に維持する必要があるため、整数の維持速度が低下します。
2. SQL文における左外部結合、右外部結合、内部結合、完全結合の違い
3. MySQL データのバックアップ方法、復元方法は? バックアップ戦略は何ですか?
- 物理的な完全バックアップ
すべてのデータベース ファイルのバックアップ: /var/lib/mysql/*
すべての binlog ファイルのバックアップ: /var/lib/mysql/mysql-bin.*バックアップ
オプション ファイル: /etc/my.cnf
- mysqldump論理バックアップ
mysqldump -uroot -p --all-databases > /backup/mysqldump/all.db
- 物理バックアップのリカバリ
mv /var/lib/mysql /var/lib/mysql.old #最初に元のデータ ディレクトリの名前を変更します
cp -a /backups/mysql /var/lib
- 論理バックアップデータのリカバリ
mysql > db_name を使用
mysql > ソース /backup/mysqldump/db_name.db
4. データベースのマスターとスレーブの同期をどのように設定するか、実際の作業でデータの不整合は発生しますか? の解き方?
各サーバーに一意の値を使用してサーバー ID を構成します。
- メインライブラリ
binlog ログを開く
マスター/スレーブ レプリケーション ユーザーを作成する
マスターのステータスを確認する
- 図書館から
マスターを変更してマスターライブラリ情報を設定する
スレーブを開始 レプリケーションを開始する
5. mysql の制約とは何ですか?
- 非NULL制約
- 一意の制約
- 主キー制約
- 外部キー制約
6. バイナリ ログ (binlog) の目的は何ですか?
BINLOG はデータベースの変更プロセスを記録します。たとえば、データベースの作成、テーブルの作成、テーブルの変更などの DDL 操作、およびデータ テーブルの関連する DML 操作では、これらの操作によりデータベースが変更されます。バイナリログが有効になった後、データベースの変更を引き起こす操作は、時系列順に「イベント」の形式でバイナリ ファイルに記録されます。
7. mysql データ エンジンとは何ですか?
- よく使用される myisam、innodb
- 違い:
InnoDB はトランザクションをサポートしますが、MyISAM はサポートしません。これは非常に重要です。count( ) ステートメントに where 条件が含まれている場合、MyISAM はテーブル全体をスキャンする必要があることにも注意してください。自己増加フィールドの場合、InnoDB にはこのフィールドのインデックスのみが含まれている必要がありますが、MyISAM テーブル内の他のフィールドと結合インデックスを構築できます。テーブル全体をクリアする場合、InnoDB は一度に1 行を削除しますが、これは非常に時間がかかります。MyISAM はテーブルを再構築します。InnoDBは行ロックをサポートします (場合によっては、テーブル全体がロックされます。たとえば、ユーザーが '%lee%' のように設定したテーブルを更新するなど)
8. mysql データベースのストレージ パスをクエリするにはどうすればよいですか?
mysql> show variables like 'datadir%';
+---------------+------------------------+
| Variable_name | Value |
+---------------+------------------------+
| datadir | /usr/local/mysql/data/ |
+---------------+------------------------+
1 row in set (0.00 sec)
9. mysql データベース ファイルの拡張子は何ですか? それはなんのためですか?
- ミサム
.frm ファイル: 保護テーブルの定義
. myd: テーブルのデータの保存
. myi: テーブルのインデックス ファイル
- innodb
.frm: テーブルの定義を保存します。ibd
: テーブルスペース
10. データベース ユーザーのパスワードを変更するにはどうすればよいですか?
- mysql8より前
set password for 用户名@localhost = password('新密码');
mysqladmin -u用户名 -p旧密码 password 新密码
update user set password=password('123') where user='root' and host='localhost';
- mysql8以降
# mysql8初始对密码要求高,简单的字符串不让改。先改成:MyNewPass@123;
alter user 'root'@'localhost' identified by 'MyNewPass@123';
# 降低密码难度
set global validate_password.policy=0;
set global validate_password.length=4;
# 修改成简易密码
alter user 'root'@'localhost'IDENTIFIED BY '1111';
11. ユーザー権限を変更するにはどうすればよいですか? 確認方法は?
- 認可:
grant all on *.* to user@'%' identified by 'passwd'
- 表示権限
show grants for user@'%';
3、nosql
1. Redis データを永続化するにはどのような方法がありますか?
- RDB
- の
2. Redis クラスター ソリューションとは何ですか?
- 公式クラスターソリューション
- twemproxy プロキシ スキーム
- センチネルモード
- Codis
クライアントの断片化
3. Redis はデータのバックアップとリカバリをどのように実行しますか?
- バックアップ
redis 127.0.0.1:6379> SAVE
redis バックアップ ファイルを作成するには、バックグラウンドで実行されるコマンド BGSAVE を使用することもできます。
- 割引
バックアップ ファイル (dump.rdb) を redis インストール ディレクトリに移動し、サービス
redis 127.0.0.1:6379> CONFIG GET dirを開始するだけです。
- 「ディレクトリ」
- 「/usr/local/redis/bin」
4. MongoDB はデータのバックアップをどのように実行しますか?
mongoexport / mongoimport
mongodump / mongorestore
5. なぜ Kafka は Redis Rabbitmq よりも速いのですか?
https://www.zhihu.com/question/22480085
4. ドッカー
1. dockerfile 内のキーワードは何ですか? 何の用途があるのでしょうか?
2. dockerfile によって生成されるイメージのボリュームを減らすにはどうすればよいですか?
- ニーズを満たす、比較的小さい基本的なシステム イメージを選択するようにしてください。たとえば、ほとんどの場合、サイズが 100 メガバイト未満の debian:wheezy または debian:jessie イメージを選択できます。
- コンパイル生成ファイルやインストール パッケージ キャッシュなどの一時ファイルをクリーンアップします。
- 各ソフトウェアをインストールするときに正確なバージョン番号を指定し、不要な依存関係が導入されないようにします。
- セキュリティの観点から、アプリケーションは可能な限りシステム ライブラリと依存関係を使用する必要があります。
- アプリケーションのインストール時に特別な環境変数を構成する必要がある場合は、インストール後に保持する必要のない変数値を復元します。
3. dockerfile の CMD と ENTRYPOINT の違いは何ですか?
- CMD 命令と ENTRYPOINT 命令は両方とも、コンテナーの起動時に実行するコマンドを指定するために使用されます。
- ENTRYPOINT コマンドが実行モードとして指定されている場合、CMD で指定されたパラメータは、ENTRYPOINT で指定されたコマンドのパラメータ リストにパラメータとして追加されます。
4. dockerfile の COPY と ADD の違いは何ですか?
- COPY コマンドと ADD コマンドはどちらも、ホスト上のリソースをコンテナ イメージにコピーまたは追加できます。
- 違いは、リモート URL から追加できるリソースは解凍されないことです。
- ローカル圧縮パッケージ ADD の場合は解凍されます
5. docker の cs アーキテクチャ コンポーネントは何ですか?
6. Docker ネットワークにはどのような種類がありますか?
- ホストモード
- コンテナモード
- なしモード
- ブリッジモード
7. Docker リモート アクセスを構成するにはどうすればよいですか?
- vim /lib/systemd/system/docker.service
- ExecStart= の後に構成を追加します。最初にスペースを入力し、次に -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock を入力する必要があることに注意してください。
8. Docker コア名前空間 CGroups 共同ファイル システムの機能は何ですか?
- 名前空間: リソースの分離
- cgroup: リソース制御
- ジョイント ファイル システム: レイヤーごとに重ね合わせるサブミッションとしてファイル システムの変更をサポートし、同時に異なるディレクトリを同じ仮想ファイル システムの下にマウントできます。
9. コマンド関連: イメージのインポートとエクスポート、コンテナーの入力、コンテナーの再起動ポリシーの設定、イメージ環境変数の表示、およびコンテナー リソースの使用状況の表示
- イメージのインポート dockerload -i xx.tar
- イメージのエクスポート docker save -o xx.tar image_name
- コンテナ docker exec -it コンテナ コマンド /bin/bash を入力します。
- --restart オプションを開始するようにコンテナーの再起動戦略を設定する場合
- コンテナ環境変数を表示する docker exec {containerID} env
- コンテナーのリソース使用状況の docker 統計を表示する test2
10. イメージを構築するにはどのような方法がありますか?
- ドッカーファイル
- コンテナは画像として送信されます
11. Docker 仮想化と VMware 仮想化の違いは何ですか?
5. Kubernetes
1. k8s のクラスター コンポーネントは何ですか? 機能は何ですか?
2. kubectl コマンドに関連: レプリカの数を変更する方法、ロール更新とロールバックの方法、ポッドの詳細を表示する方法、ポッドの相互作用を開始する方法。
- レプリカの数を変更する kubectl スケール デプロイメント redis --replicas=3
- アクティブな更新 kubectl セットイメージのデプロイメント myapp-deploy myapp=myapp:v2
- ロールバック kubectl ロールアウト デプロイメントを元に戻す myapp-deploy
- ポッドの詳細を表示する kubectl description pods/
- ポッド相互作用を入力します kubectl exec -it -c bash
3. etcd データをバックアップするにはどうすればよいですか?
- etcdctl --endpoints=“https://192.168.32.129:2379,https://192.168.32.130:2379,192.168.32.128:2379” --cacert=/etc/kubernetes/cert/ca.pem --key=/etc/etcd/cert/etcd-key.pem --cert=/etc/etcd/cert/etc d.pem スナップショット保存 snashot1.db
- スナップショットは snashot1.db に保存されます
4. k8s コントローラーとは何ですか?
- レプリカ セット (ReplicaSet)
- 導入
- ステートフルセット (ステートフルセット)
- デーモン集(DaemonSet)
- タスク(ジョブ)
- スケジュールされたタスク (CronJob)
- ステートフル セット (StatefulSet)
5. クラスターレベルのリソースとは何ですか?
- 名前空間
- ノード
- 役割
- クラスターロール
- 役割バインディング
- クラスターロールバインディング
6. ポッドのステータスは何ですか?
- 保留中
- ランニングランニング
- 正常終了しました
- 異常停止失敗
- Unkonwn 不明ステータス
7. ポッドの作成プロセスとは何ですか?
[外部リンク画像の転送に失敗しました。ソース サイトには盗難防止リンク メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-SJ8ERoki-1685248088364)(https://api.cuiliangblog.cn/v1/public/imgProxy/?url=https://cdn.nlark.com/yuque/0/2020/jpeg/2308212/16063858) 2 1622-f36232c8-15a5-46dc-a750-bfc90624b205.jpeg#align=left&display=inline&height=524&margin=%5Bobject%20Object%5D&name=SAVE_20201126_181652.jpg&originHeight=524&originWidth=7 90&size=9283 6&status=完了&style=none&width=790)]
8. ポッドの再起動戦略は何ですか?
Pod の再起動戦略は 3 つあり、デフォルト値は Always です。
- Always : コンテナーに障害が発生すると、kubelet はコンテナーを自動的に再起動します。
- OnFailure: コンテナが終了し、終了コードが 0 でない場合に再起動します。
- Never : 状態に関係なく、kubelet はコンテナーを再起動しません。
9. リソースプローブとは何ですか?
- ExecAction: コンテナ内でコマンドを実行し、返されたステータス コードに基づいて診断する操作を Exec 検出と呼びます。ステータス コード 0 は成功を意味し、それ以外の場合は異常な状態を意味します。
- TCPSocketAction: コンテナの特定の TCP ポートとの接続を確立しようとして診断します。ポートが正常に開くことができれば正常であり、それ以外の場合は異常です。
- HTTPGetAction: コンテナ IP アドレスの指定されたポート上の指定されたパスへの HTTP GET リクエストを開始することによって診断します。応答コードが 2xx または 3xx の場合は成功、それ以外の場合は失敗です。
10. リクエストと制限は何に使用されますか?
- 「requests」属性は、リクエストの保証された可用性値を定義します。つまり、コンテナはこれらのクォータのリソースを使用できませんが、使用される場合は、多くのリソースが使用可能であることを保証する必要があります。
- 「limits」属性は、リソースに利用可能な最大値、つまりハードリミットを制限するために使用されます。
11. kubeconfig ファイルには何が含まれており、その目的は何ですか?
クラスター パラメーター (CA 証明書、API サーバー アドレス)、クライアント パラメーター (上記で生成された証明書と秘密キー)、クラスター コンテキスト情報 (クラスター名、ユーザー名) が含まれます。
12. RBAC のロールとクラスターロール、ロールバインディングとクラスターロールバインディングの違いは何ですか?
- ロールはネームスペースで定義できます。ネームスペースをまたがる場合は、ClusterRole を作成できます。ClusterRole には、Role と同じ権限およびロール制御機能があります。違いは、ClusterRole がクラスター レベルであることです。
- RoleBinding は名前空間内の承認に適用され、ClusterRoleBinding はクラスター全体の承認に適用されます。
13. ipvs が iptables より効率的なのはなぜですか?
IPVS モードと iptables も Netfilter に基づいていますが、ハッシュ テーブルは ipvs によって使用され、ルールのリストは iptables によって使用されます。iptables はファイアウォール用に設計されており、クラスターが多いほど iptables ルールも多くなりますが、iptables ルールは上から下まで照合されるため、効率は低くなります。したがって、サービスの数が一定の規模に達すると、ハッシュ ルックアップ テーブルの速度上の利点が現れ、サービスのサービス パフォーマンスが向上します。
14. sc pv pvc の目的は何ですか?また、コンテナの取り付けと保管の全プロセスは何ですか?
- PVC: ポッドが使用する永続ストレージの属性 (ストレージ サイズ、読み取りおよび書き込み権限など)。
- PV: ボリュームの特定のプロパティ (ボリューム タイプ、マウント ディレクトリ、リモート ストレージ サーバー アドレスなど)。
- StorageClass: PV のテンプレートとして機能します。さらに、同じ StorageClass に属する PV と PVC のみをバインドできます。もちろん、StorageClass のもう 1 つの重要な役割は、PV のプロビジョナー (ストレージ プラグイン) を指定することです。現時点では、ストレージ プラグインが動的プロビジョニングをサポートしている場合、Kubernetes は PV を自動的に作成できます。
15. nginx ingress の原理の本質は何ですか?
- Ingress コントローラーは、kubernetes API と対話して、クラスター内の Ingress ルールの変更を動的に検知します。
- 次に、それを読んで、カスタム ルールに従って、どのドメイン名がどのサービスに対応するかを指定し、nginx 構成の一部を生成するルールです。
- 次に、nginx-ingress-controller のポッドに書き込みます。これにより、
Ingress コントローラーのポッドで Nginx サービスが実行されます。コントローラーは、生成された nginx 構成を /etc/nginx.conf ファイルに書き込みます。 - 次に、再ロードして構成を有効にします。このようにして、ドメイン名のサブ構成と動的更新の問題を解決できます。
16. 異なるノード上のポッド間の通信プロセスについて説明する
17. k8s クラスターノードはメンテナンスのためにシャットダウンする必要があります。その操作方法
- ポッドのエビクションを実行します: kubelet ドレイン <node_name>
- ノード上で実行されているポッドがなく、削除されたポッドがすでに他のノードで正常に実行されているかどうかを確認します。
- シャットダウンメンテナンス
- 起動時に関連サービスを開始します (起動シーケンスに注意してください)
- スケジュールできないノード ノード: kubectl uncordon ノード
- テスト ポッドを作成し、ノード ラベルを使用してノードが正常にスケジュールできるかどうかをテストします。
18. キャリコとフランネルの違い
- フランネル (シンプル、主に使用): Vxlan テクノロジー (オーバーレイ ネットワーク + レイヤ 2 トンネル) に基づいており、ネットワーク ポリシーはサポートされません
- Calico (Flannel よりも複雑であまり使用されていません): トンネル ネットワークもサポートできますが、これはレイヤー 3 トンネル (IPIP) であり、ネットワーク ポリシーをサポートします。
- Calico プロジェクトは、Kubernetes クラスターのネットワーク ソリューションとネットワーク ポリシーを独立して提供できます。また、flannel と組み合わせることもできます。flannel はネットワーク ソリューションを提供し、Calico は現時点ではネットワーク ポリシーを提供するためにのみ使用されます。
6、プロメテウス
1. zabbix に対する prometheus の利点は何ですか?
https://blog.csdn.net/wangyiyungw/article/details/85774969**
2. プロメテウスのコンポーネントとその機能は何ですか?
3. インジケーターにはどのような種類がありますか?
- カウンター
- ゲージ(ダッシュボード)
- ヒストグラム
- まとめ
4. 数千のノードの監視を扱う際のパフォーマンスを確保する方法
- 収集頻度を減らす
- 履歴データを保存する日数を削減し、
- クラスターフェデレーションとリモートストレージの使用
5. ノード監視の追加から Grafana グラフ作成までのプロセス全体を簡単に説明します
- 監視対象ノードはエクスポータをインストールします
- Prometheusサーバーが監視項目を追加
- Prometheus Web インターフェース - ステータス - ターゲットの表示
- Grafana はグラフを作成します
6. 作業で使用されるエクスポーター
- ノードエクスポーターはLinuxホストを監視します
- cAdvisor はコンテナを監視します
- MySQLD エクスポーターは mysql を監視します
- Blackbox Exporter ネットワーク検出
- Pushgateway はモニタリング用のカスタム インジケーターを収集します
- プロセスエクスポータ プロセス監視
7.エルク
1. Elasticsearch データをバックアップおよび復元するにはどうすればよいですか?
https://www.cnblogs.com/tcy1/p/13492361.html
https://blog.csdn.net/moxiaomomo/article/details/78401400?locationNum=8&fps=1
2. プロジェクトで使用されている logstash フィルター プラグインは何ですか? どのような機能が実装されているのでしょうか?
- 日付 日付の解析
- Grok 定期マッチング分析
- フィールドを上書き書き込み
- 区切り文字の解析を分析する
- フィールドを変更する
- JSON解析
- geoip 地理的位置分析
- Rubyはlogstashイベントを変更します
3. filebeat の組み込みモジュールを使用したことがありますか? 何を使いましたか?
4. elasticsearch シャード コピーとは何ですか? 構成のパラメータは何ですか?
https://juejin.cn/post/6844903862088777736
八、運用保守開発
1. システム内のすべてのコンテナイメージをバックアップします。
#备份镜像列表
docker images|awk 'NR>1{print $1":"$2}'|sort > images.list。
#导出所有镜像为当前目录下文件:
while read img; do
echo $img
file="${img/\//-}"
sudo docker save --output $file.tar $img
done < images.list
#将本地镜像文件导入为Docker镜像:
while read img; do
echo $img
file="${img/\//-}"
docker load < $file.tar
done < images.list
2. スクリプトを作成し、特定のライブラリを定期的にバックアップし、それを圧縮して別のマシンに送信します。
- パブリック部分では、タイムスタンプの取得やアラーム インターフェイスの構成などの機能を定義します。
- 例外の有無を判断して処理する場合は if を使用し、データベースが大きい場合はタスクが完了したかどうかを確認します。生成されたファイルサイズが空ファイルかどうかを確認する
3. 全ホストのシステム情報を一括取得
- Python の paramiko ライブラリ、ssh を使用してホストにログインし、クエリ操作を実行します
- シェル スクリプトを使用してバッチで SSH 接続し、ホストにログインしてコマンドを実行する
- ansible のセットアップ モジュールを使用してホスト情報を取得する
- prometheusのnode_exporterはホストリソース情報を収集します
4. Django の mtv モードのプロセス
5.Pythonで環境依存パッケージをエクスポートおよびインポートする方法
- 輸出環境
pip freeze >> requirements.txt
- インポート環境
pip install -r requirement.txt
6. Python 仮想環境の作成、開始、終了、表示
- パッケージをインストールする
pip3 install virtualenv
- インストールが成功したかどうかを確認する
virtualenv --version
- 仮想環境を作成する
- 仮想環境を作成するディレクトリに cd します。
cd github/test/venv/
- 仮想環境を作成する
virtualenv test
- 仮想環境をアクティブ化する
source test/bin/activate(activate路径)
- 仮想環境を終了する
deactivate
7. flask と django の違い、応用シナリオ
- Django には大規模で包括的な機能があり、Flask には Django を構成するための基本的なワンストップ ソリューションのみが含まれているため、開発者は開発前にアプリケーションのインフラストラクチャの選択に多くの時間を費やす必要はありません。Django には、テンプレート、フォーム、ルーティング、認証、基本的なデータベース管理などが組み込まれています。対照的に、Flask は単なるコアであり、デフォルトで 2 つの外部ライブラリ (Jinja2 テンプレート エンジンと Werkzeug WSGI ツールセット) に依存しており、他の多くの機能が拡張機能の形で埋め込まれています。
- Flask は Django よりも柔軟性があります。Flask を使用してアプリケーションを構築する前に、コンポーネントを選択するときに開発者に柔軟性がもたらされます。アプリケーション シナリオによっては、標準の ORM (オブジェクト リレーショナル マッピング、オブジェクト アソシエーション マッピング) の使用に適していない場合や、さまざまなワークフローやテンプレート システムと対話する必要がある場合があります。
8. よく使用される git コマンドのリスト
- $ git初期化
- $ git 構成
- $ git 追加
- $ gitコミット
- $ git ブランチ
- $ git チェックアウト
- $ gitタグ
- $ gitプッシュ
- $ gitステータス
- $ git ログ
9. git gitlab jenkins の CICD プロセスを構成する方法
- 開発者 git がコードを gitlab ウェアハウスに送信します
- Jenkins が gitlab からコードをプルし、ミラー ビルドをトリガーする
- 画像を港の専用倉庫にアップロード
- イメージを実行マシンにダウンロードする
- ミラーラン
9. 日常業務
1. 日常業務で遭遇する困難な問題とその解決方法
- Redis の脆弱なパスワードはマイニング ウイルス、トラブルシューティング、最適化につながる
- k8s で開発されたプログラムは、ユーザーがファイルをアップロードするとプロセスを開始しますが、時間内にファイルを閉じることができず、ノードが最大プロセス数を超えてしまいます。
2. 日常的なトラブルシューティングのプロセス
- アラームの内容を確認し、大まかに障害のあるホスト、サービス、影響範囲を迅速に特定
- 運用保守管理者に障害を通知し、トラブルシューティングを開始します。
- 構成ファイルの変更、サーバーの再起動、その他の操作が必要な場合は、関連する開発者に通知してください。
- 完全なトラブルシューティング
3. オンライン ビジネス設定ファイルのプロセスを変更する
- 運用保守管理者およびビジネス関連の開発者に最初に通知します。
- テスト環境でテストし、以前の構成ファイルをバックアップします。
- テストが正しい場合は、実稼働環境の構成を変更します。
- 本番環境が正常か、アラームが発生していないかを監視する
- 構成ファイルの変更を完了する