《三》kubectl命令行管理工具、YAML配置詳解
kubectl自動補全功能設置
執行:
1、yum install -y bash-completion
2、source <(kubectl completion bash)
3、echo "source <(kubectl completion bash)" >> ~/.bashrc
1、創建
nginx-test:控制器的名稱,默認是deployment控制器
--image:nginx:1.14 鏡像
--port=80:暴露的端口
--replicas=3:啟動3個副本
kubectl run nginx-test --image=nginx:1.14 --port=80 --replicas=3
2、查看
kubectl get pods
kubectl get pods,deployment,replicaset
kubectl api-resources 查看簡寫的命令
比如:service 就是cs
componentstatuses就是cs
3、若是有異常
kubectl describe pods nginx-test-795c895f4c-zpr87
4、刪除
kubectl delete deploy/nginx-test
5、創建好控制器後,將 它發布出去
--port=80:集群內部之間訪問的端口
-type=NodePort:指定這個類型,外部能訪問
--target-port=80:容器的端口
kubectl expose deployment nginx-test --port=80 --type=NodePort --target-port=80 --name=nginx-service
查看:
ep:Endpoints
查看service 被轉發到哪個node上
安裝ipvsadm 這個工具
1、yum install ipvsadm -y
2、查看:
3、訪問:
http://192.168.1.23:34234/
http://192.168.1.24:34234/
端口(34234):
過程:訪問http://192.168.1.23:34234/ 會通過service 幫你轉發到集群端口,集群端口會通過ipvsadm 幫你轉發到 3個副本上
4、查看日誌:
每個節點上都要加上:
vi /opt/kubernetes/cfg/kube-proxy 新增如下(啟用lvs,就需要配置一下,可能會有問題):
--masquerade-all=true \
再重啟 systemctl restart kube-proxy
由kube-proxy 動態幫你完成,轉發到哪個pod上
5、更新image的版本,現在nginx 版本為1.14,先需要更新到1.15版本
指定控制器名稱
nginx-test:容器的名字,可根據kubectl describe deployment/nginx-test 查看
[root@docker ~]# kubectl set image deployment/nginx-test nginx-test=nginx:1.15
6、再訪問curl http://192.168.1.23:34234 可以看到nginx版本變為1.15
7、更新有問題需要回滾
kubectl rollout history deployment/nginx-test
kubectl rollout undo deployment/nginx-test 回滾到上一個版本
8、再次驗證:http://192.168.1.23:34234 可以看到nginx版本變為1.14
9、刪除
如果刪除pod,控制器會幫你再新建一個pod,所以需要刪除控制器
kubectl delete deploy/nginx-test
kubectl delete svc/nginx-service
10、可以進入pod
kubectl exec -it pod名稱 bash
YAML詳解
YAML是專門用來寫配置文件的語言,非常簡潔和強大,使用比json更方便。它實質上是一種通用的數據串行化格式。後文會說明定義YAML文件創建Pod和創建Deployment。
YAML語法規則:
- 大小寫敏感
- 使用縮進表示層級關系
- 縮進時不允許使用Tal鍵,只允許使用空格
- 縮進的空格數目不重要,只要相同層級的元素左側對齊即可
- ”#” 表示註釋,從這個字符一直到行尾,都會被解析器忽略
詳解
apiVersion: apps/v1 :指定api版本,此值必須在kubectl apiversion中 ;查看版本 kubectl api-versions;v1是穩定版,v1beta1就是測試版
kind: Deployment:指在apps/v1 這個接口中指定資源的類型;Deployment是控制器
metadata: 指的資源Deployment(控制器)的元數據/屬性
name: nginx-deployment 指定控制器名稱
namespace: default 指定命名空間
labels: 指定標簽
app: nginx
spec 指定這個資源(Deployment)內容
replicas: 3 設置3個副本
template: 以下就是容器的設置
metadata: 關聯到上面的標簽
labels:
app: nginx
spec:
containers:
- name: nginx 容器的名稱
image: nginx:1.15 鏡像
ports:- containerPort: 80 容器的端口
- containerPort: 80 容器的端口
執行:kubectl apply -f deployment.yaml
部署service,將應用發布出去
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
app: nginx
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
selector:
app: nginx
執行:kubectl apply -f deployment-service.yaml
查看:
驗證:curl 192.168.1.23:45915 -I
回滾:通過命令回滾
可以寫在一個yaml配置文件裏,需要用---來分割:
說明
1、第1和第2 :控制器和pod綁定
2、第2和第3: service需要和pod綁定
3、第3和第4:要設置一樣的標簽
導出現有的ymal文件:
[root@docker demo]# kubectl get deployment/nginx-deployment -o=yaml --export > my-deploy.yaml
《三》kubectl命令行管理工具、YAML配置詳解