k8s 集群架構圖
pod:比container更大的集裝箱
1.k8s最小工作單元
2.運行在一個node上
3.pod中的容器共享網絡和存儲
k8s集群搭建:https://www.cnblogs.com/imstrive/p/11409008.html,搭建過程中極容易出錯,耐心。。。
注意點:
注意修改hosts文件,定義hostname
安裝pod網絡插件時,https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml解析異常,解決辦法:
1)vi /etc/hosts, 添加 199.232.28.133 raw.githubusercontent.com
2)把原文檔改成https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
master刪除node節點 kubectl delete nodes node名稱
k8s部署pod
使用kubectl apply +yml配置文件
示例:部署單個pod
查看所有pod:kubectl get pod
查看pod具體信息: kubectl describe pod mynginx
查看pod主要信息: kubectl get pod -o wide
在master節點操作pod:kubectl exec -it mynginx /bin/bash
部署deployment(pod集群)
kubectl apply -f mynginx-deployment.yml\
查看deployment: kubectl get deployment
查看deployment詳細信息: kubectl describe deployment nginx-deployment
彈性擴縮容:
1.kubectl edit deployment nginx-deployment
2.修改replicas數值
停止deployment: kubectl scale --replicas=0 deployment/nginx-deployment
對node和pod添加標簽,進行部署約束和調度約束:
1.添加標簽:
2.查看標簽:
指定資源部署:
1.修改yml文件,指定標簽
對於k8s而言,pod是最小單元,是最底層的東西。更常見的是各種controller
controller:
1.deployment->replicaSet->pod,最常見,多副本部署
2.job,定時任務,跑完自動刪除
3.statefulSet 增刪改查時,名稱始終保持不變
4.daemonSet 一個node上只有一個
deployment滾動升級:修改配置文件,重新apply
1.查看歷史版本:kubectl rollout history deployment(apply的時候加上--record方便查看)
2.回滾歷史版本:kubectl rollout undo deployment --to-reversion=1
job示例->hello world
服務發現:
1)vim service.yml
2)kubectl apply -f service.yml
3)kubectl get service:查看具體ip
4)正常訪問,看到nginx界面(只限於pod間訪問,默認clusterIp模式無法提供外部訪問)
5)以pod之間服務發現的方式訪問(服務名.namespace名:服務端口),顯示nginx界面
1.
2.
6)修改service.yml,指定service type,提供外部訪問
1.
2.外網訪問192.168.3.201:30000,顯示nginx
訪問策略控制
法蘭絨網絡不支持策略控制,需要使用canal或者calico等,如果是使用的法蘭絨網絡,需要重新初始化k8s集群!
1.vim policy.yml
2.
3.
4.帶有access=true標簽的pod可以正常訪問