1. 程式人生 > >kubernetes命令式容器應用編排/部署應用/探查應用詳情/部署service對象/擴縮容/修改刪除對象

kubernetes命令式容器應用編排/部署應用/探查應用詳情/部署service對象/擴縮容/修改刪除對象

接受 set lan 活動 iptables ron nav dba times

部署Pod應用

創建delpoyment控制器對象
[root@master ~]# kubectl run myapp --image=ikubernetes/myapp:v1 --port=80 --replicas=1
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/myapp created
[root@master ~]# kubectl get pods -o wide
NAME                           READY   STATUS    RESTARTS   AGE     IP           NODE    NOMINATED NODE   READINESS GATES
client                         1/1     Running   0          7d18h   10.244.2.3   node2   <none>           <none>
myapp-55b9654fbb-psgmb         1/1     Running   0          3s      10.244.1.9   node1   <none>           <none>
nginx-deploy-54b5756c7-btwm4   1/1     Running   0          45m     10.244.2.6   node2   <none>           <none>
nginx-deploy-54b5756c7-s4fml   1/1     Running   0          45m     10.244.1.6   node1   <none>           <none>

創建完成後,它在default名稱空間中創建了一個名為myapp的Deploument控制器對象,並且它基於指定的鏡像文件創建了一個Pod對象

可以使用kubectl run -h 獲取更多用途

打印資源對象的相關信息
[root@master ~]# kubectl get deployments
NAME           READY   UP-TO-DATE   AVAILABLE   AGE
myapp          1/1     1            1           108m
nginx-deploy   2/2     2            2           3h18m

READY 當前已有pod副本數量/期望數量

UP-TO-DATE 更新到最新版本定義的pod對象的副本數量,在控制器的滾動更新模式下,它表示已經完成版本更細你的pod對象的副本數量

AVAILABLE 當前處於可用狀態的pod副本的數量

AGE Pod存在的時長

探查pod及應用詳情

kubectl describe

kubectl logs

kubectl exec

部署service對象

一個service對象可視作通過標簽選擇器過濾一組pod對象,並能為此組pod對象監聽套接字提供端口代理和調度服務

[root@master ~]# kubectl expose deployment/myapp --type="NodePort" --port=80 --name=myapp-svc
service/myapp-svc exposed
[root@master ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        11d
myapp-svc    NodePort    10.100.110.97    <none>        80:31590/TCP   4s
nginx-svc    ClusterIP   10.102.230.186   <none>        80/TCP         161m
[root@master ~]# curl 10.100.110.97
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>

expose 暴露

deployment/myapp 根據標簽選擇一組pod

--type 指定service的類型

++Service創建時,其名稱和ClusterIP會由CoreDNS附件動態添加至名稱解析庫中,因此名稱解析服務在對象創建後即可直接使用++

++ClusterIP為service的地址,它是一個虛擬ip,並沒有配置在集群中任何主機的任何接口上,但是每個node之上的kube-proxy都會為CluserIP所在的網絡創建用於轉發的iptables或者ipvs規則,用戶可以在集群外部任何瀏覽器請求集群任一節點的相關端口進行訪問測試++

[root@master ~]# kubectl describe service myapp-svc
Name:                     myapp-svc
Namespace:                default
Labels:                   run=myapp
Annotations:              <none>
Selector:                 run=myapp
Type:                     NodePort
IP:                       10.100.110.97
Port:                     <unset>  80/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  31590/TCP
Endpoints:                10.244.1.9:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

Selector 當前service對象使用的標簽選擇器,用於選擇關聯的pod對象

Type service類型,可以是ClusterIP,NodePort,LoadBalancer等之一

Port 暴露端口,當前service用於接受並響應的請求端口

TargetPort 容器中用於暴露的目標端口,由service port請求至此端口

NodePort 當前service的NodePort,它是否存在有效值和Type字段中的類型相關

Endpoints 後端端點,即被當前service的Select選擇的所有pod的IP和PORT

Session Affinity 是否啟用會話粘性

EXternal Traffic Policy 外部流量的調度策略

擴容和縮容

[root@master ~]# kubectl scale deployment/myapp --replicas=3
deployment.extensions/myapp scaled
[root@master ~]# kubectl get pods
NAME                           READY   STATUS    RESTARTS   AGE
client                         1/1     Running   0          7d21h
myapp-55b9654fbb-87fdz         1/1     Running   0          11s
myapp-55b9654fbb-psgmb         1/1     Running   0          169m
myapp-55b9654fbb-tntp4         1/1     Running   0          11s
nginx-deploy-54b5756c7-btwm4   1/1     Running   0          3h35m
nginx-deploy-54b5756c7-s4fml   1/1     Running   0          3h35m

完成擴容後,查看deployment和service詳細信息

[root@master ~]# kubectl describe deployment -l run=myapp
Name:                   myapp
Namespace:              default
CreationTimestamp:      Tue, 22 Jan 2019 11:55:25 +0800
Labels:                 run=myapp
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               run=myapp
Replicas:               3 desired | 3 updated | 3 total | 3 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  run=myapp
  Containers:
   myapp:
    Image:        ikubernetes/myapp:v1
    Port:         80/TCP
    Host Port:    0/TCP
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Progressing    True    NewReplicaSetAvailable
  Available      True    MinimumReplicasAvailable
OldReplicaSets:  <none>
NewReplicaSet:   myapp-55b9654fbb (3/3 replicas created)
Events:
  Type    Reason             Age   From                   Message
  ----    ------             ----  ----                   -------
  Normal  ScalingReplicaSet  81s   deployment-controller  Scaled up replica set myapp-55b9654fbb to 3

# 顯示已經完成擴容

[root@master ~]# kubectl describe service/myapp-svc
Name:                     myapp-svc
Namespace:                default
Labels:                   run=myapp
Annotations:              <none>
Selector:                 run=myapp
Type:                     NodePort
IP:                       10.100.110.97
Port:                     <unset>  80/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  31590/TCP
Endpoints:                10.244.1.10:80,10.244.1.9:80,10.244.2.8:80

# 創建的service資源對象後端端點也已經通過標簽選擇器自動擴展到了這3個pod對象相關的端點

Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

修改和刪除對象

成功創建在k8s上的對象也成為活動對象,其配置信息由API Service保存於集群狀態存儲系統etcd中,而運行 kubectl edit 命令可調用默認編輯器對活動對象的可配置對象進行編輯。

有些命令是kubectl edit命令某一部分功能的二次封裝 ,例如 kubectl scale 命令不過是專用於修改資源對象的replicas屬性值,它也同樣作用於活動對象,這樣就很容易理解了。

刪除受控制器控制的pods

[root@master ~]# kubectl delete deployment myapp
deployment.extensions "myapp" deleted

kubernetes命令式容器應用編排/部署應用/探查應用詳情/部署service對象/擴縮容/修改刪除對象