4.k8s啟動容器的網絡模式


01_K8S端口映射啟動容器
Docker的網絡模式:
默認橋接Docker0,外界無法訪問
端口映射
主機網絡

注意:這里可以考慮關閉harbor容器倉庫,設置IfNotPresent參數!

K8S端口映射配置create.yml:
[root@master ~]# cat create.yml

apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx
spec:
  replicas: 1
  template:
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      containers:
      - name: mynginx
        imagePullPolicy: IfNotPresent
        image: 10.0.0.230/shijiange/shijiange:nginx
        ports:
          - containerPort: 80
            hostPort: 90

啟動帶端口映射的容器:
# kubectl --server=192.168.237.50:8080 create -f create.yml
[root@master ~]# kubectl create -f create.yml
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-9h4rj 1/1 Running 0 5s

觀察是否使用了端口映射,外界訪問:
[root@node1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9fd1361204f5 8b2d1774c229 "sjgrun" 18 seconds ago Up 16 seconds k8s_mynginx_nginx-9h4rj_default_e4e6c8e7-8ac0-11ea-9cdf-000c290f6f2b_0
799de3fc5537 k8s.gcr.io/pause:3.1 "/pause" 19 seconds ago Up 17 seconds 0.0.0.0:90->80/tcp k8s_POD_nginx-9h4rj_default_e4e6c8e7-8ac0-11ea-9cdf-000c290f6f2b_0
測試:
[root@node1 ~]# curl 10.0.0.231:90

啟動端口映射說明:
1.需要注意端口沖突。同一個Pod無法啟動多個相同容器,因為端口沖突
2.kubectl --server=192.168.237.50:8080 scale rc nginx --replicas=x

[root@master ~]# kubectl scale rc nginx --replicas=4
replicationcontroller/nginx scaled
[root@master ~]# kubectl get pod #有兩個nginx容器正常,分屬兩台宿主機
NAME READY STATUS RESTARTS AGE
nginx-67znv 0/1 Pending 0 3s
nginx-8sff5 0/1 Pending 0 3s
nginx-9h4rj 1/1 Running 0 5m34s
nginx-bcbg5 1/1 Running 0 3s
查看:
[root@master ~]# kubectl describe pod nginx-67znv
Warning FailedScheduling 47s (x4 over 112s) default-scheduler 0/2 nodes are available: 2 node(s) didn't have free ports for the requested pod ports.


----------------------------------
02_K8S主機模式啟動容器
K8S主機模式啟動容器create.yml:
[root@master ~]# cat create.yml

apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx
spec:
  replicas: 1
  template:
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      containers:
      - name: mynginx
        imagePullPolicy: IfNotPresent
        image: 10.0.0.230/shijiange/shijiange:nginx
      hostNetwork: true

啟動主機模式的容器
# kubectl --server=192.168.237.50:8080 create -f create.yml
[root@master ~]# kubectl create -f create.yml
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-jjjbl 1/1 Running 0 3s
[root@master ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3cd7cea116cc 8b2d1774c229 "sjgrun" 8 seconds ago Up 8 seconds k8s_mynginx_nginx-jjjbl_default_8f9efe3d-8ac3-11ea-9cdf-000c290f6f2b_0
02b009ee958c k8s.gcr.io/pause:3.1 "/pause" 8 seconds ago Up 8 seconds k8s_POD_nginx-jjjbl_default_8f9efe3d-8ac3-11ea-9cdf-000c290f6f2b_0

觀察是否使用主機網絡:
[root@master ~]# curl 127.0.0.1
[root@master ~]# netstat -lntup|grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 48667/nginx: master

主機模式啟動容器說明:
需要注意端口沖突。同一個Pod無法啟動多個相同容器,因為端口沖突!
# kubectl --server=192.168.237.50:8080 scale rc nginx --replicas=x
[root@master ~]# kubectl scale rc nginx --replicas=3
[root@master ~]# kubectl get pod #master和node節點都有一個正常端口80的nginx容器
NAME READY STATUS RESTARTS AGE
nginx-dfqnp 1/1 Running 0 4s
nginx-jjjbl 1/1 Running 0 3m6s
nginx-zbn74 0/1 Error 0 4s
[root@master ~]# netstat -lntup|grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 48667/nginx: master
[root@node1 ~]# netstat -lntup|grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 105758/nginx: maste

[root@master ~]# kubectl describe pod nginx-zbn74
Warning BackOff 71s (x10 over 3m21s) kubelet, master Back-off restarting failed container


免責聲明!

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



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