SELECT data_key, data_value
FROM xf_data_registry
WHERE data_key IN ('options', 'languages', 'contentTypes', 'codeEventListeners', 'deferredRun', 'simpleCache', 'addOns', 'defaultStyleProperties', 'routeFiltersIn', 'routeFiltersOut', 'routesPublic', 'nodeTypes', 'bannedIps', 'discouragedIps', 'styles', 'displayStyles', 'userBanners', 'smilies', 'bbCode', 'threadPrefixes', 'userTitleLadder', 'reportCounts', 'moderationCounts', 'userModerationCounts', 'notices', 'userFieldsInfo')
Run Time: 0.001083
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_data_registry | range | PRIMARY | PRIMARY | 27 | | 26 | Using where |
SELECT data_key, data_value
FROM xf_data_registry
WHERE data_key IN ('brListenerClasses', 'brBriviumAddOns')
Run Time: 0.000201
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_data_registry | range | PRIMARY | PRIMARY | 27 | | 2 | Using where |
SELECT *
FROM xf_brivium_addon
ORDER BY addon_id
Run Time: 0.000150
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_brivium_addon | index | | PRIMARY | 77 | | 1 | |
INSERT INTO xf_data_registry
(data_key, data_value)
VALUES
(?, ?)
ON DUPLICATE KEY UPDATE
data_value = VALUES(data_value)
Params: brBriviumAddOns, a:0:{}
Run Time: 0.000138
SELECT session_data
FROM xf_session
WHERE session_id = ?
AND expiry_date >= ?
Params: 4509a1463e672bcc80bf38adb6b5b7e1, 1716072549
Run Time: 0.000156
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_session | const | PRIMARY,expiry_date | PRIMARY | 34 | const | 1 | |
SELECT cache_value
FROM xf_permission_combination
WHERE permission_combination_id = ?
Params: 1
Run Time: 0.000141
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_permission_combination | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SELECT thread.*
,
user.gender, user.avatar_date, user.gravatar,
NULL AS thread_read_date,
0 AS thread_reply_banned,
0 AS thread_is_watched,
'' AS draft_message, NULL AS draft_extra
FROM xf_thread AS thread
LEFT JOIN xf_user AS user ON
(user.user_id = thread.user_id)
WHERE thread.thread_id = ?
Params: 214111
Run Time: 0.000617
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | thread | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | user | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SELECT node.*, forum.*
,
permission.cache_value AS node_permission_cache,
NULL AS forum_read_date
FROM xf_forum AS forum
INNER JOIN xf_node AS node ON (node.node_id = forum.node_id)
LEFT JOIN xf_permission_cache_content AS permission
ON (permission.permission_combination_id = 1
AND permission.content_type = 'node'
AND permission.content_id = forum.node_id)
WHERE node.node_id = ?
Params: 36
Run Time: 0.000364
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | forum | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | node | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | permission | const | PRIMARY | PRIMARY | 35 | const,const,const | 1 | |
SELECT post.*
,
thread.*, thread.user_id AS thread_user_id, thread.username AS thread_username,
thread.post_date AS thread_post_date,
post.user_id, post.username, post.post_date,
bb_code_parse_cache.parse_tree AS message_parsed, bb_code_parse_cache.cache_version AS message_cache_version,
user.*, IF(user.username IS NULL, post.username, user.username) AS username,
user_profile.*,
user_privacy.*,
signature_parse_cache.parse_tree AS signature_parsed, bb_code_parse_cache.cache_version AS signature_cache_version,
session_activity.view_date AS last_view_date,
0 AS like_date
FROM xf_post AS post
INNER JOIN xf_thread AS thread ON
(thread.thread_id = post.thread_id)
LEFT JOIN xf_bb_code_parse_cache AS bb_code_parse_cache ON
(bb_code_parse_cache.content_type = 'post' AND bb_code_parse_cache.content_id = post.post_id)
LEFT JOIN xf_user AS user ON
(user.user_id = post.user_id)
LEFT JOIN xf_user_profile AS user_profile ON
(user_profile.user_id = post.user_id)
LEFT JOIN xf_user_privacy AS user_privacy ON
(user_privacy.user_id = post.user_id)
LEFT JOIN xf_bb_code_parse_cache AS signature_parse_cache ON
(signature_parse_cache.content_type = 'signature' AND signature_parse_cache.content_id = post.user_id)
LEFT JOIN xf_session_activity AS session_activity ON
(post.user_id > 0 AND session_activity.user_id = post.user_id AND session_activity.unique_key = CAST(post.user_id AS BINARY))
WHERE (
(post.thread_id = ? AND (post.position >= 0 AND post.position < 10) )
)
AND (post.message_state IN ('visible'))
ORDER BY post.position ASC, post.post_date ASC
Params: 214111
Run Time: 0.002524
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | thread | const | PRIMARY | PRIMARY | 4 | const | 1 | Using filesort |
SIMPLE | post | ref | thread_id_post_date,thread_id_position | thread_id_post_date | 4 | const | 1 | Using index condition; Using where |
SIMPLE | bb_code_parse_cache | eq_ref | content_type_id | content_type_id | 31 | const,xenforo.cc.post.post_id | 1 | Using where |
SIMPLE | user | eq_ref | PRIMARY | PRIMARY | 4 | xenforo.cc.post.user_id | 1 | |
SIMPLE | user_profile | eq_ref | PRIMARY | PRIMARY | 4 | xenforo.cc.post.user_id | 1 | |
SIMPLE | user_privacy | eq_ref | PRIMARY | PRIMARY | 4 | xenforo.cc.post.user_id | 1 | |
SIMPLE | signature_parse_cache | eq_ref | content_type_id | content_type_id | 31 | const,xenforo.cc.post.user_id | 1 | Using where |
SIMPLE | session_activity | eq_ref | PRIMARY | PRIMARY | 22 | xenforo.cc.post.user_id,func | 1 | Using where |
INSERT INTO xf_thread_view
(thread_id)
VALUES
(?)
Params: 214111
Run Time: 0.000087
UPDATE `xf_session` SET `expiry_date` = ?, `session_data` = ? WHERE (session_id = '4509a1463e672bcc80bf38adb6b5b7e1')
Params: 1716076149, a:8:{s:12:"sessionStart";i:1716072548;s:2:"ip";s:4:"˕";s:11:"sessionCsrf";s:16:"puzB5vBSEV0aG2ui";s:9:"userAgent";s:103:"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)";s:7:"robotId";s:0:"";s:16:"previousActivity";i:0;s:15:"isIpDiscouraged";a:2:{s:6:"result";b:0;s:7:"version";i:1484570488;}s:10:"isIpBanned";a:2:{s:6:"result";b:0;s:7:"version";i:1621687349;}}
Run Time: 0.000983
INSERT INTO xf_session_activity
(user_id, unique_key, ip, controller_name, controller_action, view_state, params, view_date, robot_key)
VALUES
(?, ?, ?, ?, ?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE
ip = VALUES(ip),
controller_name = VALUES(controller_name),
controller_action = VALUES(controller_action),
view_state = VALUES(view_state),
params = VALUES(params),
view_date = VALUES(view_date),
robot_key = VALUES(robot_key)
Params: 0, ˕, ˕, XenForo_ControllerPublic_Thread, Index, valid, thread_id=214111, 1716072549,
Run Time: 0.000105
INSERT INTO xf_bb_code_parse_cache
(content_type, content_id, parse_tree, cache_version, cache_date)
VALUES (?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE parse_tree = VALUES(parse_tree),
cache_version = VALUES(cache_version),
cache_date = VALUES(cache_date)
Params: post, 219517, a:80:{i:0;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:130:"Tim Hockin在最近一次的Bay Area Kubernetes Meetup #5上分享了即将发布的v1.2的新增特性以及后续的计划[1]。";}}i:1;s:2:"
";i:2;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:1:"5";s:8:"original";a:2:{i:0;s:8:"[SIZE=5]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:17:"rgb(89, 195, 249)";s:8:"original";a:2:{i:0;s:25:"[COLOR=rgb(89, 195, 249)]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:2:{i:0;a:4:{s:3:"tag";s:4:"left";s:6:"option";N;s:8:"original";a:2:{i:0;s:6:"[LEFT]";i:1;s:7:"[/LEFT]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:18:"rgb(255, 255, 255)";s:8:"original";a:2:{i:0;s:26:"[COLOR=rgb(255, 255, 255)]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;s:1:"1";}}}}i:1;s:17:"External Services";}}}}}}}}i:3;s:54:"
Kubernetes已经提供了三种类型的Service:
";i:4;a:4:{s:3:"tag";s:4:"list";s:6:"option";N;s:8:"original";a:2:{i:0;s:6:"[LIST]";i:1;s:7:"[/LIST]";}s:8:"children";a:1:{i:0;s:250:"
[*]
ClusterIP: 为服务分配虚拟地址,且该地址仅在cluster内部可访问
[*]
NodePort: 在ClusterIP基础上将服务绑定到主机的指定端口上
[*]
LoadBalancer: 在NodePort基础上调用cloud provider创建负载均衡器
";}}i:5;s:2:"
";i:6;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:173:"然而,有的时候,Pod需要访问Kubernetes外部的一些服务(比如已有的数据库服务等),这个时候怎么办呢?当然就是External Service了。";}}i:7;s:2:"
";i:8;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:43:"External Service的创建也比较简单:";}}i:9;s:2:"
";i:10;a:4:{s:3:"tag";s:4:"list";s:6:"option";N;s:8:"original";a:2:{i:0;s:6:"[LIST]";i:1;s:7:"[/LIST]";}s:8:"children";a:1:{i:0;s:138:"
[*]
创建一个不带Selector的Service
[*]
创建与Service同名的Endpoint,并在Endpoint中指定外部服务的IP和端口。
";}}i:11;s:2:"
";i:12;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:1:"5";s:8:"original";a:2:{i:0;s:8:"[SIZE=5]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:17:"rgb(89, 195, 249)";s:8:"original";a:2:{i:0;s:25:"[COLOR=rgb(89, 195, 249)]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:2:{i:0;a:4:{s:3:"tag";s:4:"left";s:6:"option";N;s:8:"original";a:2:{i:0;s:6:"[LEFT]";i:1;s:7:"[/LEFT]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:18:"rgb(255, 255, 255)";s:8:"original";a:2:{i:0;s:26:"[COLOR=rgb(255, 255, 255)]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;s:1:"2";}}}}i:1;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:7:"inherit";s:8:"original";a:2:{i:0;s:15:"[COLOR=inherit]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;s:12:"Ingress (L7)";}}}}}}}}}}}}i:13;s:2:"
";i:14;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:59:"Ingress[2]的引入是为了解决Service的两个问题:";}}i:15;s:2:"
";i:16;a:4:{s:3:"tag";s:4:"list";s:6:"option";N;s:8:"original";a:2:{i:0;s:6:"[LIST]";i:1;s:7:"[/LIST]";}s:8:"children";a:1:{i:0;s:123:"
[*]
Services面向的是L3/L4,然而很多服务都是L7的
[*]
Service分配的虚拟IP只能在Cluster内部访问
";}}i:17;s:2:"
";i:18;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:231:"有了Ingress,你就可以很方便的创建基于HTTP/HTTPS的负载均衡了。但是注意要自己部署并启动Ingress Controller(通常部署为Kubernetes的一个Pod)。Ingress Controller主要要实现三个功能:";}}i:19;s:2:"
";i:20;a:4:{s:3:"tag";s:4:"list";s:6:"option";N;s:8:"original";a:2:{i:0;s:6:"[LIST]";i:1;s:7:"[/LIST]";}s:8:"children";a:1:{i:0;s:83:"
[*]
监控Ingress变化
[*]
为Ingress分配IP
[*]
为Ingress作负载均衡
";}}i:21;s:2:"
";i:22;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:21:"Status:BETA in v1.2";}}i:23;s:2:"
";i:24;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:1:"5";s:8:"original";a:2:{i:0;s:8:"[SIZE=5]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:17:"rgb(89, 195, 249)";s:8:"original";a:2:{i:0;s:25:"[COLOR=rgb(89, 195, 249)]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:2:{i:0;a:4:{s:3:"tag";s:4:"left";s:6:"option";N;s:8:"original";a:2:{i:0;s:6:"[LEFT]";i:1;s:7:"[/LEFT]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:18:"rgb(255, 255, 255)";s:8:"original";a:2:{i:0;s:26:"[COLOR=rgb(255, 255, 255)]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;s:1:"3";}}}}i:1;s:10:"ConfigMaps";}}}}}}}}i:25;s:2:"
";i:26;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:295:"在容器中,应用的配置通常都是通过volume或者环境变量实现,但他们的一大缺点就是配置变更比较麻烦。ConfigMaps就是来解决应用的配置问题,使得这些配置可以通过API来管理,并以Volume或者环境变量的方式自动更新到Pod中。";}}i:27;s:2:"
";i:28;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:18:"Status: GA in v1.2";}}i:29;s:2:"
";i:30;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:1:"5";s:8:"original";a:2:{i:0;s:8:"[SIZE=5]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:17:"rgb(89, 195, 249)";s:8:"original";a:2:{i:0;s:25:"[COLOR=rgb(89, 195, 249)]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:2:{i:0;a:4:{s:3:"tag";s:4:"left";s:6:"option";N;s:8:"original";a:2:{i:0;s:6:"[LEFT]";i:1;s:7:"[/LEFT]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:18:"rgb(255, 255, 255)";s:8:"original";a:2:{i:0;s:26:"[COLOR=rgb(255, 255, 255)]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;s:1:"4";}}}}i:1;s:11:"Deployments";}}}}}}}}i:31;s:2:"
";i:32;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:167:"Deployments引入是为了集中管理RC的变化,并在server-side实现(RC是client-side的)。通过kubectl edit或者kubectl apply可以更方便的管理。";}}i:33;s:2:"
";i:34;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:20:"Status: BETA in v1.2";}}i:35;s:2:"
";i:36;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:1:"5";s:8:"original";a:2:{i:0;s:8:"[SIZE=5]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:17:"rgb(89, 195, 249)";s:8:"original";a:2:{i:0;s:25:"[COLOR=rgb(89, 195, 249)]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:2:{i:0;a:4:{s:3:"tag";s:4:"left";s:6:"option";N;s:8:"original";a:2:{i:0;s:6:"[LEFT]";i:1;s:7:"[/LEFT]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:18:"rgb(255, 255, 255)";s:8:"original";a:2:{i:0;s:26:"[COLOR=rgb(255, 255, 255)]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;s:1:"5";}}}}i:1;s:4:"Jobs";}}}}}}}}i:37;s:2:"
";i:38;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:84:"Jobs为了解决批处理和大数据处理的应用中run-to-completion的问题。";}}i:39;s:2:"
";i:40;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:18:"Status: GA in v1.2";}}i:41;s:2:"
";i:42;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:1:"5";s:8:"original";a:2:{i:0;s:8:"[SIZE=5]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:17:"rgb(89, 195, 249)";s:8:"original";a:2:{i:0;s:25:"[COLOR=rgb(89, 195, 249)]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:2:{i:0;a:4:{s:3:"tag";s:4:"left";s:6:"option";N;s:8:"original";a:2:{i:0;s:6:"[LEFT]";i:1;s:7:"[/LEFT]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:18:"rgb(255, 255, 255)";s:8:"original";a:2:{i:0;s:26:"[COLOR=rgb(255, 255, 255)]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;s:1:"6";}}}}i:1;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:7:"inherit";s:8:"original";a:2:{i:0;s:15:"[COLOR=inherit]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;s:24:"HorizontalPodAutoscalers";}}}}}}}}}}}}i:43;s:2:"
";i:44;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:244:"RC和deployments仅仅保证了服务的状态是可用的(保证Pod的个数),但未考虑Pod的实际资源使用情况。HorizontalPodAutoscalers可以根据资源的使用情况(当前仅实现了CPU利用率)对Pod自动伸缩。";}}i:45;s:2:"
";i:46;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:18:"Status: GA in v1.2";}}i:47;s:2:"
";i:48;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:1:"5";s:8:"original";a:2:{i:0;s:8:"[SIZE=5]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:17:"rgb(89, 195, 249)";s:8:"original";a:2:{i:0;s:25:"[COLOR=rgb(89, 195, 249)]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:2:{i:0;a:4:{s:3:"tag";s:4:"left";s:6:"option";N;s:8:"original";a:2:{i:0;s:6:"[LEFT]";i:1;s:7:"[/LEFT]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:18:"rgb(255, 255, 255)";s:8:"original";a:2:{i:0;s:26:"[COLOR=rgb(255, 255, 255)]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;s:1:"7";}}}}i:1;s:10:"DaemonSets";}}}}}}}}i:49;s:2:"
";i:50;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:85:"DaemonSets可以保证Pod在每个node(或选定的nodes)上只有一个实例。";}}i:51;s:2:"
";i:52;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:97:"DaemonSets的一个典型用例是cAdvisor,在每个node上只需要启动一个就可以了。";}}i:53;s:2:"
";i:54;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:20:"Status: BETA in v1.2";}}i:55;s:2:"
";i:56;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:1:"5";s:8:"original";a:2:{i:0;s:8:"[SIZE=5]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:17:"rgb(89, 195, 249)";s:8:"original";a:2:{i:0;s:25:"[COLOR=rgb(89, 195, 249)]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:2:{i:0;a:4:{s:3:"tag";s:4:"left";s:6:"option";N;s:8:"original";a:2:{i:0;s:6:"[LEFT]";i:1;s:7:"[/LEFT]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:18:"rgb(255, 255, 255)";s:8:"original";a:2:{i:0;s:26:"[COLOR=rgb(255, 255, 255)]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;s:1:"8";}}}}i:1;s:17:"PersistentVolumes";}}}}}}}}i:57;s:2:"
";i:58;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:76:"在v1.2中,PersistentVolumes增加了auto-provisioning特性(alpha)。";}}i:59;s:2:"
";i:60;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:1:"5";s:8:"original";a:2:{i:0;s:8:"[SIZE=5]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:17:"rgb(89, 195, 249)";s:8:"original";a:2:{i:0;s:25:"[COLOR=rgb(89, 195, 249)]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:2:{i:0;a:4:{s:3:"tag";s:4:"left";s:6:"option";N;s:8:"original";a:2:{i:0;s:6:"[LEFT]";i:1;s:7:"[/LEFT]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:18:"rgb(255, 255, 255)";s:8:"original";a:2:{i:0;s:26:"[COLOR=rgb(255, 255, 255)]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;s:1:"9";}}}}i:1;s:15:"Network Plugins";}}}}}}}}i:61;s:2:"
";i:62;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:29:"CNI是推荐的network plugin";}}i:63;s:2:"
";i:64;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:1:"5";s:8:"original";a:2:{i:0;s:8:"[SIZE=5]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:17:"rgb(89, 195, 249)";s:8:"original";a:2:{i:0;s:25:"[COLOR=rgb(89, 195, 249)]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:2:{i:0;a:4:{s:3:"tag";s:4:"left";s:6:"option";N;s:8:"original";a:2:{i:0;s:6:"[LEFT]";i:1;s:7:"[/LEFT]";}s:8:"children";a:1:{i:0;a:4:{s:3:"tag";s:5:"color";s:6:"option";s:18:"rgb(255, 255, 255)";s:8:"original";a:2:{i:0;s:26:"[COLOR=rgb(255, 255, 255)]";i:1;s:8:"[/COLOR]";}s:8:"children";a:1:{i:0;s:2:"10";}}}}i:1;s:15:"近期的计划";}}}}}}}}i:65;s:2:"
";i:66;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:59:"还有一些正在做但不会在v1.2中包括的feature:";}}i:67;s:2:"
";i:68;a:4:{s:3:"tag";s:4:"list";s:6:"option";N;s:8:"original";a:2:{i:0;s:6:"[LIST]";i:1;s:7:"[/LIST]";}s:8:"children";a:5:{i:0;s:685:"
[*]
Cron (scheduled jobs)
[*]
Custom metrics
[*]
“Apply” a config (even more declarative)
[*]
Interactive containers
[*]
Bandwidth shaping
[*]
Third-party API objects
[*]
Scalability: 1000 nodes, 100+ pods/node
[*]
Performance
[*]
Machine-generated Go clients (less deps!)
[*]
Volume usage stats
[*]
Multi-zone (AZ) support
[*]
Multi-scheduler support
[*]
Node affinity and anti-affinity
[*]
Multi-cluster federation
[*]
API federation
[*]
More volume types
[*]
Private Docker registry
[*]
External DNS integration
[*]
Volume classes and auto-provisioning
[*]
Node fencing
[*]
DiY Cloud Provider plugins
[*]
More container runtimes (e.g. ";i:1;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:5:"Hyper";}}i:2;s:31:")
[*]
Better auth{n,z}
[*]
";i:3;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:35:"Network policy (microsegmentation) ";}}i:4;s:69:"[3]
[*]
Big data integrations
[*]
Device scheduling (e.g. GPUs)
";}}i:69;s:2:"
";i:70;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:15:"参考连接:";}}i:71;s:2:"
";i:72;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:4:"[1] ";}}i:73;s:62:"https://speakerdeck.com/thockin/news-from-the-front-v1-dot-2
";i:74;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:4:"[2] ";}}i:75;s:81:"https://github.com/kubernetes/kubernetes/blob/master/docs/user-guide/ingress.md
";i:76;a:4:{s:3:"tag";s:4:"size";s:6:"option";s:4:"16px";s:8:"original";a:2:{i:0;s:11:"[SIZE=16px]";i:1;s:7:"[/SIZE]";}s:8:"children";a:1:{i:0;s:4:"[3] ";}}i:77;s:95:"https://docs.google.com/document/d/1_w77-zG_Xj0zYvEMfQZTQ-wPP4kXkpGD8smVtW_qqWM/edit
稿源:";i:78;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:147:"http://mp.weixin.qq.com/s?__biz=MjM5NDI0ODcwMA==&mid=402183887&idx=1&sn=ac527a17254e57e1c68cecfb06fcfb78&scene=23&srcid=0213QmfzV4Ni51Bzblxu8uRX#rd";s:8:"original";a:2:{i:0;s:155:"[URL='http://mp.weixin.qq.com/s?__biz=MjM5NDI0ODcwMA==&mid=402183887&idx=1&sn=ac527a17254e57e1c68cecfb06fcfb78&scene=23&srcid=0213QmfzV4Ni51Bzblxu8uRX#rd']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:18:"云计算微信号";}}i:79;s:35:"
Kubernetes v1.2 进展下载地址";}, 1621686945, 1716072549
Run Time: 0.000985