日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于Docker本地运行k8s(单节点)

發布時間:2025/1/21 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于Docker本地运行k8s(单节点) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基于Docker本地運行Kubernetes

概覽

下面的指引將高速你如何通過Docker創建一個單機、單節點的Kubernetes集群。

下圖是最終的結果:

先決條件

  • 你必須擁有一臺安裝有Docker的機器。

  • 你的內核必須支持 memory and swap accounting 。確認你的linux內核開啟了如下配置:

  • CONFIG_RESOURCE_COUNTERS=y CONFIG_MEMCG=y CONFIG_MEMCG_SWAP=y CONFIG_MEMCG_SWAP_ENABLED=y CONFIG_MEMCG_KMEM=y
  • 以命令行參數方式,在內核啟動時開啟 memory and swap accounting 選項:
  • GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

    注意:以上只適用于GRUB2。通過查看/proc/cmdline可以確認命令行參數是否已經成功

    傳給內核:

    $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

    測試

    此時你應該已經運行起了一個Kubernetes集群。你可以下載kubectl二進制程序進行測試:

    (OS X) (linux)

    注意: 再OS/X上你需要通過ssh設置端口轉發:

    boot2docker ssh -L8080:localhost:8080

    列出集群中的節點:

    kubectl get nodes

    應該輸出以下內容:

    NAME LABELS STATUS 127.0.0.1 Ready

    如果你運行了不同的Kubernetes集群,你可能需要指定 -s http://localhost:8080 選項來訪問本地集群。

    運行一個應用

    kubectl -s http://localhost:8080 run nginx --image=nginx --port=80

    運行 docker ps 你應該就能看到nginx在運行。下載鏡像可能需要等待幾分鐘。

    暴露為service

    kubectl expose rc nginx --port=80

    運行以下命令來獲取剛才創建的service的IP地址。有兩個IP,第一個是內部的

    (CLUSTER_IP),第二個是外部的負載均衡IP。

    kubectl get svc nginx

    同樣你也可以通過運行以下命令只獲取第一個IP(CLUSTER_IP):

    kubectl get svc nginx --template={{.spec.clusterIP}}

    通過第一個IP(CLUSTER_IP)訪問服務:

    curl <insert-cluster-ip-here>

    注意如果再OSX上需要再boot2docker虛擬機上運行curl。

    關于關閉集群的說明

    上面的各種容器都是運行在 kubelet 程序的管理下,它會保證容器一直運行,甚至容器意外退出時也不例外。所以,如果想關閉集群,你需要首先關閉 kubelet 容器,再關閉其他。

    可以使用 docker kill $(docker ps -aq) 。注意這樣會關閉Docker下運行的所有容器,請謹慎使用。

    參考鏈接:

    https://www.kubernetes.org.cn/doc-5

    總結

    以上是生活随笔為你收集整理的基于Docker本地运行k8s(单节点)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。