基于Docker本地运行k8s(单节点)
基于Docker本地運行Kubernetes
概覽
下面的指引將高速你如何通過Docker創(chuàng)建一個單機、單節(jié)點的Kubernetes集群。
下圖是最終的結(jié)果:
先決條件
你必須擁有一臺安裝有Docker的機器。
你的內(nèi)核必須支持 memory and swap accounting 。確認你的linux內(nèi)核開啟了如下配置:
注意:以上只適用于GRUB2。通過查看/proc/cmdline可以確認命令行參數(shù)是否已經(jīng)成功
傳給內(nèi)核:
$cat /proc/cmdline BOOT_IMAGE=/boot/vmlinuz-3.18.4-aufs root=/dev/sda5 ro cgroup_enable=memory swapaccount=1第一步:運行Etcd
docker run --net=host -d gcr.io/google_containers/etcd:2.0.12 /usr/local/bin/etcd --addr=127.0.0.1:4001 --bind-addr=0.0.0.0:4001 --data-dir=/var/etcd/data第二步:啟動master
docker run \--volume=/:/rootfs:ro \--volume=/sys:/sys:ro \--volume=/dev:/dev \--volume=/var/lib/docker/:/var/lib/docker:ro \--volume=/var/lib/kubelet/:/var/lib/kubelet:rw \--volume=/var/run:/var/run:rw \--net=host \--pid=host \--privileged=true \-d \gcr.io/google_containers/hyperkube:v1.0.1 \/hyperkube kubelet --containerized --hostname-override="127.0.0.1" --address="0.0.0.0" --api-servers=http://localhost:8080 --config=/etc/kubernetes/manifests這一步實際上運行的是 kubelet ,并啟動了一個包含其他master組件的[pod](…/userguide/pods.md)。
第三步:運行service proxy
docker run -d --net=host --privileged gcr.io/google_containers/hyperkube:v1.0.1 /hyperkube proxy --master=http://127.0.0.1:8080 --v=2測試
此時你應(yīng)該已經(jīng)運行起了一個Kubernetes集群。你可以下載kubectl二進制程序進行測試:
(OS X) (linux)注意: 再OS/X上你需要通過ssh設(shè)置端口轉(zhuǎn)發(fā):
boot2docker ssh -L8080:localhost:8080列出集群中的節(jié)點:
kubectl get nodes應(yīng)該輸出以下內(nèi)容:
NAME LABELS STATUS 127.0.0.1 Ready如果你運行了不同的Kubernetes集群,你可能需要指定 -s http://localhost:8080 選項來訪問本地集群。
運行一個應(yīng)用
kubectl -s http://localhost:8080 run nginx --image=nginx --port=80運行 docker ps 你應(yīng)該就能看到nginx在運行。下載鏡像可能需要等待幾分鐘。
暴露為service
kubectl expose rc nginx --port=80運行以下命令來獲取剛才創(chuàng)建的service的IP地址。有兩個IP,第一個是內(nèi)部的
(CLUSTER_IP),第二個是外部的負載均衡IP。
kubectl get svc nginx同樣你也可以通過運行以下命令只獲取第一個IP(CLUSTER_IP):
kubectl get svc nginx --template={{.spec.clusterIP}}通過第一個IP(CLUSTER_IP)訪問服務(wù):
curl <insert-cluster-ip-here>注意如果再OSX上需要再boot2docker虛擬機上運行curl。
關(guān)于關(guān)閉集群的說明
上面的各種容器都是運行在 kubelet 程序的管理下,它會保證容器一直運行,甚至容器意外退出時也不例外。所以,如果想關(guān)閉集群,你需要首先關(guān)閉 kubelet 容器,再關(guān)閉其他。
可以使用 docker kill $(docker ps -aq) 。注意這樣會關(guān)閉Docker下運行的所有容器,請謹慎使用。
參考鏈接:
https://www.kubernetes.org.cn/doc-5
總結(jié)
以上是生活随笔為你收集整理的基于Docker本地运行k8s(单节点)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ClickHouse数据分析列式数据库概
- 下一篇: k8s ConfigMap使用示例:以v