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