基於Docker本地執行k8s(單節點)

2021-10-18 20:22:55 字數 2838 閱讀 3668

下面的指引將高速你如何通過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

這一步實際上執行的是 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= --v=2
(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
kubectl expose rc nginx --port=80
執行以下命令來獲取剛才建立的service的ip位址。有兩個ip,第乙個是內部的

(cluster_ip),第二個是外部的負載均衡ip。

kubectl get svc nginx
同樣你也可以通過執行以下命令只獲取第乙個ip(cluster_ip):

kubectl get svc nginx --template=}
通過第乙個ip(cluster_ip)訪問服務:

curl
注意如果再osx上需要再boot2docker虛擬機器上執行curl。

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

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

k8s集群部署 docker部署k8s安裝篇

1 安裝docker 緊接著配置乙個穩定 stable 的倉庫 倉庫配置會儲存到 etc yum.repos.d docker ce.repo檔案中 yum config manager add repo 更新yum安裝的相關docke軟體包 安裝docker ce yum update y yum...

k8s 執行應用

kubect建立deployment deployment 建立replicaset 根據replicaset 建立pod 命名方式 relicaset 的命名方式 deployment名稱 隨機數 pod命名方式 relicaset 隨機數 1 通過kubetcl 建立 kubectl run n...

k8s本地環境搭建

提前安裝docker,學習使用絕大部分的場景使用的是docker驅動,而且k8s學習與docker相一致。不要使用docker desktop for mac windows 中的 k8s,其安裝配置在國內 因為網路問題 是乙個天坑,浪費時間生命,還會搞的docker下一堆映象和容器,影響docke...