[{"data":1,"prerenderedAt":547},["ShallowReactive",2],{"content:\u002F2026\u002F04\u002Fkratos-svc-discover":3,"surround:\u002F2026\u002F04\u002Fkratos-svc-discover":538},{"id":4,"title":5,"body":6,"categories":515,"date":517,"description":518,"draft":519,"extension":520,"image":521,"meta":522,"navigation":56,"path":524,"permalink":521,"published":521,"readingTime":525,"recommend":521,"references":521,"seo":530,"sitemap":531,"stem":532,"tags":533,"type":536,"updated":517,"__hash__":537},"content\u002Fposts\u002F2026\u002F04\u002Fkratos-svc-discover.md","Kratos 服务注册与发现实践",{"type":7,"value":8,"toc":507},"minimark",[9,19,24,197,204,207,321,324,339,342,433,436,486,489,503],[10,11,12,16],"ul",{},[13,14,15],"li",{},"consul",[13,17,18],{},"etcd",[20,21,23],"h2",{"id":22},"安装单节点consul","安装单节点Consul",[25,26,31],"pre",{"className":27,"code":28,"language":29,"meta":30,"style":30},"language-yaml shiki shiki-themes github-light github-dark","version: \"3.9\"\n\nservices:\n  consul:\n    image: consul:1.15.4\n    container_name: consul\n    ports:\n      - \"8500:8500\"      # Web UI 和 HTTP API\n      - \"8600:8600\u002Fudp\"  # DNS 服务\n    command: agent -server -bootstrap-expect=1 -ui -client=0.0.0.0\n    volumes:\n      - .\u002Fdata:\u002Fconsul\u002Fdata\n","yaml","",[32,33,34,51,58,67,78,93,108,120,139,156,171,183],"code",{"__ignoreMap":30},[35,36,39,43,47],"span",{"class":37,"data-line":38,"line":38},"line",1,[35,40,42],{"class":41},"s9eBZ","version",[35,44,46],{"class":45},"sVt8B",": ",[35,48,50],{"class":49},"sZZnC","\"3.9\"\n",[35,52,54],{"class":37,"data-line":53,"line":53},2,[35,55,57],{"emptyLinePlaceholder":56},true,"\n",[35,59,61,64],{"class":37,"data-line":60,"line":60},3,[35,62,63],{"class":41},"services",[35,65,66],{"class":45},":\n",[35,68,70,74,76],{"class":37,"data-line":69,"line":69},4,[35,71,73],{"class":72},"indent","  ",[35,75,15],{"class":41},[35,77,66],{"class":45},[35,79,81,83,85,88,90],{"class":37,"data-line":80,"line":80},5,[35,82,73],{"class":72},[35,84,73],{"class":72},[35,86,87],{"class":41},"image",[35,89,46],{"class":45},[35,91,92],{"class":49},"consul:1.15.4\n",[35,94,96,98,100,103,105],{"class":37,"data-line":95,"line":95},6,[35,97,73],{"class":72},[35,99,73],{"class":72},[35,101,102],{"class":41},"container_name",[35,104,46],{"class":45},[35,106,107],{"class":49},"consul\n",[35,109,111,113,115,118],{"class":37,"data-line":110,"line":110},7,[35,112,73],{"class":72},[35,114,73],{"class":72},[35,116,117],{"class":41},"ports",[35,119,66],{"class":45},[35,121,123,125,127,129,132,135],{"class":37,"data-line":122,"line":122},8,[35,124,73],{"class":72},[35,126,73],{"class":72},[35,128,73],{"class":72},[35,130,131],{"class":45},"- ",[35,133,134],{"class":49},"\"8500:8500\"",[35,136,138],{"class":137},"sJ8bj","      # Web UI 和 HTTP API\n",[35,140,142,144,146,148,150,153],{"class":37,"data-line":141,"line":141},9,[35,143,73],{"class":72},[35,145,73],{"class":72},[35,147,73],{"class":72},[35,149,131],{"class":45},[35,151,152],{"class":49},"\"8600:8600\u002Fudp\"",[35,154,155],{"class":137},"  # DNS 服务\n",[35,157,159,161,163,166,168],{"class":37,"data-line":158,"line":158},10,[35,160,73],{"class":72},[35,162,73],{"class":72},[35,164,165],{"class":41},"command",[35,167,46],{"class":45},[35,169,170],{"class":49},"agent -server -bootstrap-expect=1 -ui -client=0.0.0.0\n",[35,172,174,176,178,181],{"class":37,"data-line":173,"line":173},11,[35,175,73],{"class":72},[35,177,73],{"class":72},[35,179,180],{"class":41},"volumes",[35,182,66],{"class":45},[35,184,186,188,190,192,194],{"class":37,"data-line":185,"line":185},12,[35,187,73],{"class":72},[35,189,73],{"class":72},[35,191,73],{"class":72},[35,193,131],{"class":45},[35,195,196],{"class":49},".\u002Fdata:\u002Fconsul\u002Fdata\n",[198,199,200,201],"p",{},"执行",[32,202,203],{"code":203},"docker-compose up -d",[20,205,206],{"id":206},"linux安装",[25,208,212],{"className":209,"code":210,"language":211,"meta":30,"style":30},"language-bash shiki shiki-themes github-light github-dark","wget -O - https:\u002F\u002Fapt.releases.hashicorp.com\u002Fgpg | sudo gpg --dearmor -o \u002Fusr\u002Fshare\u002Fkeyrings\u002Fhashicorp-archive-keyring.gpg\necho \"deb [arch=$(dpkg --print-architecture) signed-by=\u002Fusr\u002Fshare\u002Fkeyrings\u002Fhashicorp-archive-keyring.gpg] https:\u002F\u002Fapt.releases.hashicorp.com $(grep -oP '(?\u003C=UBUNTU_CODENAME=).*' \u002Fetc\u002Fos-release || lsb_release -cs) main\" | sudo tee \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fhashicorp.list\nsudo apt update && sudo apt install consul\n","bash",[32,213,214,249,297],{"__ignoreMap":30},[35,215,216,220,224,227,230,234,237,240,243,246],{"class":37,"data-line":38,"line":38},[35,217,219],{"class":218},"sScJk","wget",[35,221,223],{"class":222},"sj4cs"," -O",[35,225,226],{"class":49}," -",[35,228,229],{"class":49}," https:\u002F\u002Fapt.releases.hashicorp.com\u002Fgpg",[35,231,233],{"class":232},"szBVR"," |",[35,235,236],{"class":218}," sudo",[35,238,239],{"class":49}," gpg",[35,241,242],{"class":222}," --dearmor",[35,244,245],{"class":222}," -o",[35,247,248],{"class":49}," \u002Fusr\u002Fshare\u002Fkeyrings\u002Fhashicorp-archive-keyring.gpg\n",[35,250,251,254,257,260,263,266,269,272,275,278,281,284,287,289,291,294],{"class":37,"data-line":53,"line":53},[35,252,253],{"class":222},"echo",[35,255,256],{"class":49}," \"deb [arch=$(",[35,258,259],{"class":218},"dpkg",[35,261,262],{"class":222}," --print-architecture",[35,264,265],{"class":49},") signed-by=\u002Fusr\u002Fshare\u002Fkeyrings\u002Fhashicorp-archive-keyring.gpg] https:\u002F\u002Fapt.releases.hashicorp.com $(",[35,267,268],{"class":218},"grep",[35,270,271],{"class":222}," -oP",[35,273,274],{"class":49}," '(?\u003C=UBUNTU_CODENAME=).*' \u002Fetc\u002Fos-release ",[35,276,277],{"class":232},"||",[35,279,280],{"class":218}," lsb_release",[35,282,283],{"class":222}," -cs",[35,285,286],{"class":49},") main\"",[35,288,233],{"class":232},[35,290,236],{"class":218},[35,292,293],{"class":49}," tee",[35,295,296],{"class":49}," \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fhashicorp.list\n",[35,298,299,302,305,308,311,313,315,318],{"class":37,"data-line":60,"line":60},[35,300,301],{"class":218},"sudo",[35,303,304],{"class":49}," apt",[35,306,307],{"class":49}," update",[35,309,310],{"class":45}," && ",[35,312,301],{"class":218},[35,314,304],{"class":49},[35,316,317],{"class":49}," install",[35,319,320],{"class":49}," consul\n",[20,322,323],{"id":323},"开发环境启动",[25,325,327],{"className":209,"code":326,"language":211,"meta":30,"style":30},"consul agent -dev\n",[32,328,329],{"__ignoreMap":30},[35,330,331,333,336],{"class":37,"data-line":38,"line":38},[35,332,15],{"class":218},[35,334,335],{"class":49}," agent",[35,337,338],{"class":222}," -dev\n",[20,340,341],{"id":341},"后台运行",[25,343,345],{"className":209,"code":344,"language":211,"meta":30,"style":30},"sudo tee \u002Fetc\u002Fsystemd\u002Fsystem\u002Fconsul.service > \u002Fdev\u002Fnull \u003C\u003CEOF\n[Unit]\nDescription=Consul Agent\nAfter=network-online.target\nWants=network-online.target\n\n[Service]\nExecStart=\u002Fusr\u002Fbin\u002Fconsul agent -server -bootstrap-expect=1 -data-dir=\u002Fopt\u002Fconsul -bind=0.0.0.0 -client=0.0.0.0 -ui\nRestart=on-failure\n\n[Install]\nWantedBy=multi-user.target\nEOF\n",[32,346,347,375,380,385,390,395,399,404,409,414,418,423,428],{"__ignoreMap":30},[35,348,349,351,353,356,359,362,365,367,370,372],{"class":37,"data-line":38,"line":38},[35,350,301],{"class":218},[35,352,293],{"class":49},[35,354,355],{"class":49}," \u002Fetc\u002Fsystemd\u002Fsystem\u002Fconsul.service",[35,357,358],{"class":232}," ",[35,360,361],{"class":232},">",[35,363,364],{"class":49}," \u002Fdev\u002Fnull",[35,366,358],{"class":232},[35,368,369],{"class":232},"\u003C",[35,371,369],{"class":232},[35,373,374],{"class":49},"EOF\n",[35,376,377],{"class":37,"data-line":53,"line":53},[35,378,379],{"class":49},"[Unit]\n",[35,381,382],{"class":37,"data-line":60,"line":60},[35,383,384],{"class":49},"Description=Consul Agent\n",[35,386,387],{"class":37,"data-line":69,"line":69},[35,388,389],{"class":49},"After=network-online.target\n",[35,391,392],{"class":37,"data-line":80,"line":80},[35,393,394],{"class":49},"Wants=network-online.target\n",[35,396,397],{"class":37,"data-line":95,"line":95},[35,398,57],{"emptyLinePlaceholder":56},[35,400,401],{"class":37,"data-line":110,"line":110},[35,402,403],{"class":49},"[Service]\n",[35,405,406],{"class":37,"data-line":122,"line":122},[35,407,408],{"class":49},"ExecStart=\u002Fusr\u002Fbin\u002Fconsul agent -server -bootstrap-expect=1 -data-dir=\u002Fopt\u002Fconsul -bind=0.0.0.0 -client=0.0.0.0 -ui\n",[35,410,411],{"class":37,"data-line":141,"line":141},[35,412,413],{"class":49},"Restart=on-failure\n",[35,415,416],{"class":37,"data-line":158,"line":158},[35,417,57],{"emptyLinePlaceholder":56},[35,419,420],{"class":37,"data-line":173,"line":173},[35,421,422],{"class":49},"[Install]\n",[35,424,425],{"class":37,"data-line":185,"line":185},[35,426,427],{"class":49},"WantedBy=multi-user.target\n",[35,429,431],{"class":37,"data-line":430,"line":430},13,[35,432,374],{"class":49},[20,434,435],{"id":435},"创建数据目录并启动服务",[25,437,439],{"className":209,"code":438,"language":211,"meta":30,"style":30},"sudo mkdir -p \u002Fopt\u002Fconsul\nsudo systemctl daemon-reload\nsudo systemctl enable consul\nsudo systemctl start consul\n",[32,440,441,454,464,475],{"__ignoreMap":30},[35,442,443,445,448,451],{"class":37,"data-line":38,"line":38},[35,444,301],{"class":218},[35,446,447],{"class":49}," mkdir",[35,449,450],{"class":222}," -p",[35,452,453],{"class":49}," \u002Fopt\u002Fconsul\n",[35,455,456,458,461],{"class":37,"data-line":53,"line":53},[35,457,301],{"class":218},[35,459,460],{"class":49}," systemctl",[35,462,463],{"class":49}," daemon-reload\n",[35,465,466,468,470,473],{"class":37,"data-line":60,"line":60},[35,467,301],{"class":218},[35,469,460],{"class":49},[35,471,472],{"class":49}," enable",[35,474,320],{"class":49},[35,476,477,479,481,484],{"class":37,"data-line":69,"line":69},[35,478,301],{"class":218},[35,480,460],{"class":49},[35,482,483],{"class":49}," start",[35,485,320],{"class":49},[20,487,488],{"id":488},"启动服务",[25,490,492],{"className":209,"code":491,"language":211,"meta":30,"style":30},"systemctl start consul\n",[32,493,494],{"__ignoreMap":30},[35,495,496,499,501],{"class":37,"data-line":38,"line":38},[35,497,498],{"class":218},"systemctl",[35,500,483],{"class":49},[35,502,320],{"class":49},[504,505,506],"style",{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":30,"searchDepth":69,"depth":69,"links":508},[509,510,511,512,513,514],{"id":22,"depth":53,"text":23},{"id":206,"depth":53,"text":206},{"id":323,"depth":53,"text":323},{"id":341,"depth":53,"text":341},{"id":435,"depth":53,"text":435},{"id":488,"depth":53,"text":488},[516],"微服务","2026-04-12","介绍 Kratos 接入 Consul 实现服务注册与发现，包括 Consul 部署、启动和客户端配置。",false,"md",null,{"slots":523},{},"\u002F2026\u002F04\u002Fkratos-svc-discover",{"text":526,"minutes":527,"time":528,"words":529},"1 min read",0.745,44700,149,{"title":5,"description":518},{"loc":524},"posts\u002F2026\u002F04\u002Fkratos-svc-discover",[534,535],"Kratos","服务发现","tech","6GpQaOCRKxhjISE_HXZ1Tw4g5dnOmgY6_IHaxUMo6uY",[539,543],{"title":540,"path":541,"stem":542,"date":517,"type":536,"children":-1},"Kratos 自定义 HTTP 响应与错误处理","\u002F2026\u002F04\u002Fkratos-resp-proxy","posts\u002F2026\u002F04\u002Fkratos-resp-proxy",{"title":544,"path":545,"stem":546,"date":517,"type":536,"children":-1},"Kratos 事务管理与循环依赖解决方案","\u002F2026\u002F04\u002Fkratos-transaction","posts\u002F2026\u002F04\u002Fkratos-transaction",1786555054215]