{"id":36170,"date":"2023-04-01T11:31:53","date_gmt":"2023-01-31T22:14:49","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8raspberry-pi%e4%b8%8a%e9%85%8d%e7%bd%aekubernetes%e3%80%82\/"},"modified":"2024-04-29T21:27:36","modified_gmt":"2024-04-29T13:27:36","slug":"%e5%9c%a8raspberry-pi%e4%b8%8a%e9%85%8d%e7%bd%aekubernetes%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8raspberry-pi%e4%b8%8a%e9%85%8d%e7%bd%aekubernetes%e3%80%82\/","title":{"rendered":"\u5728Raspberry Pi\u4e0a\u914d\u7f6eKubernetes"},"content":{"rendered":"<p>\u56e0\u4e3aQiita\u4e0a\u6709\u4e00\u4e9b\u5173\u4e8e\u5728Raspberry Pi\u4e0a\u8bbe\u7f6ekubernetes\u7684\u6587\u7ae0\uff0c\u6240\u4ee5\u6211\u4ee5\u4e3a\u8fd9\u5f88\u5bb9\u6613\uff0c\u4f46\u5b9e\u9645\u4e0a\u975e\u5e38\u56f0\u96be\uff0c\u6240\u4ee5\u6211\u6253\u7b97\u8bb0\u5f55\u4e0b\u6765\uff0c\u5305\u62ec\u5907\u5fd8\u5f55\u3002<\/p>\n<h1>\u524d\u63d0<\/h1>\n<p>\u672c\u6b21\u4f7f\u7528\u4e86Raspberry Pi 3B+\u548c2018\/06\/27\u7248\u7684raspbian-strech-lite\u3002\u5728\u6b64\u7701\u7565\u4e86Raspberry Pi\u7684\u8bbe\u7f6e\u6b65\u9aa4\u3002<br \/>\nKubernetes\u7684\u521d\u59cb\u5316\u8bbe\u7f6e\u662f\u4f7f\u7528kubeadm init\u547d\u4ee4\u8fdb\u884c\u7684\u3002<br \/>\n\u9664\u975e\u660e\u786e\u6307\u660e\uff0c\u5426\u5219\u6587\u7ae0\u4e2d\u7684\u64cd\u4f5c\u90fd\u662f\u4f7f\u7528pi\u7528\u6237\u8fdb\u884c\u7684\u3002<\/p>\n<h1>\u8fdb\u884c\u8bbe\u7f6e<\/h1>\n<p>\u4f5c\u4e3a\u6b65\u9aa4\u6765\u8bf4<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">docker\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">kubeadm\u3092\u4f7f\u3048\u308b\u3088\u3046\u306b\u3059\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">kubernetes\u74b0\u5883\u306e\u521d\u671f\u5316<\/ul>\n<p>\u4e0b\u9762\u662f\u4e00\u79cd\u7ffb\u8bd1\u65b9\u5f0f\uff1a<br \/>\n\u90bb\u8fd1\u3002<\/p>\n<h2>\u5b89\u88c5Docker<\/h2>\n<p>\u6309\u7167\u5b98\u65b9\u6307\u5357\u8fdb\u884cDocker\u7684\u5b89\u88c5\u3002\u8bf7\u53c2\u8003\u4ee5\u4e0b\u8be6\u7ec6\u6b65\u9aa4\u8fdb\u884c\u5b89\u88c5\u3002\u672c\u6b21\u5b89\u88c5\u65f6\u4f7f\u7528\u7684Docker\u7248\u672c\u4e3a18.06.1-ce\u3002<\/p>\n<pre class=\"post-pre\"><code>$ sudo apt-get install software-properties-common\r\n$ curl -fsSL https:\/\/download.docker.com\/linux\/raspbian\/gpg | sudo apt-key add -\r\n$ echo \"deb [arch=armhf] https:\/\/download.docker.com\/linux\/raspbian stretch stable\" |  sudo tee \/etc\/apt\/sources.list.d\/docker.list\r\n$ sudo apt-get update\r\n$ sudo apt-get install docker-ce\r\n<\/code><\/pre>\n<h2>\u4f7fkubeadm\u53ef\u7528<\/h2>\n<p>\u5b89\u88c5kubeadm\u3001kubectl\u548ckubelet\u3002<br \/>\n\u53c2\u8003\u5b98\u65b9\u6b65\u9aa4\u3002<br \/>\n\u7531\u4e8e\u5728\u64b0\u5199\u65f6\u51fa\u73b0\u4e86\u4e00\u4e9b\u65e0\u6cd5\u6b63\u5e38\u8fd0\u884c\u7684\u95ee\u9898\uff0c\u6211\u4eec\u5c06\u56fa\u5b9a\u5728v1.11.3\u7248\u672c\u3002<\/p>\n<pre class=\"post-pre\"><code>$ curl -fsSL https:\/\/packages.cloud.google.com\/apt\/doc\/apt-key.gpg | sudo apt-key add -\r\n$ echo \"deb https:\/\/apt.kubernetes.io\/ kubernetes-xenial main\" | sudo tee \/etc\/apt\/sources.list.d\/kubernetes.list\r\n$ sudo apt-get update\r\n$ sudo apt-get install kubelet=1.11.3-00 kubeadm=1.11.3-00 kubectl=1.11.3-00\r\n<\/code><\/pre>\n<p>\u7531\u4e8e\u5c1d\u8bd5\u76f4\u63a5\u6267\u884c\u8be5\u547d\u4ee4\u4f1a\u5bfc\u81f4\u9519\u8bef\uff0c\u56e0\u6b64\u6211\u4eec\u9700\u8981\u8fdb\u884ccgroup\u548cswap\u7684\u8bbe\u7f6e\u3002<br \/>\ncgroup\u7684\u8bbe\u7f6e\u662f\u5728\/boot\/cmdline.txt\u6587\u4ef6\u4e2d\u6dfb\u52a0cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1\u3002<br \/>\nswap\u7684\u8bbe\u7f6e\u662f\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code>$ sudo dphys-swapfile swapoff\r\n$ sudo dphys-swapfile uninstall\r\n$ sudo update-rc.d dphys-swapfile remove\r\n<\/code><\/pre>\n<p>\u7531\u4e8e\u5185\u6838\u542f\u52a8\u9009\u9879\u7684\u66f4\u6539\uff0c\u5efa\u8bae\u91cd\u65b0\u542f\u52a8\u3002<\/p>\n<h3>\u5361\u5e03ernetes\u4e3b\u8282\u70b9\u521d\u59cb\u5316\u9047\u5230\u56f0\u96be\u3002<\/h3>\n<p>\u5728\u8fd9\u91cc\u6309\u7167\u5b98\u65b9\u6b65\u9aa4\u8fdb\u884c\uff0c\u4f7f\u7528kubeadm init\u6765\u521d\u59cb\u5316\u4e3b\u8282\u70b9\u3002<br \/>\n\u4e3a\u4e86\u4f7f\u7528flannel\uff0c\u53ea\u4f7f\u7528&#8211;pod-network-cidr=10.244.0.0\/16\u9009\u9879\u3002<br \/>\n\u6211\u8bd5\u8fc7\u4e86&#8230;<\/p>\n<pre class=\"post-pre\"><code>$ sudo kubeadm init --pod-network-cidr=10.244.0.0\/16\r\n[init] using Kubernetes version: v1.11.3\r\n[preflight] running pre-flight checks\r\nI0918 03:00:29.587034     789 kernel_validator.go:81] Validating kernel version\r\nI0918 03:00:29.587889     789 kernel_validator.go:96] Validating kernel config\r\n        [WARNING SystemVerification]: docker version is greater than the most recently validated version. Docker version: 18.06.1-ce. Max validated version: 17.03\r\n[preflight\/images] Pulling images required for setting up a Kubernetes cluster\r\n[preflight\/images] This might take a minute or two, depending on the speed of your internet connection\r\n[preflight\/images] You can also perform this action in beforehand using 'kubeadm config images pull'\r\n[kubelet] Writing kubelet environment file with flags to file \"\/var\/lib\/kubelet\/kubeadm-flags.env\"\r\n[kubelet] Writing kubelet configuration to file \"\/var\/lib\/kubelet\/config.yaml\"\r\n[preflight] Activating the kubelet service\r\n[certificates] Generated ca certificate and key.\r\n[certificates] Generated apiserver certificate and key.\r\n[certificates] apiserver serving cert is signed for DNS names [vpod1 kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 192.168.0.xx]\r\n[certificates] Generated apiserver-kubelet-client certificate and key.\r\n[certificates] Generated sa key and public key.\r\n[certificates] Generated front-proxy-ca certificate and key.\r\n[certificates] Generated front-proxy-client certificate and key.\r\n[certificates] Generated etcd\/ca certificate and key.\r\n[certificates] Generated etcd\/server certificate and key.\r\n[certificates] etcd\/server serving cert is signed for DNS names [vpod1 localhost] and IPs [127.0.0.1 ::1]\r\n[certificates] Generated etcd\/peer certificate and key.\r\n[certificates] etcd\/peer serving cert is signed for DNS names [vpod1 localhost] and IPs [192.168.0.xx 127.0.0.1 ::1]\r\n[certificates] Generated etcd\/healthcheck-client certificate and key.\r\n[certificates] Generated apiserver-etcd-client certificate and key.\r\n[certificates] valid certificates and keys now exist in \"\/etc\/kubernetes\/pki\"\r\n[kubeconfig] Wrote KubeConfig file to disk: \"\/etc\/kubernetes\/admin.conf\"\r\n[kubeconfig] Wrote KubeConfig file to disk: \"\/etc\/kubernetes\/kubelet.conf\"\r\n[kubeconfig] Wrote KubeConfig file to disk: \"\/etc\/kubernetes\/controller-manager.conf\"\r\n[kubeconfig] Wrote KubeConfig file to disk: \"\/etc\/kubernetes\/scheduler.conf\"\r\n[controlplane] wrote Static Pod manifest for component kube-apiserver to \"\/etc\/kubernetes\/manifests\/kube-apiserver.yaml\"\r\n[controlplane] wrote Static Pod manifest for component kube-controller-manager to \"\/etc\/kubernetes\/manifests\/kube-controller-manager.yaml\"\r\n[controlplane] wrote Static Pod manifest for component kube-scheduler to \"\/etc\/kubernetes\/manifests\/kube-scheduler.yaml\"\r\n[etcd] Wrote Static Pod manifest for a local etcd instance to \"\/etc\/kubernetes\/manifests\/etcd.yaml\"\r\n[init] waiting for the kubelet to boot up the control plane as Static Pods from directory \"\/etc\/kubernetes\/manifests\"\r\n[init] this might take a minute or longer if the control plane images have to be pulled\r\n\r\n                Unfortunately, an error has occurred:\r\n                        timed out waiting for the condition\r\n\r\n                This error is likely caused by:\r\n                        - The kubelet is not running\r\n                        - The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)\r\n                        - No internet connection is available so the kubelet cannot pull or find the following control plane images:\r\n                                - k8s.gcr.io\/kube-apiserver-arm:v1.11.3\r\n                                - k8s.gcr.io\/kube-controller-manager-arm:v1.11.3\r\n                                - k8s.gcr.io\/kube-scheduler-arm:v1.11.3\r\n                                - k8s.gcr.io\/etcd-arm:3.2.18\r\n                                - You can check or miligate this in beforehand with \"kubeadm config images pull\" to make sure the images\r\n                                  are downloaded locally and cached.\r\n\r\n                If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands:\r\n                        - 'systemctl status kubelet'\r\n                        - 'journalctl -xeu kubelet'\r\n\r\n                Additionally, a control plane component may have crashed or exited when started by the container runtime.\r\n                To troubleshoot, list all containers using your preferred container runtimes CLI, e.g. docker.\r\n                Here is one example how you may list all Kubernetes containers running in docker:\r\n                        - 'docker ps -a | grep kube | grep -v pause'\r\n                        Once you have found the failing container, you can inspect its logs with:\r\n                        - 'docker logs CONTAINERID'\r\ncouldn't initialize a Kubernetes cluster\r\n<\/code><\/pre>\n<p>\u6211\u5931\u8d25\u4e86\u3002<\/p>\n<h4>apiserver\u7684\u91cd\u65b0\u542f\u52a8\u95ee\u9898<\/h4>\n<p>\u6309\u7167\u4f60\u6240\u8bf4\u7684\uff0c\u6211\u68c0\u67e5\u4e86&#8221;systemctl status kubelet&#8221;\uff0c\u5b83\u5904\u4e8e\u6d3b\u52a8\u72b6\u6001\u4e14\u6ca1\u6709\u95ee\u9898\u3002<br \/>\n\u5f53\u6211\u68c0\u67e5 &#8220;docker ps -a | grep kube | grep -v pause&#8221; \u65f6\uff0c\u4f3c\u4e4ekube-apiserver\u4f1a\u5728\u51e0\u5206\u949f\u5185\u5d29\u6e83\u5e76\u91cd\u65b0\u542f\u52a8\u3002<br \/>\n\u6682\u4e14\u4e0d\u7ba1\uff0c\u6211\u5fc5\u987b\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff0c\u4f46\u8d77\u521d\u4e0d\u77e5\u9053\u539f\u56e0\u3002\u6240\u4ee5\u6211\u5c1d\u8bd5\u7528&#8221;kubeadm init -v 10&#8243;\u6765\u8c03\u67e5\u4e00\u4e0b\u60c5\u51b5\u3002\u7ed3\u679c\u770b\u8d77\u6765\u4f3c\u4e4e\u662f\u56e0\u4e3a\u5c1d\u8bd5\u8fdb\u884c\u5065\u5eb7\u68c0\u67e5\u65f6\u8d85\u65f6\u4e86\u3002<br \/>\n\u6211\u641c\u7d22\u4e86\u4e00\u4e0b\uff0c\u4f3c\u4e4e\u5728\u8fd9\u91cc\u627e\u5230\u4e86\u53ef\u80fd\u76f8\u5173\u7684bug\u3002\u56e0\u6b64\uff0c\u901a\u8fc7\u5728\u53e6\u4e00\u4e2a\u7ec8\u7aef\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u6765\u7ed5\u8fc7\u4e86\u4ece\u4e0a\u8ff0\u65e5\u5fd7\u4e2d\u8f93\u51fa\u7684&#8221;[controlplane] wrote Static Pod manifest for component kube-scheduler to &#8220;\/etc\/kubernetes\/manifests\/kube-scheduler.yaml&#8221;\u4e4b\u540e\u5230apiserver\u542f\u52a8\u7684\u65f6\u95f4\u6bb5\u7684\u95ee\u9898\u3002<\/p>\n<pre class=\"post-pre\"><code>$ sudo sed -i 's\/initialDelaySeconds: 15\/initialDelaySeconds: 300\/g' \/etc\/kubernetes\/manifests\/kube-apiserver.yaml\r\n<\/code><\/pre>\n<p>\u8fd9\u6837\u4e00\u6765\uff0capiserver\u4e0d\u518d\u5d29\u6e83\u4e86\uff0c\u6211\u8fd8\u4ee5\u4e3a\u8bbe\u7f6e\u5df2\u7ecf\u5b8c\u6210\u4e86&#8230;\u4f46\u6ca1\u60f3\u5230\uff0c\u5b83\u53c8\u4ee5\u540c\u6837\u7684\u65b9\u5f0f\u505c\u6b62\u4e86\u3002<\/p>\n<h4>kubeadm init\u7684\u5065\u5eb7\u68c0\u67e5\u901f\u5ea6\u8fc7\u5feb\u7684\u95ee\u9898\u3002<\/h4>\n<p>\u6211\u518d\u6b21\u5c1d\u8bd5\u4f7f\u7528 kubeadm init -v 10 \u547d\u4ee4\u8fdb\u884c\u63a2\u6d4b\uff0c\u4f46\u5065\u5eb7\u68c0\u67e5\u4ecd\u7136\u8d85\u65f6\u3002\u6211\u5c1d\u8bd5\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u8fdb\u884c\u5065\u5eb7\u68c0\u67e5\uff1acurl -k -v -XGET -H &#8220;Accept: application\/json, *\/*&#8221; -H &#8220;User-Agent: kubeadm\/v0.0.0 (linux\/arm) kubernetes\/$Format&#8221; &#8216;https:\/\/192.168.0.xx:6443\/healthz?timeout=32s&#8217;\uff0c\u4f46\u76f4\u5230\u7a33\u5b9a\u54cd\u5e94\u4e3a\u6b62\uff0c\u5927\u7ea6\u82b1\u4e8610\u5206\u949f\u7684\u65f6\u95f4\u3002\u770b\u6765 kubeadm init \u4e0d\u4f1a\u7b49\u5f85\u90a3\u4e48\u4e45\u3002\u8001\u5b9e\u8bf4\uff0c\u6211\u771f\u7684\u4e0d\u77e5\u9053\u8be5\u600e\u4e48\u529e\u4e86\u3002<\/p>\n<p>\u4f5c\u4e3a\u6700\u540e\u7684\u624b\u6bb5\uff0c\u6211\u4eec\u51b3\u5b9a\u5bf9kubeadm\u547d\u4ee4\u8fdb\u884c\u4fee\u6539\u3002<br \/>\n\u6682\u65f6\u5148\u83b7\u53d6\u6e90\u4ee3\u7801\u6811\u3002<\/p>\n<pre class=\"post-pre\"><code>$ git clone https:\/\/github.com\/kubernetes\/kubernetes.git\r\n$ cd kubernetes\r\n$ git checkout remotes\/origin\/release-1.11\r\n<\/code><\/pre>\n<p>kubeadm\u547d\u4ee4\u7684\u6e90\u4ee3\u7801\u4f4d\u4e8ecmd\/kubeadm\u76ee\u5f55\u4e0b\u3002<br \/>\n\u8fd9\u6b21\u6211\u4eec\u5728\u5176\u4e2d\u7684app\/cmd\/init.go\u6587\u4ef6\u7684\u7b2c400\u884c\u5b9e\u65bd\u4e86\u4e00\u4e2a\u5f3a\u884c\u8ba9\u5176\u4f11\u772010\u5206\u949f\u7684\u7b28\u62d9\u65b9\u6cd5\u3002\u5e94\u8be5\u6709\u66f4\u597d\u7684\u89e3\u51b3\u529e\u6cd5\uff0c\u6240\u4ee5\u597d\u5b69\u5b50\u4eec\u4e0d\u8981\u6a21\u4eff\u54e6\u3002<\/p>\n<pre class=\"post-pre\"><code>--- init.go.bak 2018-09-22 12:10:02.029874009 +0900\r\n+++ init.go     2018-09-22 09:47:08.546241353 +0900\r\n@@ -396,6 +396,10 @@ func (i *Init) Run(out io.Writer) error\r\n        fmt.Printf(\"[init] waiting for the kubelet to boot up the control plane as Static Pods from directory %q \\n\", kubeadmconstants.GetStaticPodDirectory())\r\n        fmt.Println(\"[init] this might take a minute or longer if the control plane images have to be pulled\")\r\n\r\n+       \/\/\r\n+       fmt.Println(\"[init] sleep...\")\r\n+       time.Sleep(600*time.Second)\r\n+\r\n        if err := waitForKubeletAndFunc(waiter, waiter.WaitForAPI); err != nil {\r\n                ctx := map[string]string{\r\n                        \"Error\":                  fmt.Sprintf(\"%v\", err),\r\n<\/code><\/pre>\n<p>\u4fee\u6539\u6587\u4ef6\u540e\uff0c\u5c06\u91cd\u65b0\u521b\u5efakubeadm\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code>$ hack\/run-in-gopath.sh bash --norc --noprofile\r\n$ cd cmd\/kubeadm\/\r\n$ go build kubeadm.go\r\n<\/code><\/pre>\n<p>\u7528\u8fd9\u4e2a\u65b9\u6cd5\u6d6a\u8d39\u4e8610\u5206\u949f\u65f6\u95f4\u7684kubeadm\u5df2\u7ecf\u51c6\u5907\u597d\u4e86\u3002<br \/>\n\u73b0\u5728\u6211\u4eec\u5c06\u518d\u6b21\u4f7f\u7528sudo .\/kubeadm init &#8211;pod-network-cidr=10.244.0.0\/16 -v 10\u6765\u8fdb\u884c\u64cd\u4f5c\u3002\u4e0d\u8981\u5fd8\u8bb0\u5728\u8fc7\u7a0b\u4e2d\u7f16\u8f91kube-apiserver.yaml\u3002<br \/>\n\u7ecf\u8fc7\u8fd9\u4e9b\u6b65\u9aa4\uff0c\u521d\u59cb\u5316\u7ec8\u4e8e\u5b8c\u6210\u4e86\u3002<\/p>\n<h2>\u8ba9\u60a8\u53ef\u4ee5\u4f7f\u7528kubectl<\/h2>\n<p>\u5982\u679c kubeadm init \u6210\u529f\u7684\u8bdd\uff0c\u5e94\u8be5\u4f1a\u663e\u793a\u540e\u7eed\u9700\u8981\u6267\u884c\u7684\u4efb\u52a1\uff0c\u7136\u540e\u76f4\u63a5\u6267\u884c\u5373\u53ef\u3002<\/p>\n<pre class=\"post-pre\"><code>$ mkdir -p $HOME\/.kube\r\n$ sudo cp -i \/etc\/kubernetes\/admin.conf $HOME\/.kube\/config\r\n$ sudo chown $(id -u):$(id -g) $HOME\/.kube\/config\r\n<\/code><\/pre>\n<p>\u968f\u540e\uff0c<\/p>\n<pre class=\"post-pre\"><code>$ kubectl get node\r\nNAME      STATUS     ROLES     AGE       VERSION\r\nhoge      NotReady   master    35m       v1.11.3\r\n<\/code><\/pre>\n<p>\u5982\u679c\u80fd\u591f\u50cf\u8fd9\u6837\uff0c\u597d\u50cf\u5c31\u6ca1\u6709\u95ee\u9898\u4e86\u3002<\/p>\n<h2>\u6cd5\u5170\u7ed2\u8865\u5145\u7684\u989d\u5916\u90e8\u5206<\/h2>\n<p>\u7531\u4e8e\u5728\u8fd9\u4e2a\u8bbe\u7f6e\u8fc7\u7a0b\u4e2d\u4f7f\u7528\u7684\u662fARM\u7248\uff0c\u5c3d\u7ba1\u516c\u5f0f\u4e2d\u4e5f\u6709\u8fd9\u90e8\u5206\u8bf4\u660e\uff0c\u6211\u4eec\u5c06\u6309\u7167\u4ee5\u4e0b\u6b65\u9aa4\u8fdb\u884c\u3002<\/p>\n<pre class=\"post-pre\"><code> $ kubectl apply -f https:\/\/raw.githubusercontent.com\/coreos\/flannel\/c5d10c8\/Documentation\/kube-flannel.yml\r\n<\/code><\/pre>\n<p>\u7b49\u5f85\u4e86\u51e0\u5206\u949f\u540e\uff0c\u7ec8\u4e8e\u5f00\u59cb\u52a8\u4e86\u3002<\/p>\n<pre class=\"post-pre\"><code>$ kubectl get po -n kube-system\r\nNAME                            READY     STATUS    RESTARTS   AGE\r\ncoredns-78fcdf6894-n8hq5        1\/1       Running   0          46m\r\ncoredns-78fcdf6894-srq7x        1\/1       Running   0          46m\r\netcd-cpod5                      1\/1       Running   1          50m\r\nkube-apiserver-hoge             1\/1       Running   0          50m\r\nkube-controller-manager-hoge    1\/1       Running   2          50m\r\nkube-flannel-ds-arm-pdzmd       1\/1       Running   0          11m\r\nkube-proxy-lmv6v                1\/1       Running   0          46m\r\nkube-scheduler-hoge             1\/1       Running   1          50m\r\n$ kubectl get node\r\nNAME      STATUS    ROLES     AGE       VERSION\r\nhoge      Ready     master    52m       v1.11.3\r\n<\/code><\/pre>\n<h1>\u4eca\u5f8c<\/h1>\n<p>\u66ab\u6642\u5728Raspberry Pi\u4e0a\u6210\u529f\u555f\u52d5\u4e86\u4e3b\u7bc0\u9ede\u3002<br \/>\n\u6211\u5011\u5c07\u7e7c\u7e8c\u9a57\u8b49\u7bc0\u9ede\u7684\u65b0\u589e\u4ee5\u53ca\u61c9\u7528\u7a0b\u5f0f\u7684\u90e8\u7f72\uff0c\u78ba\u4fdd\u5176\u6b63\u5e38\u904b\u4f5c\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u56e0\u4e3aQiita\u4e0a\u6709\u4e00\u4e9b\u5173\u4e8e\u5728Raspberry Pi\u4e0a\u8bbe\u7f6ekubernetes\u7684\u6587\u7ae0\uff0c\u6240\u4ee5\u6211\u4ee5\u4e3a\u8fd9\u5f88\u5bb9\u6613\uff0c\u4f46\u5b9e [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-36170","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u5728Raspberry Pi\u4e0a\u914d\u7f6eKubernetes - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5728raspberry-pi\u4e0a\u914d\u7f6ekubernetes\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5728Raspberry Pi\u4e0a\u914d\u7f6eKubernetes\" \/>\n<meta property=\"og:description\" content=\"\u56e0\u4e3aQiita\u4e0a\u6709\u4e00\u4e9b\u5173\u4e8e\u5728Raspberry Pi\u4e0a\u8bbe\u7f6ekubernetes\u7684\u6587\u7ae0\uff0c\u6240\u4ee5\u6211\u4ee5\u4e3a\u8fd9\u5f88\u5bb9\u6613\uff0c\u4f46\u5b9e [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5728raspberry-pi\u4e0a\u914d\u7f6ekubernetes\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-01-31T22:14:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-29T13:27:36+00:00\" \/>\n<meta name=\"author\" content=\"\u9038, \u79d1\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u9038, \u79d1\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8raspberry-pi%e4%b8%8a%e9%85%8d%e7%bd%aekubernetes%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8raspberry-pi%e4%b8%8a%e9%85%8d%e7%bd%aekubernetes%e3%80%82\/\",\"name\":\"\u5728Raspberry Pi\u4e0a\u914d\u7f6eKubernetes - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-01-31T22:14:49+00:00\",\"dateModified\":\"2024-04-29T13:27:36+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8raspberry-pi%e4%b8%8a%e9%85%8d%e7%bd%aekubernetes%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8raspberry-pi%e4%b8%8a%e9%85%8d%e7%bd%aekubernetes%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8raspberry-pi%e4%b8%8a%e9%85%8d%e7%bd%aekubernetes%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5728Raspberry Pi\u4e0a\u914d\u7f6eKubernetes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487\",\"name\":\"\u9038, \u79d1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g\",\"caption\":\"\u9038, \u79d1\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keyi\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8raspberry-pi%e4%b8%8a%e9%85%8d%e7%bd%aekubernetes%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u5728Raspberry Pi\u4e0a\u914d\u7f6eKubernetes - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u5728raspberry-pi\u4e0a\u914d\u7f6ekubernetes\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5728Raspberry Pi\u4e0a\u914d\u7f6eKubernetes","og_description":"\u56e0\u4e3aQiita\u4e0a\u6709\u4e00\u4e9b\u5173\u4e8e\u5728Raspberry Pi\u4e0a\u8bbe\u7f6ekubernetes\u7684\u6587\u7ae0\uff0c\u6240\u4ee5\u6211\u4ee5\u4e3a\u8fd9\u5f88\u5bb9\u6613\uff0c\u4f46\u5b9e [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u5728raspberry-pi\u4e0a\u914d\u7f6ekubernetes\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-01-31T22:14:49+00:00","article_modified_time":"2024-04-29T13:27:36+00:00","author":"\u9038, \u79d1","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u9038, \u79d1","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"5 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8raspberry-pi%e4%b8%8a%e9%85%8d%e7%bd%aekubernetes%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8raspberry-pi%e4%b8%8a%e9%85%8d%e7%bd%aekubernetes%e3%80%82\/","name":"\u5728Raspberry Pi\u4e0a\u914d\u7f6eKubernetes - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-01-31T22:14:49+00:00","dateModified":"2024-04-29T13:27:36+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8raspberry-pi%e4%b8%8a%e9%85%8d%e7%bd%aekubernetes%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8raspberry-pi%e4%b8%8a%e9%85%8d%e7%bd%aekubernetes%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8raspberry-pi%e4%b8%8a%e9%85%8d%e7%bd%aekubernetes%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u5728Raspberry Pi\u4e0a\u914d\u7f6eKubernetes"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/85c1dae56e6ea1e695c73d33c684d487","name":"\u9038, \u79d1","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c94f6d9cbbfbca863fab309840bd690c153c95f8490c290ad2ed54dd693dad16?s=96&d=mm&r=g","caption":"\u9038, \u79d1"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keyi\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%9c%a8raspberry-pi%e4%b8%8a%e9%85%8d%e7%bd%aekubernetes%e3%80%82\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36170","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=36170"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36170\/revisions"}],"predecessor-version":[{"id":87739,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36170\/revisions\/87739"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=36170"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=36170"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=36170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}