溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

kubernetes集群發(fā)布 Pod 端口

發(fā)布時間:2020-06-01 16:17:11 來源:網(wǎng)絡(luò) 閱讀:698 作者:無鋒劍 欄目:云計算

kubernetes集群發(fā)布Pod 端口

創(chuàng)建測試環(huán)境

vi nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  selector:
    matchLabels:
      run: my-nginx
  replicas: 2
  template:
    metadata:
      labels:
        run: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx
        ports:
        - containerPort: 80

驗證服務(wù)啟動

[root@kubm-02 ~]# kubectl get pods
NAME                        READY   STATUS    RESTARTS   AGE
my-nginx-756fb87568-jwgp8   1/1     Running   0          64s
my-nginx-756fb87568-vshxc   1/1     Running   0          64s
[root@kubm-02 ~]# 
[root@kubm-02 ~]# kubectl get pods -l run=my-nginx -o wide
NAME                        READY   STATUS    RESTARTS   AGE     IP             NODE         NOMINATED NODE   READINESS GATES
my-nginx-756fb87568-jwgp8   1/1     Running   0          2m12s   10.244.3.101   kubnode-01   <none>           <none>
my-nginx-756fb87568-vshxc   1/1     Running   0          2m12s   10.244.4.123   kubnode-02   <none>           <none>

檢查 Pod 的 IP 地址:

[root@kubm-02 ~]# kubectl get pods -l run=my-nginx -o yaml | grep podIP
    podIP: 10.244.3.101
    podIP: 10.244.4.123

創(chuàng)建 Service

Kubernetes Service 從邏輯上定義了運行在集群中的一組 Pod,這些 Pod 提供了相同的功能。 當(dāng)每個 Service 創(chuàng)建時,會被分配一個唯一的 IP 地址(也稱為 clusterIP)。 這個 IP 地址與一個 Service 的生命周期綁定在一起,當(dāng) Service 存在的時候它也不會改變。 可以配置 Pod 使它與 Service 進行通信,Pod 知道與 Service 通信將被自動地負載均衡到該 Service 中的某些 Pod 上。

創(chuàng)建nginx 服務(wù)

kubectl expose 命令為 2個 Nginx 副本創(chuàng)建一個 Service:

[root@kubm-02 ~]# kubectl expose deployment/my-nginx
service/my-nginx exposed

驗證服務(wù)啟動

[root@kubm-02 ~]# kubectl  get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
my-nginx     ClusterIP   10.245.206.203   <none>        80/TCP    2m36s

查看詳細信息

[root@kubm-02 ~]# kubectl describe svc my-nginx 
Name:              my-nginx
Namespace:         default
Labels:            <none>
Annotations:       <none>
Selector:          run=my-nginx
Type:              ClusterIP
IP:                10.245.206.203
Port:              <unset>  80/TCP
TargetPort:        80/TCP
Endpoints:         10.244.3.101:80,10.244.4.123:80
Session Affinity:  None
Events:            <none>
kubectl describe po my-nginx # 查看my-nginx pod的詳細狀態(tài)
kubectl describe rs my-nginx # 查看my-nginx replica set的詳細狀態(tài)
kubectl describe deployment my-nginx # 查看my-nginx deployment的詳細狀態(tài)

訪問 Service

Kubernetes 支持兩種主要的服務(wù)發(fā)現(xiàn)模式 —— 環(huán)境變量和 DNS。前者在單個節(jié)點上可用使用,然而后者必須使用 kube-dns 集群插件。

[root@kubm-02 ~]# kubectl get pods
NAME                        READY   STATUS    RESTARTS   AGE
my-nginx-756fb87568-jwgp8   1/1     Running   0          23m
my-nginx-756fb87568-vshxc   1/1     Running   0          23m

[root@kubm-02 ~]# kubectl exec my-nginx-756fb87568-jwgp8 -- printenv | grep SERVICE                         
KUBERNETES_SERVICE_HOST=10.245.0.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443

DNS 解析測試

Kubernetes 提供 DNS ,如果它在集群中處于運行狀態(tài),可以通過如下命令來檢查:

[root@kubm-02 ~]# kubectl get services kube-dns --namespace=kube-system
NAME       TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)                  AGE
kube-dns   ClusterIP   10.245.0.10   <none>        53/UDP,53/TCP,9153/TCP   11d

驗證服務(wù)解析

啟動一個安裝有curl 的鏡像
[root@kubm-02 ~]# kubectl run curl --image=radial/busyboxplus:curl -i --tty
測試解析 my-nginx
[ root@curl-6bf6db5c4f-96nhg:/ ]$ nslookup my-nginx
Server:    10.245.0.10                                          《==== dns 服務(wù)器
Address 1: 10.245.0.10 kube-dns.kube-system.svc.cluster.local

Name:      my-nginx
Address 1: 10.245.206.203 my-nginx.default.svc.cluster.local    《==== my-nginx服務(wù)的集群IP地址
[ root@curl-6bf6db5c4f-96nhg:/ ]$ 

curl 測試

[ root@curl-6bf6db5c4f-96nhg:/ ]$ curl my-nginx 

........
<h2>Welcome to nginx!</h2>
.........
[ root@curl-6bf6db5c4f-96nhg:/ ]$ curl 10.245.206.203
........
<h2>Welcome to nginx!</h2>
......

服務(wù)資源擴容

收縮服務(wù)
[root@kubm-02 ~]# kubectl scale deployment my-nginx --replicas=0

驗證
[root@kubm-02 ~]# kubectl get pods -o wide

No resources found.

擴容服務(wù)至2節(jié)點
[root@kubm-02 ~]# kubectl scale deployment my-nginx --replicas=2
deployment.extensions/my-nginx scaled

驗證
[root@kubm-02 ~]# kubectl get pods -o wide                      
NAME                        READY   STATUS              RESTARTS   AGE   IP       NODE         NOMINATED NODE   READINESS GATES
my-nginx-756fb87568-gmgfq   0/1     ContainerCreating   0          1s    <none>   kubnode-02   <none>           <none>
my-nginx-756fb87568-gvhbm   0/1     ContainerCreating   0          1s    <none>   kubnode-01   <none>           <none>

清理服務(wù)

#直接使用配置文件刪除
[root@kubm-02 ~]# kubectl delete -f nginx.yaml    
deployment.apps "my-nginx" deleted

#刪除服務(wù)
[root@kubm-02 ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.245.0.1       <none>        443/TCP   11d
my-nginx     ClusterIP   10.245.206.203   <none>        80/TCP    48m

[root@kubm-02 ~]# kubectl delete  svc my-nginx 
service "my-nginx" deleted

[root@kubm-02 ~]# kubectl get svc              
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.245.0.1   <none>        443/TCP   11d
向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI