《Kubernetes权威指南:从Docker到Kubernetes实践全接触》学习实验记录-不简单的Hello World
2019-01-15 00:18 it长青 阅读(303) 评论(0) 收藏 举报如何从hub.docker.com下载教程中的镜像地址在 : https://hub.docker.com/u/kubeguide/
把实验中要的3个镜像导入到环境中
guestbook-php-frontend.tar
redis-master.tar
redis-slave.tar
[root@k8s_master src]# ll -h
total 1.1G
-rwxr-xr-x 1 root root 511M Dec 10 09:50 guestbook-php-frontend.tar
-rwxr-xr-x 1 root root 418M Dec 10 09:56 redis-master.tar
-rwxr-xr-x 1 root root 111M Dec 10 09:57 redis-slave.tar
[root@k8s_master src]#
docker load -i guestbook-php-frontend.tar
docker load -i redis-master.tar
docker load -i redis-slave.tar
[root@k8s_master src]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
172.16.111.200:5000/httpd v1 b92a0eb0b729 34 hours ago 364 MB
httpd v1 b92a0eb0b729 34 hours ago 364 MB
docker.io/registry latest 2e2f252f3c88 2 months ago 33.3 MB
172.16.111.200:5000/centos v 85b2308e24e6 6 months ago 199 MB
172.16.111.200:5000/pod-infrastructure latest ee020ceeef01 2 years ago 215 MB
docker.io/kubeguide/guestbook-php-frontend latest 7e2f36e67a84 3 years ago 510 MB
docker.io/kubeguide/redis-master latest 405a0b586f7e 3 years ago 419 MB
docker.io/kubeguide/guestbook-redis-slave latest e0c36a1fa372 3 years ago 1 10 MB
上传到自己的私有仓库中
[root@k8s_master src]# docker tag 7e2f36e67a84 172.16.111.200:5000/guestbook-php-frontend:latest
[root@k8s_master src]# docker push 172.16.111.200:5000/guestbook-php-frontend:latest
[root@k8s_master src]# docker tag 405a0b586f7e 172.16.111.200:5000/redis-master:latest
[root@k8s_master src]# docker push 172.16.111.200:5000/redis-master:latest
[root@k8s_master src]# docker tag e0c36a1fa372 172.16.111.200:5000/guestbook-redis-slave:latest
[root@k8s_master src]# docker push 172.16.111.200:5000/guestbook-redis-slave:latest
----
第1个实验:从一个不简单的 Hello World 例子说起
创建redis master 的 rc
[root@k8s_master ~]# cat master.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: redis-master
labels:
name: redis-master-lab
spec:
replicas: 1
selector:
name: redismas-lab
template:
metadata:
name: redismas-tem
labels:
name: redismas-lab
spec:
containers:
- name: redismas-con
image: 172.16.111.200:5000/redis-master
ports:
- containerPort: 6379
[root@k8s_master ~]#
[root@k8s_master ~]# kubectl create -f master.yaml -s master:8080
replicationcontroller "redis-master" created
[root@k8s_master ~]#
[root@k8s_master ~]# kubectl get rc
NAME DESIRED CURRENT READY AGE
redis-master 1 1 1 37s
[root@k8s_master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
redis-master-gnxk0 1/1 Running 0 1m
[root@k8s_master ~]#
创建redis master 的 service
[root@k8s_master ~]# cat redis-master-service.yaml
apiVersion: v1
kind: Service
metadata:
name: redis-master
labels:
name: redis-master-lab
spec:
ports:
- port: 6379
targetPort: 6379
selector:
name: redismas-lab # pod的标签
[root@k8s_master ~]# kubectl create -f redis-master-service.yaml -s master:8080
service "redis-master" created
[root@k8s_master ~]# kubectl get rc
NAME DESIRED CURRENT READY AGE
redis-master 1 1 1 13m
[root@k8s_master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
redis-master-gnxk0 1/1 Running 0 13m
[root@k8s_master ~]#
它被分配到 node2上
[root@k8s_node2 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e3e847dc7a6b 172.16.111.200:5000/redis-master "redis-server /etc..." 14 minutes ago Up 14 minutes k8s_redismas-con.f9050704_redis-master-gnxk0_default_d7d4b85a-fc90-11e8-9a1d-000c29bd7985_a35f8b74
f95dafbe97cb 172.16.111.200:5000/pod-infrastructure:latest "/pod" 14 minutes ago Up 14 minutes k8s_POD.93820324_redis-master-gnxk0_default_d7d4b85a-fc90-11e8-9a1d-000c29bd7985_38c8d0b9
[root@k8s_node2 ~]#
创建redis slave 的 rc
[root@k8s_master ~]# cat redis-slave.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: redis-slave
labels:
name: redis-slave-lab
spec:
replicas: 2
selector:
name: redis-slave-lab
template:
metadata:
name: redis-slave-tem
labels:
name: redis-slave-lab
spec:
containers:
- name: redis-slave-con
image: 172.16.111.200:5000/guestbook-redis-slave
ports:
- containerPort: 6379
[root@k8s_master ~]#
[root@k8s_master ~]# kubectl create -f redis-slave.yaml
replicationcontroller "redis-slave" created
[root@k8s_master ~]#
[root@k8s_master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
redis-master-gnxk0 1/1 Running 0 21m
redis-slave-2t4sg 1/1 Running 0 9s
redis-slave-4g7m6 1/1 Running 0 9s
[root@k8s_master ~]#
到node节点上查看
[root@k8s_node1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f516c7cfdc46 172.16.111.200:5000/guestbook-redis-slave "/entrypoint.sh /b..." 2 minutes ago Up 2 minutes k8s_redis-slave-con.1fc30b9a_redis-slave-4g7m6_default_e235cd36-fc93-11e8-9a1d-000c29bd7985_4c8dced1
8825ea682231 172.16.111.200:5000/pod-infrastructure:latest "/pod" 2 minutes ago Up 2 minutes k8s_POD.93820324_redis-slave-4g7m6_default_e235cd36-fc93-11e8-9a1d-000c29bd7985_cbbb0f29
[root@k8s_node1 ~]#
进到容器实例中查看到环境变量参数
[root@k8s_node1 ~]# docker exec -ti f516c7cfdc46 /bin/bash
root@redis-slave-4g7m6:/data# env | grep REDIS_MASTER
REDIS_MASTER_PORT_6379_TCP_ADDR=10.254.93.254
REDIS_MASTER_PORT_6379_TCP=tcp://10.254.93.254:6379
REDIS_MASTER_SERVICE_PORT=6379
REDIS_MASTER_SERVICE_HOST=10.254.93.254
REDIS_MASTER_PORT_6379_TCP_PORT=6379
REDIS_MASTER_PORT_6379_TCP_PROTO=tcp
REDIS_MASTER_PORT=tcp://10.254.93.254:6379
root@redis-slave-4g7m6:/data#
那它怎么从master同步数据呢
root@redis-slave-4g7m6:/data# cat /run.sh
#!/bin/bash
# Copyright 2014 The Kubernetes Authors All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
if [[ ${GET_HOSTS_FROM:-dns} == "env" ]]; then
redis-server --slaveof ${REDIS_MASTER_SERVICE_HOST} 6379
else
redis-server --slaveof redis-master 6379
fi
root@redis-slave-4g7m6:/data#
在 /run.sh 这个文件里设置同步行为,并是从 env 变量中找到同步数据源的 master
自定义环境变量
[root@k8s_master ~]# cat redis-slave.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: redis-slave
labels:
name: redis-slave-lab
spec:
replicas: 2
selector:
name: redis-slave-lab
template:
metadata:
name: redis-slave-tem
labels:
name: redis-slave-lab
spec:
containers:
- name: redis-slave-con
image: 172.16.111.200:5000/guestbook-redis-slave
env:
- name: GET_HOSTS_FROM
value: env
ports:
- containerPort: 6379
[root@k8s_master ~]#
[root@k8s_master ~]# kubectl delete rc redis-slave
replicationcontroller "redis-slave" deleted
[root@k8s_master ~]# kubectl get rc
NAME DESIRED CURRENT READY AGE
redis-master 1 1 1 35m
[root@k8s_master ~]# kubectl create -f redis-slave.yaml
replicationcontroller "redis-slave" created
[root@k8s_master ~]# kubectl get rc
NAME DESIRED CURRENT READY AGE
redis-master 1 1 1 35m
redis-slave 2 2 2 4s
[root@k8s_master ~]#
查看pod的日志, kubectl logs podname
[root@k8s_master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
redis-master-gnxk0 1/1 Running 0 37m
redis-slave-3x3m0 1/1 Running 0 1m
redis-slave-9btjh 1/1 Running 0 1m
[root@k8s_master ~]# kubectl logs redis-slave-3x3m0
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.0.3 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 6
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
6:S 10 Dec 16:08:32.158 # Server started, Redis version 3.0.3
6:S 10 Dec 16:08:32.158 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
6:S 10 Dec 16:08:32.158 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
6:S 10 Dec 16:08:32.158 * The server is now ready to accept connections on port 6379
6:S 10 Dec 16:08:33.143 * Connecting to MASTER 10.254.93.254:6379
6:S 10 Dec 16:08:33.147 * MASTER <-> SLAVE sync started
6:S 10 Dec 16:09:34.474 # Timeout connecting to the MASTER...
6:S 10 Dec 16:09:34.474 * Connecting to MASTER 10.254.93.254:6379
6:S 10 Dec 16:09:34.480 * MASTER <-> SLAVE sync started
[root@k8s_master ~]#
Timeout connecting to the MASTER.. 这句说连接超时
排查是因为 运行 redis-master 的节点防火墙没关
[root@k8s_node2 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
40713b5771a2 172.16.111.200:5000/guestbook-redis-slave "/entrypoint.sh /b..." 46 hours ago Up 46 hours k8s_redis-slave-con.24aa2769_redis-slave-9btjh_default_d6c906ba-fc95-11e8-9a1d-000c29bd7985_bc12f8c4
8dc486712a0c 172.16.111.200:5000/pod-infrastructure:latest "/pod" 46 hours ago Up 46 hours k8s_POD.93820324_redis-slave-9btjh_default_d6c906ba-fc95-11e8-9a1d-000c29bd7985_36c78f73
e3e847dc7a6b 172.16.111.200:5000/redis-master "redis-server /etc..." 46 hours ago Up 46 hours k8s_redismas-con.f9050704_redis-master-gnxk0_default_d7d4b85a-fc90-11e8-9a1d-000c29bd7985_a35f8b74
f95dafbe97cb 172.16.111.200:5000/pod-infrastructure:latest "/pod" 46 hours ago Up 46 hours k8s_POD.93820324_redis-master-gnxk0_default_d7d4b85a-fc90-11e8-9a1d-000c29bd7985_38c8d0b9
[root@k8s_node2 ~]#
[root@k8s_node2 ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
[root@k8s_node2 ~]#
关闭 node2的防火墙后
6:S 12 Dec 14:11:06.595 * MASTER <-> SLAVE sync: receiving 43 bytes from master
6:S 12 Dec 14:11:06.596 * MASTER <-> SLAVE sync: Flushing old data
6:S 12 Dec 14:11:06.596 * MASTER <-> SLAVE sync: Loading DB in memory
6:S 12 Dec 14:11:06.596 * MASTER <-> SLAVE sync: Finished with success
Finished with success 同步成功
查看容器镜像详情
[root@k8s_master ~]# docker inspect 172.16.111.200:5000/guestbook-redis-slave
[
{
"Id": "sha256:e0c36a1fa3729ffc83adbd3002cad7b1d42a78d94d410f3c1e9745d08d857e06",
"RepoTags": [
"172.16.111.200:5000/guestbook-redis-slave:latest",
"docker.io/kubeguide/guestbook-redis-slave:latest"
],
"RepoDigests": [
"172.16.111.200:5000/guestbook-redis-slave@sha256:1d49907a3e19f8659a780b4589b24b4ad82932a854d4fc643dc12f210c354fca"
],
"Parent": "",
"Comment": "",
"Created": "2015-08-10T18:41:39.652053454Z",
"Container": "409f79a582540b11a87dc7ee1d5d5d591f1a1ed198a9bff8724392d03c3ce51a",
"ContainerConfig": {
"Hostname": "c2712433a4da",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"6379/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"REDIS_VERSION=3.0.3",
"REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-3.0.3.tar.gz",
"REDIS_DOWNLOAD_SHA1=0e2d7707327986ae652df717059354b358b83358"
],
"Cmd": [
"/bin/sh",
"-c",
"#(nop) CMD [/bin/sh -c /run.sh]"
],
"Image": "38ab071f612493647a8bdaf82c918538558d9ec3103163cbd11f0f6565f8f4a1",
"Volumes": {
"/data": {}
},
"WorkingDir": "/data",
"Entrypoint": [
"/entrypoint.sh"
],
"OnBuild": [],
"Labels": null
},
"DockerVersion": "1.4.1",
"Author": "",
"Config": {
"Hostname": "c2712433a4da",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"6379/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"REDIS_VERSION=3.0.3",
"REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-3.0.3.tar.gz",
"REDIS_DOWNLOAD_SHA1=0e2d7707327986ae652df717059354b358b83358"
],
"Cmd": [
"/bin/sh",
"-c",
"/run.sh"
],
"Image": "38ab071f612493647a8bdaf82c918538558d9ec3103163cbd11f0f6565f8f4a1",
"Volumes": {
"/data": {}
},
"WorkingDir": "/data",
"Entrypoint": [
"/entrypoint.sh"
],
"OnBuild": [],
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 109507975,
"VirtualSize": 109507975,
"GraphDriver": {
"Name": "overlay2",
"Data": {
"LowerDir": "/var/lib/docker/overlay2/a6ccabc8f3922076b9b8a9c80c55510c1c8f49970f3176ff59ce99bf830c21e5/diff:/var/lib/docker/overlay2/9d488b8afab3c4b95fb672817c2b0ab447bcc784ec92b47b5ffdc8c42139b994/diff:/var/lib/docker/overlay2/44bbfe74947be30130f74a4ab89c9e8672743edce956731ec0aec130df347321/diff:/var/lib/docker/overlay2/a5727b7d50da9b3d673a2a676a2e09ae0b35d5bcbecd8c9a3c19753ee02bb349/diff:/var/lib/docker/overlay2/d26d7734e6117e329e651b55b206403552526594b40570055f5af67d65f40b1f/diff:/var/lib/docker/overlay2/71c80c21a6781a8874ceb8ddcc2041c1577de0401596630b04e25688ed478a3b/diff:/var/lib/docker/overlay2/625e384103bfc019052fc7e47ca7f62161f6107cb65549ed76e9a7204209be9a/diff:/var/lib/docker/overlay2/8d2e7193ec8ac685c3e1313aea036cc1c00ae9184fe2e54eb607532c636f36e4/diff:/var/lib/docker/overlay2/ce51af36741fa97e5df4c1b825ac295d643e946eec1c9521c617c294623d655f/diff:/var/lib/docker/overlay2/7518fd02ee60d39e16d337c837347a23982c6823d9edcd1cab4442776b0e9171/diff:/var/lib/docker/overlay2/05f77b6322941f4b1219328ea9bc53e169793581cbe0a36602ce942a0b304a72/diff:/var/lib/docker/overlay2/e0dbb075b4ae6843d75b267e0dea4d2f6cae1479716b20a482460e63d30574f9/diff:/var/lib/docker/overlay2/7ab9d84b7e90d74fb9be409b7d6fdfde838f2194ecde10ab5e30f3ffa0c6d709/diff:/var/lib/docker/overlay2/a822c1d26254b601f8bbcc76614c5f780eb70d1e77dd9e2af7e9c27c553a0f24/diff:/var/lib/docker/overlay2/c33410a51a942269057d44e99b9de533be1ec61c94f2efe681b4ecc5c049169c/diff:/var/lib/docker/overlay2/88bcd8073d56cfdb5431a0b6216e071072d950e4398eba4ce0d0a660a7f46e08/diff:/var/lib/docker/overlay2/dec060e6221772e70e058fb427cfcb52b2fa9b9d7b568f7e966dd7afa02f0c14/diff:/var/lib/docker/overlay2/c01a0bc5ea4e7360b9507a738a6a177470472afdccf1238805e8842ff494ea48/diff:/var/lib/docker/overlay2/4421e84bbedc7e4c8ffc4acf01788da1ec2232040ee5c4320379837fda269991/diff",
"MergedDir": "/var/lib/docker/overlay2/f55fb8b13d498515042d7f0cc0a3949c3a1b9335c0ae37963068e46d66ae8f3e/merged",
"UpperDir": "/var/lib/docker/overlay2/f55fb8b13d498515042d7f0cc0a3949c3a1b9335c0ae37963068e46d66ae8f3e/diff",
"WorkDir": "/var/lib/docker/overlay2/f55fb8b13d498515042d7f0cc0a3949c3a1b9335c0ae37963068e46d66ae8f3e/work"
}
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:845fd9c828fa7c0c46b78a783b10620b5672c3150ebf7305118abbe73561fdc1",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:e5ba2eafe4be3cce6984c73b3d89756ce284599f2c8f3116cf72aa6109443bbf",
"sha256:64d85d9bf6f2b60bd9fb57df301f64431cc5f2f5ea51f3963b9ee9499684b549",
"sha256:30a01e9ae3cafdf036fae59440fbe2d1e3d4bbbbcfbbfabb699eee9455e7b3ad",
"sha256:d3d6949b587abd4267aecaa3d3dfb06363c9c9eda4ac52892f36d80d0e8e476c",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:bd711f7ba37724492cda97725732a7138f1cfb96f08dc508b95f432da12ccfd0",
"sha256:a6a56651a9230941f7ee8f8dac701b46480e253f94146565b46082682d56f1cd",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:7986f971c50fb4973c1dc11811e308e7f86954596de9ea801bec80e6d23a1429",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:1d697caea41f8dcc1d181e12e1ed36d682d1a68995b9ec4eeb16bb13d0ee126b",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef"
]
}
}
]
[root@k8s_master ~]#
这个详情信息中能看到有这么一个cmd行为
"Cmd": [
"/bin/sh",
"-c",
"#(nop) CMD [/bin/sh -c /run.sh]"
]
就是作主从同步的
----
创建 redis slave 的Service
[root@k8s_master ~]# cat redis-slave-service.yaml
apiVersion: v1
kind: Service
metadata:
name: redis-slave
labels:
name: redis-slave-lab
spec:
ports:
- port: 6379
targetPort: 6379
selector:
name: redis-slave-lab # pod的标签
[root@k8s_master ~]# kubectl create -f redis-slave-service.yaml
service "redis-slave" created
[root@k8s_master ~]# kubectl get service
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.254.0.1 <none> 443/TCP 5d
redis-master 10.254.93.254 <none> 6379/TCP 1d
redis-slave 10.254.25.255 <none> 6379/TCP 6s
web 10.254.114.97 <none> 8080/TCP 3d
[root@k8s_master ~]#
[root@k8s_node1 ~]# curl 10.254.25.255:6379
-ERR wrong number of arguments for 'get' command
-ERR unknown command 'User-Agent:'
-ERR unknown command 'Host:'
-ERR unknown command 'Accept:'
查看这个service的后端信息
[root@k8s_master ~]# kubectl describe service redis-slave
Name: redis-slave
Namespace: default
Labels: name=redis-slave-lab
Selector: name=redis-slave-lab
Type: ClusterIP
IP: 10.254.25.255
Port: <unset> 6379/TCP
Endpoints: 172.17.13.4:6379,172.17.24.3:6379
Session Affinity: None
No events.
[root@k8s_master ~]#
创建PHP应用的 rc
[root@k8s_master ~]# cat php-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: php-rc
labels:
name: php-rc-lab
spec:
replicas: 2
selector:
name: php-rc-splab
template:
metadata:
name: php-rc-tem
labels:
name: php-rc-splab
spec:
containers:
- name: php-rc-con
image: 172.16.111.200:5000/guestbook-php-frontend
env:
- name: GET_HOSTS_FROM
value: env
ports:
- containerPort: 80
[root@k8s_master ~]# kubectl create -f php-rc.yaml
replicationcontroller "php-rc" created
[root@k8s_master ~]#
[root@k8s_master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
php-rc-kvqt0 1/1 Running 0 1m
php-rc-ss5v0 1/1 Running 0 1m
redis-master-gnxk0 1/1 Running 0 1d
redis-slave-3x3m0 1/1 Running 0 1d
redis-slave-9btjh 1/1 Running 0 1d
[root@k8s_master ~]#
创建php 的 service
这次创建的service跟前面的不同,之前创建的都只是容器间内部访问,这个PHP应用的要让外部能访问到
[root@k8s_master ~]# cat php-service.yaml
apiVersion: v1
kind: Service
metadata:
name: php
labels:
name: php-lab
spec:
type: NodePort
ports:
- port: 80
nodePort: 30001
selector:
name: php-rc-splab # pod的标签
[root@k8s_master ~]# kubectl create -f php-service.yaml
service "php" created
[root@k8s_master ~]# kubectl get service
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.254.0.1 <none> 443/TCP 5d
php 10.254.73.44 <nodes> 80:30001/TCP 24s
redis-master 10.254.93.254 <none> 6379/TCP 1d
redis-slave 10.254.25.255 <none> 6379/TCP 32m
web 10.254.114.97 <none> 8080/TCP 3d
[root@k8s_master ~]#
去node节点上查看30001端口是否有服务映射
[root@k8s_node1 ~]# netstat -tlnup | grep 30001
tcp6 0 0 :::30001 :::* LISTEN 20524/kube-proxy
[root@k8s_node1 ~]#
去浏览器访问测试一下
表单提交
但是没有成功写入
排查发现,在上面的页面显示中
{{msg}} 这内容表明是前端有未渲染成功的数据
从浏览器控制台早发现有几个资料未加载到,看了加载来源是google的cdn,但由于天朝众所周知的原因,不能加载到
--
设置梯子,并把我们的内网ip要放到排除列表
用梯子后
实验完整成功!
查看这个PHP应用的日志
[root@k8s_master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
php-rc-kvqt0 1/1 Running 0 28m
php-rc-ss5v0 1/1 Running 0 28m
redis-master-gnxk0 1/1 Running 0 1d
redis-slave-3x3m0 1/1 Running 0 1d
redis-slave-9btjh 1/1 Running 0 1d
[root@k8s_master ~]#
[root@k8s_master ~]# kubectl logs php-rc-ss5v0
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.24.2. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.24.2. Set the 'ServerName' directive globally to suppress this message
[Wed Dec 12 14:54:25.513672 2018] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) PHP/5.6.12 configured -- resuming normal operations
[Wed Dec 12 14:54:25.513710 2018] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
172.17.24.1 - - [12/Dec/2018:15:06:48 +0000] "GET / HTTP/1.1" 200 826 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"
172.17.24.1 - - [12/Dec/2018:15:06:48 +0000] "GET /controllers.js HTTP/1.1" 200 759 "http://172.16.111.201:30001/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"
172.17.24.1 - - [12/Dec/2018:15:08:51 +0000] "GET / HTTP/1.1" 200 826 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"
172.17.24.1 - - [12/Dec/2018:15:08:51 +0000] "GET /controllers.js HTTP/1.1" 200 759 "http://172.16.111.201:30001/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"
172.17.24.1 - - [12/Dec/2018:15:09:55 +0000] "GET / HTTP/1.1" 200 826 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"
172.17.24.1 - - [12/Dec/2018:15:09:55 +0000] "GET /controllers.js HTTP/1.1" 200 759 "http://172.16.111.201:30001/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"
172.17.13.0 - - [12/Dec/2018:15:11:11 +0000] "GET /favicon.ico HTTP/1.1" 404 437 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"
172.17.13.0 - - [12/Dec/2018:15:13:51 +0000] "GET / HTTP/1.1" 200 826 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"
172.17.13.0 - - [12/Dec/2018:15:13:51 +0000] "GET /controllers.js HTTP/1.1" 200 759 "http://172.16.111.202:30001/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"
172.17.24.1 - - [12/Dec/2018:15:25:59 +0000] "GET / HTTP/1.1" 200 826 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"
172.17.24.1 - - [12/Dec/2018:15:25:59 +0000] "GET /controllers.js HTTP/1.1" 200 759 "http://172.16.111.201:30001/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"
172.17.24.1 - - [12/Dec/2018:15:26:30 +0000] "GET /favicon.ico HTTP/1.1" 404 437 "http://172.16.111.201:30001/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"
172.17.24.1 - - [12/Dec/2018:15:29:14 +0000] "GET / HTTP/1.1" 200 826 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"
172.17.24.1 - - [12/Dec/2018:15:29:14 +0000] "GET /controllers.js HTTP/1.1" 200 759 "http://172.16.111.201:30001/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"
172.17.24.1 - - [12/Dec/2018:15:29:16 +0000] "GET /guestbook.php?cmd=get&key=messages HTTP/1.1" 200 256 "http://172.16.111.201:30001/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"
172.17.24.1 - - [12/Dec/2018:15:29:16 +0000] "GET /favicon.ico HTTP/1.1" 404 436 "http://172.16.111.201:30001/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"
172.17.24.1 - - [12/Dec/2018:15:30:15 +0000] "GET /guestbook.php?cmd=set&key=messages&value=Hello%20World!,itcp HTTP/1.1" 200 255 "http://172.16.111.201:30001/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"
可以看到它刚才的被访问记录
浙公网安备 33010602011771号