"use strict"; (self["webpackChunkrancher_docs"] = self["webpackChunkrancher_docs"] || []).push([[51839],{ /***/ 3905: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "Zo": () => (/* binding */ MDXProvider), /* harmony export */ "kt": () => (/* binding */ createElement) /* harmony export */ }); /* unused harmony exports MDXContext, useMDXComponents, withMDXComponents */ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67294); function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } var isFunction = function isFunction(obj) { return typeof obj === 'function'; }; var MDXContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext({}); var withMDXComponents = function withMDXComponents(Component) { return function (props) { var allComponents = useMDXComponents(props.components); return /*#__PURE__*/React.createElement(Component, _extends({}, props, { components: allComponents })); }; }; var useMDXComponents = function useMDXComponents(components) { var contextComponents = react__WEBPACK_IMPORTED_MODULE_0__.useContext(MDXContext); var allComponents = contextComponents; if (components) { allComponents = isFunction(components) ? components(contextComponents) : _objectSpread2(_objectSpread2({}, contextComponents), components); } return allComponents; }; var MDXProvider = function MDXProvider(props) { var allComponents = useMDXComponents(props.components); return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(MDXContext.Provider, { value: allComponents }, props.children); }; var TYPE_PROP_NAME = 'mdxType'; var DEFAULTS = { inlineCode: 'code', wrapper: function wrapper(_ref) { var children = _ref.children; return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, {}, children); } }; var MDXCreateElement = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(function (props, ref) { var propComponents = props.components, mdxType = props.mdxType, originalType = props.originalType, parentName = props.parentName, etc = _objectWithoutProperties(props, ["components", "mdxType", "originalType", "parentName"]); var components = useMDXComponents(propComponents); var type = mdxType; var Component = components["".concat(parentName, ".").concat(type)] || components[type] || DEFAULTS[type] || originalType; if (propComponents) { return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Component, _objectSpread2(_objectSpread2({ ref: ref }, etc), {}, { components: propComponents })); } return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Component, _objectSpread2({ ref: ref }, etc)); }); MDXCreateElement.displayName = 'MDXCreateElement'; function createElement (type, props) { var args = arguments; var mdxType = props && props.mdxType; if (typeof type === 'string' || mdxType) { var argsLength = args.length; var createElementArgArray = new Array(argsLength); createElementArgArray[0] = MDXCreateElement; var newProps = {}; for (var key in props) { if (hasOwnProperty.call(props, key)) { newProps[key] = props[key]; } } newProps.originalType = type; newProps[TYPE_PROP_NAME] = typeof type === 'string' ? type : mdxType; createElementArgArray[1] = newProps; for (var i = 2; i < argsLength; i++) { createElementArgArray[i] = args[i]; } return react__WEBPACK_IMPORTED_MODULE_0__.createElement.apply(null, createElementArgArray); } return react__WEBPACK_IMPORTED_MODULE_0__.createElement.apply(null, args); } /***/ }), /***/ 81772: /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "assets": () => (/* binding */ assets), /* harmony export */ "contentTitle": () => (/* binding */ contentTitle), /* harmony export */ "default": () => (/* binding */ MDXContent), /* harmony export */ "frontMatter": () => (/* binding */ frontMatter), /* harmony export */ "metadata": () => (/* binding */ metadata), /* harmony export */ "toc": () => (/* binding */ toc) /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67294); /* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3905); /* @jsxRuntime classic */ /* @jsx mdx */ /* @jsxFrag React.Fragment */ function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _object_spread(target) { for(var i = 1; i < arguments.length; i++){ var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === "function") { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function(key) { _define_property(target, key, source[key]); }); } return target; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _object_spread_props(target, source) { source = source != null ? source : {}; if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function(key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _object_without_properties(source, excluded) { if (source == null) return {}; var target = _object_without_properties_loose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for(i = 0; i < sourceSymbolKeys.length; i++){ key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _object_without_properties_loose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for(i = 0; i < sourceKeys.length; i++){ key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } const frontMatter = { title: '安装/升级 Rancher', description: '了解如何在开发和生产环境中安装 Rancher。了解单节点和高可用安装' }; const contentTitle = undefined; const metadata = { "unversionedId": "pages-for-subheaders/installation-and-upgrade", "id": "version-2.6/pages-for-subheaders/installation-and-upgrade", "title": "安装/升级 Rancher", "description": "了解如何在开发和生产环境中安装 Rancher。了解单节点和高可用安装", "source": "@site/i18n/zh/docusaurus-plugin-content-docs/version-2.6/pages-for-subheaders/installation-and-upgrade.md", "sourceDirName": "pages-for-subheaders", "slug": "/pages-for-subheaders/installation-and-upgrade", "permalink": "/zh/v2.6/pages-for-subheaders/installation-and-upgrade", "draft": false, "editUrl": "https://github.com/rancher/rancher-docs/edit/main/versioned_docs/version-2.6/pages-for-subheaders/installation-and-upgrade.md", "tags": [], "version": "2.6", "lastUpdatedAt": 1691458626, "formattedLastUpdatedAt": "2023年8月8日", "frontMatter": { "title": "安装/升级 Rancher", "description": "了解如何在开发和生产环境中安装 Rancher。了解单节点和高可用安装" }, "sidebar": "tutorialSidebar", "previous": { "title": "部署带有 NodePort 的工作负载", "permalink": "/zh/v2.6/getting-started/quick-start-guides/deploy-workloads/nodeports" }, "next": { "title": "安装要求", "permalink": "/zh/v2.6/pages-for-subheaders/installation-requirements" } }; const assets = {}; const toc = [ { value: '名词解释', id: '名词解释', level: 2 }, { value: '安装方式概述', id: '安装方式概述', level: 2 }, { value: '使用 Helm CLI 安装的高可用 Kubernetes', id: '使用-helm-cli-安装的高可用-kubernetes', level: 3 }, { value: '通过 AWS Marketplace 在 EKS 上安装 Rancher', id: '通过-aws-marketplace-在-eks-上安装-rancher', level: 3 }, { value: '单节点 Kubernetes 安装', id: '单节点-kubernetes-安装', level: 3 }, { value: 'Docker 安装', id: 'docker-安装', level: 3 }, { value: '其他方式', id: '其他方式', level: 3 }, { value: '先决条件', id: '先决条件', level: 2 }, { value: '架构建议', id: '架构建议', level: 2 }, { value: '在 Kubernetes 上安装 Rancher 的更多选项', id: '在-kubernetes-上安装-rancher-的更多选项', level: 3 }, { value: '在 Docker 上安装 Rancher 的更多选项', id: '在-docker-上安装-rancher-的更多选项', level: 3 } ]; const layoutProps = { toc }; const MDXLayout = "wrapper"; function MDXContent(_param) { var { components } = _param, props = _object_without_properties(_param, [ "components" ]); return /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)(MDXLayout, _object_spread_props(_object_spread({}, layoutProps, props), { components: components, mdxType: "MDXLayout" }), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `本节介绍了 Rancher 各种安装方式以及每个安装方式的优点。`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2", { "id": "名词解释" }, `名词解释`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `本章节涉及以下名词:`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("ul", null, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li", { parentName: "ul" }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong", { parentName: "li" }, `Rancher Server`), `:用于管理和配置 Kubernetes 集群。你可以通过 Rancher Server 的 UI 与下游 Kubernetes 集群进行交互。Rancher Management Server 可以安装到任意 Kubernetes 集群上,包括托管的集群,如 Amazon EKS 集群。`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li", { parentName: "ul" }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong", { parentName: "li" }, `RKE(Rancher Kubernetes Engine)`), `:是经过认证的 Kubernetes 发行版,也是用于创建和管理 Kubernetes 集群的 CLI 工具和库。`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li", { parentName: "ul" }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong", { parentName: "li" }, `K3s(轻量级 Kubernetes)`), `:也是经过认证的 Kubernetes 发行版。它比 RKE 更新,更易用且更轻量,其所有组件都在一个小于 100 MB 的二进制文件中。`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li", { parentName: "ul" }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong", { parentName: "li" }, `RKE2`), `:一个完全合规的 Kubernetes 发行版,专注于安全和合规性。`)), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("inlineCode", { parentName: "p" }, `restrictedAdmin`), ` Helm Chart 选项在 `, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong", { parentName: "p" }, `Rancher Server`), ` 可用。如果该选项设置为 true,初始的 Rancher 用户访问本地 Kubernetes 集群会受到限制,以避免权限升级。详情请参见 `, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "p", "href": "/zh/v2.6/how-to-guides/new-user-guides/authentication-permissions-and-global-configuration/manage-role-based-access-control-rbac/global-permissions#%E5%8F%97%E9%99%90%E7%AE%A1%E7%90%86%E5%91%98" }, `restricted-admin 角色`), `。`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2", { "id": "安装方式概述" }, `安装方式概述`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `Rancher 可以安装在以下主要架构上:`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3", { "id": "使用-helm-cli-安装的高可用-kubernetes" }, `使用 Helm CLI 安装的高可用 Kubernetes`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `我们建议使用 Kubernetes 包管理器 Helm 在专用的 Kubernetes 集群上安装 Rancher。在 RKE 集群中,需要使用三个节点才能实现高可用集群。在 K3s 集群中,只需要两个节点即可。`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3", { "id": "通过-aws-marketplace-在-eks-上安装-rancher" }, `通过 AWS Marketplace 在 EKS 上安装 Rancher`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `你可以`, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "p", "href": "/zh/v2.6/getting-started/quick-start-guides/deploy-rancher-manager/aws-marketplace" }, `通过 AWS Marketplace`), ` 将 Rancher 安装到 Amazon Elastic Kubernetes Service (EKS) 上。部署的 EKS 集群已生产就绪,并遵循 AWS 最佳实践。`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3", { "id": "单节点-kubernetes-安装" }, `单节点 Kubernetes 安装`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `Rancher 可以安装在单节点 Kubernetes 集群上。但是,在单节点安装的情况下,Rancher Server 没有高可用性。而高可用性对在生产环境中运行 Rancher 非常重要。`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `但是,如果你想要短期内使用单节点节省资源,同时又保留高可用性迁移路径,那么单节点 Kubernetes 安装也是合适的。你也可以之后向集群中添加节点,获得高可用的 Rancher Server。`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3", { "id": "docker-安装" }, `Docker 安装`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `如果你的目的是测试或演示,你可以使用 Docker 把 Rancher 安装到单个节点中。本地 Kubernetes 集群是安装到单个 Docker 容器中的,而 Rancher 是安装到本地集群中的。`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `Rancher backup operator 可将 Rancher 从单个 Docker 容器迁移到高可用 Kubernetes 集群上。详情请参见`, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "p", "href": "/zh/v2.6/how-to-guides/new-user-guides/backup-restore-and-disaster-recovery/migrate-rancher-to-new-cluster" }, `把 Rancher 迁移到新集群`), `。`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3", { "id": "其他方式" }, `其他方式`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `如果你需要在离线环境中或使用 HTTP 代理安装 Rancher,请参见以下独立的说明文档:`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("table", null, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("thead", { parentName: "table" }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("tr", { parentName: "thead" }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("th", { parentName: "tr", "align": null }, `网络访问方式`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("th", { parentName: "tr", "align": null }, `基于 Kubernetes 安装(推荐)`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("th", { parentName: "tr", "align": null }, `基于 Docker 安装`))), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("tbody", { parentName: "table" }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("tr", { parentName: "tbody" }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("td", { parentName: "tr", "align": null }, `可直接访问互联网`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("td", { parentName: "tr", "align": null }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "td", "href": "/zh/v2.6/pages-for-subheaders/install-upgrade-on-a-kubernetes-cluster" }, `文档`)), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("td", { parentName: "tr", "align": null }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "td", "href": "/zh/v2.6/pages-for-subheaders/rancher-on-a-single-node-with-docker" }, `文档`))), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("tr", { parentName: "tbody" }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("td", { parentName: "tr", "align": null }, `使用 HTTP 代理`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("td", { parentName: "tr", "align": null }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "td", "href": "/zh/v2.6/pages-for-subheaders/rancher-behind-an-http-proxy" }, `文档`)), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("td", { parentName: "tr", "align": null }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "td", "href": "/zh/v2.6/pages-for-subheaders/rancher-on-a-single-node-with-docker" }, `文档`), `及`, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "td", "href": "/zh/v2.6/reference-guides/single-node-rancher-in-docker/http-proxy-configuration" }, `配置`))), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("tr", { parentName: "tbody" }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("td", { parentName: "tr", "align": null }, `离线环境`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("td", { parentName: "tr", "align": null }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "td", "href": "/zh/v2.6/pages-for-subheaders/air-gapped-helm-cli-install" }, `文档`)), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("td", { parentName: "tr", "align": null }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "td", "href": "/zh/v2.6/pages-for-subheaders/air-gapped-helm-cli-install" }, `文档`))))), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `我们建议在 Kubernetes 集群上安装 Rancher,因为在多节点集群中,Rancher Server 可以实现高可用。高可用配置可以提升 Rancher 访问其管理的下游 Kubernetes 集群的稳定性。`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `因此,我们建议在生产级别的架构中,设置一个高可用的 Kubernetes 集群,然后在这个集群上安装 Rancher。安装 Rancher 后,你可以使用 Rancher 部署和管理 Kubernetes 集群。`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `如果你的目的是测试或演示,你可以将 Rancher 安装到单个 Docker 容器中。Docker 安装可以让你实现开箱即用,以使用 Rancher 设置 Kubernetes 集群。Docker 安装主要是用于探索 Rancher Server 的功能,只适用于开发和测试。`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "p", "href": "/zh/v2.6/pages-for-subheaders/install-upgrade-on-a-kubernetes-cluster" }, `在 Kubernetes 上安装 Rancher 的说明`), `介绍了如何首先使用 K3s 或 RKE 创建和管理 Kubernetes 集群,然后再将 Rancher 安装到该集群上。`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `如果 Kubernetes 集群中的节点正在运行且满足`, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "p", "href": "/zh/v2.6/pages-for-subheaders/installation-requirements" }, `节点要求`), `,你可以使用 Helm 将 Rancher 部署到 Kubernetes 上。Helm 使用 Rancher 的 Helm Chart 在 Kubernetes 集群的每个节点上安装 Rancher 的副本。我们建议使用负载均衡器将流量定向到集群中的每个 Rancher 副本上。`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `如需进一步了解 Rancher 架构,请参见`, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "p", "href": "/zh/v2.6/pages-for-subheaders/rancher-manager-architecture" }, `架构概述`), `,`, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "p", "href": "/zh/v2.6/reference-guides/rancher-manager-architecture/architecture-recommendations" }, `生产级别架构推荐`), `或`, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "p", "href": "/zh/v2.6/reference-guides/best-practices/rancher-server/tips-for-running-rancher" }, `最佳实践指南`), `。`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2", { "id": "先决条件" }, `先决条件`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `安装 Rancher 之前,请确保你的节点满足所有`, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "p", "href": "/zh/v2.6/pages-for-subheaders/installation-requirements" }, `安装要求`), `。`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2", { "id": "架构建议" }, `架构建议`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `为了达到最佳性能和安全性,我们建议你为 Rancher Management Server 使用单独的专用 Kubernetes 集群。不建议在此集群上运行用户工作负载。部署 Rancher 后,你可以`, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "p", "href": "/zh/v2.6/pages-for-subheaders/kubernetes-clusters-in-rancher-setup" }, `创建或导入集群`), `来运行你的工作负载。`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `详情请参见`, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "p", "href": "/zh/v2.6/reference-guides/rancher-manager-architecture/architecture-recommendations" }, `架构推荐`), `。`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3", { "id": "在-kubernetes-上安装-rancher-的更多选项" }, `在 Kubernetes 上安装 Rancher 的更多选项`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `参见 `, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "p", "href": "/zh/v2.6/getting-started/installation-and-upgrade/installation-references/helm-chart-options" }, `Helm Chart 选项`), `以了解在 Kubernetes 集群上安装 Rancher 的其他配置,包括:`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("ul", null, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li", { parentName: "ul" }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "li", "href": "/zh/v2.6/getting-started/installation-and-upgrade/installation-references/helm-chart-options#api-%E5%AE%A1%E8%AE%A1%E6%97%A5%E5%BF%97" }, `开启 API 审计日志来记录所有事务`)), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li", { parentName: "ul" }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "li", "href": "/zh/v2.6/getting-started/installation-and-upgrade/installation-references/helm-chart-options#%E5%A4%96%E9%83%A8-tls-%E7%BB%88%E6%AD%A2" }, `负载均衡器上的 TLS 终止`)), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li", { parentName: "ul" }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "li", "href": "/zh/v2.6/getting-started/installation-and-upgrade/installation-references/helm-chart-options#%E8%87%AA%E5%AE%9A%E4%B9%89-ingress" }, `自定义 Ingress`))), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `在 Rancher 的安装指南中,我们推荐使用 K3s 或 RKE 来配置 Kubernetes 集群,然后再在这个集群中安装 Rancher。K3s 和 RKE 均提供许多配置选项,用于为你的具体环境自定义 Kubernetes 集群。有关选项和功能的完整列表,请参见:`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("ul", null, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li", { parentName: "ul" }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "li", "href": "https://rancher.com/docs/rke/latest/en/config-options/" }, `RKE 配置选项`)), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li", { parentName: "ul" }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "li", "href": "https://rancher.com/docs/k3s/latest/en/installation/install-options/" }, `K3s 配置选项`))), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3", { "id": "在-docker-上安装-rancher-的更多选项" }, `在 Docker 上安装 Rancher 的更多选项`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p", null, `参见 `, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "p", "href": "/zh/v2.6/pages-for-subheaders/rancher-on-a-single-node-with-docker" }, `Docker 安装选项`), `了解其他配置,包括:`), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("ul", null, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li", { parentName: "ul" }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "li", "href": "/zh/v2.6/reference-guides/single-node-rancher-in-docker/advanced-options#api-%E5%AE%A1%E8%AE%A1%E6%97%A5%E5%BF%97" }, `开启 API 审计日志来记录所有事务`)), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li", { parentName: "ul" }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "li", "href": "/zh/v2.6/how-to-guides/advanced-user-guides/configure-layer-7-nginx-load-balancer" }, `外部负载均衡器`)), /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li", { parentName: "ul" }, /*#__PURE__*/ (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a", { parentName: "li", "href": "/zh/v2.6/reference-guides/single-node-rancher-in-docker/advanced-options#%E6%8C%81%E4%B9%85%E5%8C%96%E6%95%B0%E6%8D%AE" }, `持久化数据存储`)))); } MDXContent.isMDXComponent = true; /***/ }) }]);