項目環境搭建【Docker+k8s】九 || kubernetes創建容器


1、創建容器

命令中--replicas=2 啟動2個實例,--port=80 運行在k8s的80端口上,沒有進行映射端口

[root@yn101-22 ~]# kubectl run nginx --image=nginx --replicas=2 --port=80
#輸出如下:
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/nginx created

2、查看全部Pods狀態

[root@yn101-22 ~]# kubectl get pods
#輸出如下:
NAME                     READY   STATUS    RESTARTS   AGE
nginx-5578584966-2tkmz   1/1     Running   0          79s
nginx-5578584966-8r8jt   1/1     Running   0          79s

3、查看已部署的服務

[root@yn101-22 ~]# kubectl get deployment
#輸出如下:
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   2/2     2            2           2m17s

4、發布服務

使用負載均衡模式發布服務,讓用戶可以訪問。暴露一個名稱為nginx的deployment,暴露80端口,類型是負載均衡

[root@yn101-22 ~]# kubectl expose deployment nginx --port=80 --type=LoadBalancer
#輸出如下:
service/nginx exposed

5、查看已發布的服務

[root@yn101-22 ~]# kubectl get service
#輸出如下
NAME         TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP      10.96.0.1      <none>        443/TCP        9h
nginx        LoadBalancer   10.106.9.160   <pending>     80:31176/TCP   2m9s

其中nginx的port:80為k8s的端口,31176為暴露出來的端口

6、查看服務詳情

[root@yn101-22 ~]# kubectl get service
#輸出如下
NAME         TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP      10.96.0.1      <none>        443/TCP        9h
nginx        LoadBalancer   10.106.9.160   <pending>     80:31176/TCP   2m9s
#查看詳情
[root@yn101-22 ~]# kubectl describe service nginx
Name:                     nginx
Namespace:                default
Labels:                   run=nginx
Annotations:              <none>
Selector:                 run=nginx
Type:                     LoadBalancer
IP:                       10.106.9.160 #k8s內部ip地址
Port:                     <unset>  80/TCP #k8s內部端口
TargetPort:               80/TCP
NodePort:                 <unset>  31176/TCP #node端口
Endpoints:                192.168.114.193:80,192.168.170.4:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

7、驗證是否成功

master在默認情況下不會運行pod,所以在node節點訪問nginx進行驗證,也可使用docker ps查看運行的容器。

服務高可用測試:使用docker rm -f 容器id刪除容器,刪除后容器又自動創建。

#訪問測試
http://192.168.101.31:31176/
http://192.168.101.32:31176/

8、停止服務

  • service是服務,對外提供服務
  • deployment是部署
  • pod運行容器的單元

容器運行在pod上,pod運行在deployment上,停止服務,必須先停止deployment

刪除已部署的服務

[root@yn101-22 ~]# kubectl delete deployment nginx
#輸出如下:
deployment.apps "nginx" deleted

刪除已發布的服務

[root@yn101-22 ~]# kubectl delete service nginx
#輸出如下:
service "nginx" deleted


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM