K8S

https://kubernetes.io/zh/docs/tutorials/kubernetes-basics/

https://www.kubernetes.org.cn/k8s

啟動minikube(https://github.com/AliyunContainerService/minikube)

https://developer.aliyun.com/article/221687

```

minikube version

minikube start

minikube status

minikube dashboard

kubectl version

kubectl cluster-info

kubectl get nodes

```

Deployment為Pod和ReplicaSet提供了一個聲明式定義(declarative)方法

* 定義Deployment來創(chuàng)建Pod和ReplicaSet

* 滾動升級和回滾應用

* 擴容和縮容

* 暫停和繼續(xù)Deployment

```

kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4

kubectl get deployments

kubectl expose deployment hello-node --type=NodePort --port=8080

minikube service hello-node --url

kubectl delete services hello-node

kubectl delete deployment hello-node

kubectl get pods

kubectl get events

kubectl config view

```

Service服務總體上抽象了對Pod的訪問

默認情況下,Pod 只能通過 Kubernetes 集群中的內部 IP 地址訪問宾巍。 要使得?hello-node?容器可以從 Kubernetes 虛擬網絡的外部訪問咕幻,你必須將 Pod 暴露為 Kubernetes?Service

```

kubectl expose deployment hello-node --type=LoadBalancer --port=8080

kubectl get services

minikube service hello-node

```

Minikube 有一組內置的?插件顶霞, 可以在本地 Kubernetes 環(huán)境中啟用肄程、禁用和打開。

```

minikube addons list

minikube addons enable metrics-server

kubectl get pod,svc -n kube-system

minikube addons disable metrics-server

```

清理

```

kubectl delete service hello-node

kubectl delete deployment hello-node

minikube stop

minikube delete

```

創(chuàng)建 Deployment 時, Kubernetes 添加了一個?Pod?來托管你的應用實例选浑。Pod 是 Kubernetes 抽象出來的蓝厌,表示一組一個或多個應用程序容器(如 Docker),以及這些容器的一些共享資源鲜侥。這些資源包括:
共享存儲褂始,當作卷
網絡,作為唯一的集群 IP 地址
有關每個容器如何運行的信息描函,例如容器映像版本或要使用的特定端口崎苗。

故障排查

kubectl get?- 列出資源
kubectl describe?- 顯示有關資源的詳細信息
kubectl logs?- 打印 pod 和其中容器的日志
kubectl exec?- 在 pod 中的容器上執(zhí)行命令

```

kubectl exec POD_NAME env

kubectl exec -it POD_NAME bash

```

Kubernetes 中的服務(Service)是一種抽象概念,它定義了 Pod 的邏輯集和訪問 Pod 的協(xié)議舀寓。Service 使從屬 Pod 之間的松耦合成為可能胆数。
盡管每個 Pod 都有一個唯一的 IP 地址,但是如果沒有 Service 互墓,這些 IP 不會暴露在群集外部必尼。Service 允許您的應用程序接收流量。Service 也可以用在 ServiceSpec 標記type的方式暴露

ClusterIP?(默認) - 在集群的內部 IP 上公開 Service 篡撵。這種類型使得 Service 只能從集群內訪問判莉。
NodePort?- 使用 NAT 在集群中每個選定 Node 的相同端口上公開 Service 。使用<NodeIP>:<NodePort>?從集群外部訪問 Service育谬。是 ClusterIP 的超集券盅。
LoadBalancer?- 在當前云中創(chuàng)建一個外部負載均衡器(如果支持的話),并為 Service 分配一個固定的外部IP膛檀。是 NodePort 的超集锰镀。
ExternalName?- 通過返回帶有該名稱的 CNAME 記錄,使用任意名稱(由 spec 中的externalName指定)公開 Service咖刃。不使用代理泳炉。這種類型需要kube-dns的v1.7或更高版本。

Service 通過一組 Pod 路由通信嚎杨。Service 是一種抽象花鹅,它允許 Pod 死亡并在 Kubernetes 中復制,而不會影響應用程序枫浙。在依賴的 Pod (如應用程序中的前端和后端組件)之間進行發(fā)現(xiàn)和路由是由Kubernetes Service 處理的翠胰。|
Service 匹配一組 Pod 是使用?標簽(Label)和選擇器(Selector), 它們是允許對 Kubernetes 中的對象進行邏輯操作的一種分組原語。標簽(Label)是附加在對象上的鍵/值對自脯,可以以多種方式使用:

指定用于開發(fā)之景,測試和生產的對象
嵌入版本標簽
使用 Label 將對象進行分類

```

kubectl get pods

kubectl get services

kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080

kubectl get services

kubectl describe services/kubernetes-bootcamp

export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')
echo NODE_PORT=$NODE_PORT

curl $(minikube ip):$NODE_PORT

kubectl describe deployment

kubectl get pods -l run=kubernetes-bootcamp

kubectl get services -l run=kubernetes-bootcamp

export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
echo Name of the Pod: $POD_NAME

kubectl label pod $POD_NAME app=v1

kubectl describe pods $POD_NAME

kubectl get pods -l app=v1

kubectl delete service -l run=kubernetes-bootcamp

kubectl get services

curl $(minikube ip):$NODE_PORT

kubectl exec -ti $POD_NAME curl localhost:8080

```

擴縮應用程序

在之前的模塊中,我們創(chuàng)建了一個?Deployment膏潮,然后通過?Service讓其可以開放訪問锻狗。Deployment 僅為跑這個應用程序創(chuàng)建了一個 Pod。 當流量增加時焕参,我們需要擴容應用程序滿足用戶需求轻纪。

擴縮?是通過改變 Deployment 中的副本數量來實現(xiàn)的。

擴展 Deployment 將創(chuàng)建新的 Pods叠纷,并將資源調度請求分配到有可用資源的節(jié)點上刻帚,收縮 會將 Pods 數量減少至所需的狀態(tài)。Kubernetes 還支持 Pods 的自動縮放涩嚣,但這并不在本教程的討論范圍內崇众。將 Pods 數量收縮到0也是可以的掂僵,但這會終止 Deployment 上所有已經部署的 Pods。

運行應用程序的多個實例需要在它們之間分配流量顷歌。服務 (Service)有一種負載均衡器類型锰蓬,可以將網絡流量均衡分配到外部可訪問的 Pods 上。服務將會一直通過端點來監(jiān)視 Pods 的運行眯漩,保證流量只分配到可用的 Pods 上芹扭。

```

kubectl get deployments

kubectl get rs

kubectl scale deployments/kubernetes-bootcamp --replicas=4

kubectl get deployments

kubectl get pods -o wide

kubectl describe deployments/kubernetes-bootcamp

kubectl describe services/kubernetes-bootcamp

export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')
echo NODE_PORT=$NODE_PORT

curl $(minikube ip):$NODE_PORT

kubectl scale deployments/kubernetes-bootcamp --replicas=2

kubectl get deployments

kubectl get pods -o wide

```

與應用程序擴展類似,如果公開了 Deployment赦抖,服務將在更新期間僅對可用的 pod 進行負載均衡舱卡。可用 Pod 是應用程序用戶可用的實例队萤。

滾動更新允許以下操作:

將應用程序從一個環(huán)境提升到另一個環(huán)境(通過容器鏡像更新)

回滾到以前的版本

持續(xù)集成和持續(xù)交付應用程序轮锥,無需停機

```

kubectl get deployments

kubectl get pods

kubectl describe pods

kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2

kubectl get pods

kubectl describe services/kubernetes-bootcamp

export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')
echo NODE_PORT=$NODE_PORT

curl $(minikube ip):$NODE_PORT

kubectl rollout status deployments/kubernetes-bootcamp

kubectl describe pods

kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=gcr.io/google-samples/kubernetes-bootcamp:v10

kubectl get deployments

kubectl get pods

kubectl describe pods

kubectl rollout undo deployments/kubernetes-bootcamp

kubectl get pods

kubectl describe pods

```

國內鏡像拉取

https://blog.csdn.net/TinyJian/article/details/109699420

https://www.cnblogs.com/xiangsikai/p/11412897.html

本地鏡像拉取?

minikube ssh

docker info

docker images 這里的docker與外部docker環(huán)境不同,難道需要在這里再次build一個image浮禾?只需要重用docker daemon就可以交胚!

https://stackoverflow.com/questions/42564058/how-to-use-local-docker-images-with-minikube

https://github.com/kubernetes/minikube/blob/0c616a6b42b28a1aab8397f5a9061f8ebbd9f3d9/README.md#reusing-the-docker-daemon

To point your shell to minikube's docker-daemon

eval $(minikube -p minikube docker-env) # for mac; minikube docker-env will show hints for other OS

After execute the command above, "docker info" shows that you currently use the docker in minikube

Using "minikube ssh" to connect minikube and configure registry mirror.

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
? ? "registry-mirrors": ["https://hnrtid7d.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

那怎樣使用原先的docker呢?重新打開一個terminal

在pod yaml文件中可以指定拉取策略imagePullPolicy: IfNotPresent

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末盈电,一起剝皮案震驚了整個濱河市蝴簇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌匆帚,老刑警劉巖熬词,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吸重,居然都是意外死亡互拾,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門嚎幸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來颜矿,“玉大人,你說我怎么就攤上這事嫉晶∑锝” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵替废,是天一觀的道長箍铭。 經常有香客問我,道長椎镣,這世上最難降的妖魔是什么诈火? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮状答,結果婚禮上冷守,老公的妹妹穿的比我還像新娘刀崖。我一直安慰自己,他們只是感情好教沾,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布蒲跨。 她就那樣靜靜地躺著译断,像睡著了一般授翻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上孙咪,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天堪唐,我揣著相機與錄音,去河邊找鬼翎蹈。 笑死淮菠,一個胖子當著我的面吹牛,可吹牛的內容都是我干的荤堪。 我是一名探鬼主播合陵,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼澄阳!你這毒婦竟也來了拥知?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤碎赢,失蹤者是張志新(化名)和其女友劉穎低剔,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體肮塞,經...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡襟齿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了枕赵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猜欺。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拷窜,靈堂內的尸體忽然破棺而出开皿,到底是詐尸還是另有隱情,我是刑警寧澤装黑,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布副瀑,位于F島的核電站,受9級特大地震影響恋谭,放射性物質發(fā)生泄漏糠睡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一疚颊、第九天 我趴在偏房一處隱蔽的房頂上張望狈孔。 院中可真熱鬧信认,春花似錦、人聲如沸均抽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽油挥。三九已至潦蝇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間深寥,已是汗流浹背攘乒。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留惋鹅,地道東北人则酝。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像闰集,于是被迫代替她去往敵國和親沽讹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內容