{"id":221,"date":"2021-06-18T11:54:01","date_gmt":"2021-06-18T02:54:01","guid":{"rendered":"https:\/\/rfsec.ddns.net\/db\/?p=221"},"modified":"2021-06-25T15:56:21","modified_gmt":"2021-06-25T06:56:21","slug":"microk8s%e3%82%92%e8%a9%a6%e3%81%99","status":"publish","type":"post","link":"https:\/\/rfsec.ddns.net\/db\/?p=221","title":{"rendered":"Microk8s\u3092\u8a66\u3059"},"content":{"rendered":"\n<p><a href=\"https:\/\/microk8s.io\/\">microk8s<\/a>\u3092\u7528\u3044\u308b\u3068\u7c21\u5358\u306b\u5358\u30ce\u30fc\u30c9\u69cb\u6210\u306ekubernetes\u3092\u69cb\u7bc9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u3055\u3089\u306bkubernetes\u30af\u30e9\u30b9\u30bf\u3082\u69cb\u7bc9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3088\u3046\u306a\u306e\u3067\u8a66\u3057\u3066\u307f\u308b\u3053\u3068\u306b\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u624b\u9806\u306f\u3001<a href=\"https:\/\/microk8s.io\/\">microk8s<\/a>\u3092\u8e0f\u8972\u3059\u308b\u3053\u3068\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>Install MicroK8s on Linux<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>sudo snap install microk8s --classic<\/code><\/pre><\/div>\n\n\n\n<p>\u30e6\u30fc\u30b6\u3092 micro8ks\u306e\u30b0\u30eb\u30fc\u30d7\u3078\u8ffd\u52a0\uff08\u6b21\u306e\u30ed\u30b0\u30a4\u30f3\u6642\u306b\u53cd\u6620\u3055\u308c\u308b\uff09<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>sudo usermod -a -G microk8s $USER\nsudo chown -f -R $USER ~\/.kube<\/code><\/pre><\/div>\n\n\n\n<p>microk8s\u8d77\u52d5\u72b6\u6cc1\u306e\u8868\u793a<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>$ microk8s status\n\nmicrok8s is running\nhigh-availability: yes\n  datastore master nodes: 192.168.68.132:19001 192.168.68.129:19001 192.168.68.111:19001\n  datastore standby nodes: 192.168.68.130:19001\n\naddons:\n  enabled:\n    dashboard            # The Kubernetes dashboard\n    dns                  # CoreDNS\n    ha-cluster           # Configure high availability on the current node\n    ingress              # Ingress controller for external access\n    metallb              # Loadbalancer for your Kubernetes cluster\n    metrics-server       # K8s Metrics Server for API access to service metrics\n    storage              # Storage class; allocates storage from host directory\n  disabled:\n    ambassador           # Ambassador API Gateway and Ingress\n    cilium               # SDN, fast with full network policy\n    fluentd              # Elasticsearch-Fluentd-Kibana logging and monitoring\n    gpu                  # Automatic enablement of Nvidia CUDA\n    helm                 # Helm 2 - the package manager for Kubernetes\n    helm3                # Helm 3 - Kubernetes package manager\n    host-access          # Allow Pods connecting to Host services smoothly\n    istio                # Core Istio service mesh services\n    jaeger               # Kubernetes Jaeger operator with its simple config\n    keda                 # Kubernetes-based Event Driven Autoscaling\n    knative              # The Knative framework on Kubernetes.\n    kubeflow             # Kubeflow for easy ML deployments\n    linkerd              # Linkerd is a service mesh for Kubernetes and other frameworks\n    multus               # Multus CNI enables attaching multiple network interfaces to pods\n    portainer            # Portainer UI for your Kubernetes cluster\n    prometheus           # Prometheus operator for monitoring and logging\n    rbac                 # Role-Based Access Control for authorisation\n    registry             # Private image registry exposed on localhost:32000\n    traefik              # traefik Ingress controller for external access<\/code><\/pre><\/div>\n\n\n\n<p>Check the status while Kubernetes starts<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>microk8s status --wait-ready<\/code><\/pre><\/div>\n\n\n\n<p>disable\u3055\u308c\u3066\u3044\u308b\u4e2d\u304b\u3089\u5fc5\u8981\u306aservices \u3092\u6709\u52b9\u5316<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>microk8s enable dashboard dns registry istio<\/code><\/pre><\/div>\n\n\n\n<p>\u3053\u3053\u3067\u3000microk8s enable &#8211;help\u3000\u3092\u5b9f\u884c\u3059\u308b\u3068\u5229\u7528\u53ef\u80fd\u306a\u30b5\u30fc\u30d3\u30b9\u3092\u4e00\u89a7\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u8d77\u52d5\u4e2d\u306e\u5229\u7528\u53ef\u80fd\u306a\u30b5\u30fc\u30d3\u30b9\u3092\u8868\u793a<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>microk8s kubectl get all --all-namespaces<\/code><\/pre><\/div>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>$ microk8s kubectl get all --all-namespaces\n\nNAMESPACE        NAME                                             READY   STATUS        RESTARTS   AGE\ningress          pod\/nginx-ingress-microk8s-controller-rj2vj      1\/1     Running       0          22h\nmetallb-system   pod\/speaker-bwpl7                                1\/1     Running       0          22h\nmetallb-system   pod\/speaker-g2kcl                                1\/1     Running       1          22h\ningress          pod\/nginx-ingress-microk8s-controller-dvb29      1\/1     Running       1          22h\nkube-system      pod\/calico-node-jdpsl                            1\/1     Running       1          23h\nkube-system      pod\/hostpath-provisioner-5c65fbdb4f-wlg45        1\/1     Terminating   1          22h\nkube-system      pod\/coredns-86f78bb79c-r94k8                     1\/1     Terminating   1          23h\nkube-system      pod\/hostpath-provisioner-5c65fbdb4f-6hz6n        1\/1     Running       0          10h\nkube-system      pod\/calico-node-8hqxv                            1\/1     Running       0          24h\ningress          pod\/nginx-ingress-microk8s-controller-w5qv9      1\/1     Running       0          22h\nmetallb-system   pod\/speaker-wpg4z                                1\/1     Running       0          22h\nkube-system      pod\/coredns-86f78bb79c-hl56s                     1\/1     Terminating   0          10h\nmetallb-system   pod\/controller-559b68bfd8-6nw4k                  1\/1     Running       0          10h\nmetallb-system   pod\/speaker-nrw9w                                1\/1     Running       17         22h\nkube-system      pod\/coredns-86f78bb79c-72zp4                     1\/1     Running       3          10h\nkube-system      pod\/calico-node-nk45x                            1\/1     Running       18         24h\ningress          pod\/nginx-ingress-microk8s-controller-cnpzq      1\/1     Running       15         22h\nkube-system      pod\/metrics-server-8bbfb4bdb-9kh97               1\/1     Running       0          38m\nkube-system      pod\/dashboard-metrics-scraper-6c4568dc68-vrmzl   1\/1     Running       0          36m\nkube-system      pod\/calico-kube-controllers-847c8c99d-z867h      1\/1     Running       0          33h\nkube-system      pod\/calico-node-ppczw                            1\/1     Running       0          24h\nkube-system      pod\/kubernetes-dashboard-7ffd448895-q7zkf        1\/1     Running       7          36m\n\n\nNAMESPACE     NAME                                TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE\ndefault       service\/kubernetes                  ClusterIP   10.152.183.1     &lt;none&gt;        443\/TCP                  33h\nkube-system   service\/kube-dns                    ClusterIP   10.152.183.10    &lt;none&gt;        53\/UDP,53\/TCP,9153\/TCP   23h\nkube-system   service\/metrics-server              ClusterIP   10.152.183.231   &lt;none&gt;        443\/TCP                  38m\nkube-system   service\/kubernetes-dashboard        ClusterIP   10.152.183.118   &lt;none&gt;        443\/TCP                  36m\nkube-system   service\/dashboard-metrics-scraper   ClusterIP   10.152.183.83    &lt;none&gt;        8000\/TCP                 36m\n\nNAMESPACE        NAME                                               DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                 AGE\nkube-system      daemonset.apps\/calico-node                         4         4         2       4            2           kubernetes.io\/os=linux        33h\nmetallb-system   daemonset.apps\/speaker                             2         2         2       2            2           beta.kubernetes.io\/os=linux   22h\ningress          daemonset.apps\/nginx-ingress-microk8s-controller   2         2         2       2            2           &lt;none&gt;                        22h\n\nNAMESPACE        NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE\nkube-system      deployment.apps\/hostpath-provisioner        1\/1     1            1           22h\nmetallb-system   deployment.apps\/controller                  1\/1     1            1           22h\nkube-system      deployment.apps\/calico-kube-controllers     1\/1     1            1           33h\nkube-system      deployment.apps\/coredns                     1\/1     1            1           23h\nkube-system      deployment.apps\/metrics-server              1\/1     1            1           38m\nkube-system      deployment.apps\/dashboard-metrics-scraper   1\/1     1            1           36m\nkube-system      deployment.apps\/kubernetes-dashboard        1\/1     1            1           36m\n\nNAMESPACE        NAME                                                   DESIRED   CURRENT   READY   AGE\nkube-system      replicaset.apps\/hostpath-provisioner-5c65fbdb4f        1         1         1       22h\nmetallb-system   replicaset.apps\/controller-559b68bfd8                  1         1         1       22h\nkube-system      replicaset.apps\/calico-kube-controllers-847c8c99d      1         1         1       33h\nkube-system      replicaset.apps\/coredns-86f78bb79c                     1         1         1       23h\nkube-system      replicaset.apps\/metrics-server-8bbfb4bdb               1         1         1       38m\nkube-system      replicaset.apps\/dashboard-metrics-scraper-6c4568dc68   1         1         1       36m\nkube-system      replicaset.apps\/kubernetes-dashboard-7ffd448895        1         1         1       36m<\/code><\/pre><\/div>\n\n\n\n<p>Kubernetes\u306e\u8d77\u52d5\u3068\u505c\u6b62<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>microk8s start\nor\nmicrok8s stop<\/code><\/pre><\/div>\n\n\n\n<p>\u30ce\u30fc\u30c9\u3092\u30af\u30e9\u30b9\u30bf\u30fc\u3078\u8ffd\u52a0\uff1bmicrok8s joink\uff5e\u3000\u306e\u884c\u3092Copy\u3057\u3001\u8ffd\u52a0\u3059\u308b\u30ce\u30fc\u30c9\u306e\u7aef\u672b\u3078Paste\u3057\u3066\u5b9f\u884c\u3059\u308b\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>microk8s add-node\n\n\/* \u30ce\u30fc\u30c9\u53c2\u52a0\u306b\u5fc5\u8981\u306a\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30e1\u30c3\u30bb\u30fc\u30b8 \u304c\u8868\u793a\u3055\u308c\u308b\u306e\u3067\u3001\u53c2\u52a0\u3059\u308b\u30ce\u30fc\u30c9\u3067\u3001microk8s joinjoin\u3092\u5b9f\u884c *\/\n\nJoin node with:\nmicrok8s join ip-172-31-20-243:25000\/DDOkUupkmaBezNnMheTBqFYHLWINGDbf\n\nIf the node you are adding is not reachable through the default\ninterface you can use one of the following:\n\nmicrok8s join 10.1.84.0:25000\/DDOkUupkmaBezNnMheTBqFYHLWINGDbf\nmicrok8s join 10.22.254.77:25000\/DDOkUupkmaBezNnMheTBqFYHLWINGDbf<\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\"><li>\u53c2\u52a0\u3057\u3066\u3044\u308b\u30ce\u30fc\u30c9\u306e\u8868\u793a<\/li><\/ul>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>microk8s kubectl get no<\/code><\/pre><\/div>\n\n\n\n<p>frirewall\u306e\u8a2d\u5b9a<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>sudo ufw allow in on cni0 && sudo ufw allow out on cni0\nsudo ufw default allow routed<\/code><\/pre><\/div>\n\n\n\n<p>dashboard\u306e\u5229\u7528\u3059\u308b\u306b\u306f\u3001\u30a2\u30af\u30bb\u30b9\u306e\u305f\u3081\u306e\u30c8\u30fc\u30af\u30f3\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d &quot; &quot; -f1)\nmicrok8s kubectl -n kube-system describe secret $token<\/code><\/pre><\/div>\n\n\n\n<p>\u30c8\u30fc\u30af\u30f3\u306e\u4e00\u4f8b\uff08dashboard\u3092\u30a2\u30af\u30bb\u30b9\u3057\u305f\u969b\u306b\u8981\u6c42\u3055\u308c\u308btoken\u3002Copy&amp;Paste\u3067\u30ed\u30b0\u30a4\u30f3\uff09<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>Name:         default-token-57rfp\nNamespace:    kube-system\nLabels:       &lt;none&gt;\nAnnotations:  kubernetes.io\/service-account.name: default\n              kubernetes.io\/service-account.uid: 2f782a0f-3d04-43aa-88fe-a6d67364b297\n\nType:  kubernetes.io\/service-account-token\n\nData\n====\nnamespace:  11 bytes\ntoken:      eyJhbGciOiJSUzI1NiIsImtpZCI6Im56Vm1vTVJyaXVJQzBaSnM4SS1PTWNrZTkzMlJMdFBqS0NMeFgxWnIzdWMifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLTU3cmZwIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZjc4MmEwZi0zZDA0LTQzYWEtODhmZS1hNmQ2NzM2NGIyOTciLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.EGkufnRoGONpt14vmBLAG8vF2khLtHZLx8J0VNzJUxX28z8NtSNB5MhRKCamChqXdTRm1iwyaPQIlgWwaKTci7CA9TNf8o70EmJBOO1AvDJ_QcC2mRpQzrkxcl0wiuLbpkHzC-wvuzqwY4b32utYikbUxHNjiDsOSyVmqN9NyDZ84FKRZUGkaWrgJmUNakBGetqaOPSpTAIC8JncPznYIOt88nyx6kCIrOFJjjh_UhPGMfevVNFZcji617uNTencBVrkwaej6O09wyqzjPVK-jWXhHaigaIb5O2TmjfcQJCyiEkF_6LYFGr7ilOzzpbAqw-iICmBQUW1Mred3FsN9Q\nca.crt:     1103 bytes\n\n<\/code><\/pre><\/div>\n\n\n\n<p>dashboard\u3078\u30ed\u30b0\u30a4\u30f3\u3057\u305f\u753b\u9762<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"915\" src=\"https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2021\/06\/dashboard-1024x915.png\" alt=\"\" class=\"wp-image-230\" srcset=\"https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2021\/06\/dashboard-1024x915.png 1024w, https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2021\/06\/dashboard-300x268.png 300w, https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2021\/06\/dashboard-768x686.png 768w, https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2021\/06\/dashboard-624x557.png 624w, https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2021\/06\/dashboard.png 1235w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>dashboard\u3067\u30ce\u30fc\u30c9\u306e\u72b6\u614b\u3092\u8868\u793a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"911\" src=\"https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2021\/06\/dashboard-node-1024x911.png\" alt=\"\" class=\"wp-image-232\" srcset=\"https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2021\/06\/dashboard-node-1024x911.png 1024w, https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2021\/06\/dashboard-node-300x267.png 300w, https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2021\/06\/dashboard-node-768x683.png 768w, https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2021\/06\/dashboard-node-624x555.png 624w, https:\/\/rfsec.ddns.net\/db\/wp-content\/uploads\/2021\/06\/dashboard-node.png 1236w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>pod\u306e\u8ffd\u52a0\u4f8b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"blob:https:\/\/rfsec.ddns.net\/68c32301-88c3-4c9f-b6f2-6882dc4e80e0\" alt=\"\"\/><\/figure>\n\n\n\n<p>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u904e\u7a0b\u3067\u6c17\u306b\u306a\u3063\u305f\u30ad\u30fc\u30ef\u30fc\u30c9<\/p>\n\n\n\n<p><a href=\"https:\/\/multipass.run\/\">multipass  \u3000Ubuntu\u74b0\u5883\u3078\u7c21\u5358\u306bVM\u3092\u69cb\u7bc9<\/a><\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/helm.sh\/ja\/\" target=\"_blank\">helm \u3000\u3000\u3000 Kubernetes \u7528\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/gihyo.jp\/admin\/serial\/01\/ubuntu-recipe\/0670?page=3\">WordPress \u3000Helm Chart\u306e\u30c7\u30d7\u30ed\u30a4<\/a>\u3000<\/p>\n\n\n\n<p>\uff13\u30ce\u30fc\u30c9\u4ee5\u4e0a\u306e\u69cb\u6210\u3067\u306f\u3001\u30c7\u30fc\u30bf\u30b9\u30c8\u30a2\u30fc\u304c\u30af\u30e9\u30b9\u30bf\u30fc\u5185\u3067\u8907\u88fd\u3055\u308c\u3001\uff11\u30ce\u30fc\u30c9\u6545\u969c\u306b\u5bfe\u3057\u3066\u306f\u8010\u6027\u304c\u3042\u308b\u3002<\/p>\n\n\n\n<p>From the 1.19 release of MicroK8s, HA is enabled by default. If your cluster consists of three or more nodes, the datastore will be replicated across the nodes and it will be resilient to a single failure (if one node develops a problem, workloads will continue to run without interruption).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>microk8s\u3092\u7528\u3044\u308b\u3068\u7c21\u5358\u306b\u5358\u30ce\u30fc\u30c9\u69cb\u6210\u306ekubernetes\u3092\u69cb\u7bc9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3001\u3055\u3089\u306bkubernetes\u30af\u30e9\u30b9\u30bf\u3082\u69cb\u7bc9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3088\u3046\u306a\u306e\u3067\u8a66\u3057\u3066\u307f\u308b\u3053\u3068\u306b\u3057\u307e\u3057\u305f\u3002 \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u624b\u9806\u306f\u3001microk8s [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-221","post","type-post","status-publish","format-standard","hentry","category-network"],"featured_image_src":null,"author_info":{"display_name":"mars","author_link":"https:\/\/rfsec.ddns.net\/db\/?author=1"},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rfsec.ddns.net\/db\/index.php?rest_route=\/wp\/v2\/posts\/221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rfsec.ddns.net\/db\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rfsec.ddns.net\/db\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rfsec.ddns.net\/db\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rfsec.ddns.net\/db\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=221"}],"version-history":[{"count":8,"href":"https:\/\/rfsec.ddns.net\/db\/index.php?rest_route=\/wp\/v2\/posts\/221\/revisions"}],"predecessor-version":[{"id":239,"href":"https:\/\/rfsec.ddns.net\/db\/index.php?rest_route=\/wp\/v2\/posts\/221\/revisions\/239"}],"wp:attachment":[{"href":"https:\/\/rfsec.ddns.net\/db\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rfsec.ddns.net\/db\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rfsec.ddns.net\/db\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}