Merge pull request #6917 from thockin/dockerfile-images-are-dead
Stop using dockerfile/* images
This commit is contained in:
commit
e1f67ff31b
|
@ -79,7 +79,7 @@ A RabbitMQ broker can be turned up using the file `examples/celery-rabbitmq/rabb
|
|||
"id": "rabbitmq",
|
||||
"containers": [{
|
||||
"name": "rabbitmq",
|
||||
"image": "dockerfile/rabbitmq",
|
||||
"image": "library/rabbitmq",
|
||||
"cpu": 100,
|
||||
"ports": [{"containerPort": 5672, "hostPort": 5672}]
|
||||
}]
|
||||
|
@ -144,7 +144,7 @@ There are several things to point out here...
|
|||
Like the RabbitMQ controller, this controller ensures that there is always a pod is running a Celery worker instance. The celery-app-add Docker image is an extension of the standard Celery image. This is the Dockerfile:
|
||||
|
||||
```
|
||||
FROM dockerfile/celery
|
||||
FROM library/celery
|
||||
|
||||
ADD celery_conf.py /data/celery_conf.py
|
||||
ADD run_tasks.py /data/run_tasks.py
|
||||
|
@ -239,7 +239,7 @@ flower-controller-cegta 10.246.2.17 flower endocode/flo
|
|||
kube-dns-fplln 10.246.1.3 etcd quay.io/coreos/etcd:latest 10.245.1.3/10.245.1.3 k8s-app=kube-dns,kubernetes.io/cluster-service=true Running
|
||||
kube2sky kubernetes/kube2sky:1.0
|
||||
skydns kubernetes/skydns:2014-12-23-001
|
||||
rabbitmq-controller-pjzb3 10.246.2.16 rabbitmq dockerfile/rabbitmq 10.245.1.4/10.245.1.4 app=taskQueue,name=rabbitmq Running
|
||||
rabbitmq-controller-pjzb3 10.246.2.16 rabbitmq library/rabbitmq 10.245.1.4/10.245.1.4 app=taskQueue,name=rabbitmq Running
|
||||
|
||||
```
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
FROM dockerfile/celery
|
||||
FROM library/celery
|
||||
|
||||
ADD celery_conf.py /data/celery_conf.py
|
||||
ADD run_tasks.py /data/run_tasks.py
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
"id": "rabbitmq",
|
||||
"containers": [{
|
||||
"name": "rabbitmq",
|
||||
"image": "dockerfile/rabbitmq",
|
||||
"image": "library/rabbitmq",
|
||||
"cpu": 100,
|
||||
"ports": [{"containerPort": 5672, "hostPort": 5672}]
|
||||
}]
|
||||
|
|
|
@ -212,7 +212,23 @@ func TestExampleObjectSchemas(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
var sampleRegexp = regexp.MustCompile("(?ms)^```(?:(?P<type>yaml)\\w*\\n(?P<content>.+?)|\\w*\\n(?P<content>\\{.+?\\}))\\w*\\n^```")
|
||||
// This regex is tricky, but it works. For future me, here is the decode:
|
||||
//
|
||||
// Flags: (?ms) = multiline match, allow . to match \n
|
||||
// 1) Look for a line that starts with ``` (a markdown code block)
|
||||
// 2) (?: ... ) = non-capturing group
|
||||
// 3) (P<name>) = capture group as "name"
|
||||
// 4) Look for #1 followed by either:
|
||||
// 4a) "yaml" followed by any word-characters followed by a newline (e.g. ```yamlfoo\n)
|
||||
// 4b) "any word-characters followed by a newline (e.g. ```json\n)
|
||||
// 5) Look for either:
|
||||
// 5a) #4a followed by one or more characters (non-greedy)
|
||||
// 5b) #4b followed by { followed by one or more characters (non-greedy) followed by }
|
||||
// 6) Look for #5 followed by a newline followed by ``` (end of the code block)
|
||||
//
|
||||
// This could probably be simplified, but is already too delicate. Before any
|
||||
// real changes, we should have a testscase that just tests this regex.
|
||||
var sampleRegexp = regexp.MustCompile("(?ms)^```(?:(?P<type>yaml)\\w*\\n(?P<content>.+?)|\\w*\\n(?P<content>\\{.+?\\}))\\n^```")
|
||||
var subsetRegexp = regexp.MustCompile("(?ms)\\.{3}")
|
||||
|
||||
func TestReadme(t *testing.T) {
|
||||
|
|
|
@ -39,7 +39,7 @@ Note that, although the redis server runs just with a single replica, we use rep
|
|||
"id": "redis-master",
|
||||
"containers": [{
|
||||
"name": "redis-master",
|
||||
"image": "dockerfile/redis",
|
||||
"image": "redis",
|
||||
"ports": [{
|
||||
"containerPort": 6379, # containerPort: Where traffic to redis ultimately is routed to.
|
||||
}]
|
||||
|
@ -65,7 +65,7 @@ $ kubectl create -f examples/guestbook/redis-master-controller.json
|
|||
|
||||
$ cluster/kubectl.sh get rc
|
||||
CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS
|
||||
redis-master-controller redis-master dockerfile/redis name=redis-master 1
|
||||
redis-master-controller redis-master redis name=redis-master 1
|
||||
```
|
||||
|
||||
Once that's up you can list the pods in the cluster, to verify that the master is running:
|
||||
|
@ -78,7 +78,7 @@ You'll see all kubernetes components, most importantly the redis master pod. It
|
|||
|
||||
```shell
|
||||
POD IP CONTAINER(S) IMAGE(S) HOST LABELS STATUS
|
||||
redis-master-controller-gb50a 10.244.3.7 redis-master dockerfile/redis kubernetes-minion-7agi.c.hazel-mote-834.internal/104.154.54.203 app=redis,name=redis-master Running
|
||||
redis-master-controller-gb50a 10.244.3.7 redis-master redis kubernetes-minion-7agi.c.hazel-mote-834.internal/104.154.54.203 app=redis,name=redis-master Running
|
||||
```
|
||||
|
||||
If you ssh to that machine, you can run `docker ps` to see the actual pod:
|
||||
|
@ -88,7 +88,7 @@ me@workstation$ gcloud compute ssh kubernetes-minion-7agi
|
|||
|
||||
me@kubernetes-minion-7agi:~$ sudo docker ps
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
0ffef9649265 dockerfile/redis:latest "redis-server /etc/r About a minute ago Up About a minute k8s_redis-master.767aef46_redis-master-controller-gb50a.default.api_4530d7b3-ae5d-11e4-bf77-42010af0d719_579ee964
|
||||
0ffef9649265 redis:latest "redis-server /etc/r About a minute ago Up About a minute k8s_redis-master.767aef46_redis-master-controller-gb50a.default.api_4530d7b3-ae5d-11e4-bf77-42010af0d719_579ee964
|
||||
```
|
||||
|
||||
(Note that initial `docker pull` may take a few minutes, depending on network conditions. You can monitor the status of this by running `journalctl -f -u docker` to check when the image is being downloaded. Of course, you can also run `journalctl -f -u kubelet` to see what state the kubelet is in as well during this time.
|
||||
|
@ -182,7 +182,7 @@ redis-slave-controller
|
|||
|
||||
$ kubectl get rc
|
||||
CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS
|
||||
redis-master-controller redis-master dockerfile/redis name=redis-master 1
|
||||
redis-master-controller redis-master redis name=redis-master 1
|
||||
redis-slave-controller redis-slave kubernetes/redis-slave:v2 name=redis-slave 2
|
||||
```
|
||||
|
||||
|
@ -197,7 +197,7 @@ Once that's up you can list the pods in the cluster, to verify that the master a
|
|||
```shell
|
||||
$ kubectl get pods
|
||||
POD IP CONTAINER(S) IMAGE(S) HOST LABELS STATUS
|
||||
redis-master-controller-gb50a 10.244.3.7 redis-master dockerfile/redis kubernetes-minion-7agi.c.hazel-mote-834.internal/104.154.54.203 app=redis,name=redis-master Running
|
||||
redis-master-controller-gb50a 10.244.3.7 redis-master redis kubernetes-minion-7agi.c.hazel-mote-834.internal/104.154.54.203 app=redis,name=redis-master Running
|
||||
redis-slave-controller-182tv 10.244.3.6 redis-slave kubernetes/redis-slave:v2 kubernetes-minion-7agi.c.hazel-mote-834.internal/104.154.54.203 app=redis,name=redis-slave,uses=redis-master Running
|
||||
redis-slave-controller-zwk1b 10.244.2.8 redis-slave kubernetes/redis-slave:v2 kubernetes-minion-3vxa.c.hazel-mote-834.internal/104.154.54.6 app=redis,name=redis-slave,uses=redis-master Running
|
||||
```
|
||||
|
@ -287,7 +287,7 @@ frontend-controller
|
|||
$ kubectl get rc
|
||||
CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS
|
||||
frontend-controller php-redis kubernetes/example-guestbook-php-redis:v2 name=frontend 3
|
||||
redis-master-controller redis-master dockerfile/redis name=redis-master 1
|
||||
redis-master-controller redis-master redis name=redis-master 1
|
||||
redis-slave-controller redis-slave kubernetes/redis-slave:v2 name=redis-slave 2
|
||||
```
|
||||
|
||||
|
@ -299,7 +299,7 @@ POD IP CONTAINER(S)
|
|||
frontend-controller-5m1zc 10.244.1.131 php-redis kubernetes/example-guestbook-php-redis:v2 kubernetes-minion-3vxa.c.hazel-mote-834.internal/146.148.71.71 app=frontend,name=frontend,uses=redis-slave,redis-master Running
|
||||
frontend-controller-ckn42 10.244.2.134 php-redis kubernetes/example-guestbook-php-redis:v2 kubernetes-minion-by92.c.hazel-mote-834.internal/104.154.54.6 app=frontend,name=frontend,uses=redis-slave,redis-master Running
|
||||
frontend-controller-v5drx 10.244.0.128 php-redis kubernetes/example-guestbook-php-redis:v2 kubernetes-minion-wilb.c.hazel-mote-834.internal/23.236.61.63 app=frontend,name=frontend,uses=redis-slave,redis-master Running
|
||||
redis-master-controller-gb50a 10.244.3.7 redis-master dockerfile/redis kubernetes-minion-7agi.c.hazel-mote-834.internal/104.154.54.203 app=redis,name=redis-master Running
|
||||
redis-master-controller-gb50a 10.244.3.7 redis-master redis kubernetes-minion-7agi.c.hazel-mote-834.internal/104.154.54.203 app=redis,name=redis-master Running
|
||||
redis-slave-controller-182tv 10.244.3.6 redis-slave kubernetes/redis-slave:v2 kubernetes-minion-7agi.c.hazel-mote-834.internal/104.154.54.203 app=redis,name=redis-slave,uses=redis-master Running
|
||||
redis-slave-controller-zwk1b 10.244.2.8 redis-slave kubernetes/redis-slave:v2 kubernetes-minion-3vxa.c.hazel-mote-834.internal/104.154.54.6 app=redis,name=redis-slave,uses=redis-master Running
|
||||
```
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
FROM dockerfile/redis
|
||||
FROM redis
|
||||
|
||||
ADD run.sh /run.sh
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
"containers":[
|
||||
{
|
||||
"name":"master",
|
||||
"image":"dockerfile/redis",
|
||||
"image":"redis",
|
||||
"ports":[
|
||||
{
|
||||
"containerPort":6379,
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
#
|
||||
|
||||
# Pull base image.
|
||||
FROM dockerfile/ubuntu
|
||||
FROM ubuntu
|
||||
|
||||
# Install Redis.
|
||||
RUN \
|
||||
|
|
|
@ -9,7 +9,7 @@ metadata:
|
|||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: dockerfile/nginx
|
||||
image: nginx
|
||||
ports:
|
||||
- name: web
|
||||
containerPort: 80
|
||||
|
|
|
@ -4,7 +4,7 @@ metadata:
|
|||
name: mypod
|
||||
spec:
|
||||
containers:
|
||||
- image: dockerfile/nginx
|
||||
- image: nginx
|
||||
name: myfrontend
|
||||
volumeMounts:
|
||||
- mountPath: "/var/www/html"
|
||||
|
|
|
@ -19,7 +19,7 @@ desiredState:
|
|||
id: www
|
||||
containers:
|
||||
- name: nginx
|
||||
image: dockerfile/nginx
|
||||
image: nginx
|
||||
```
|
||||
|
||||
A pod definition is a declaration of a _desired state_. Desired state is a very important concept in the Kubernetes model. Many things present a desired state to the system, and it is Kubernetes' responsibility to make sure that the current state matches the desired state. For example, when you create a Pod, you declare that you want the containers in it to be running. If the containers happen to not be running (e.g. program failure, ...), Kubernetes will continue to (re-)create them for you in order to drive them to the desired state. This process continues until you delete the Pod.
|
||||
|
@ -40,7 +40,7 @@ desiredState:
|
|||
id: storage
|
||||
containers:
|
||||
- name: redis
|
||||
image: dockerfile/redis
|
||||
image: redis
|
||||
volumeMounts:
|
||||
# name must match the volume name below
|
||||
- name: redis-persistent-storage
|
||||
|
@ -55,23 +55,23 @@ desiredState:
|
|||
Ok, so what did we do? We added a volume to our pod:
|
||||
|
||||
```yaml
|
||||
...
|
||||
# ...
|
||||
volumes:
|
||||
- name: redis-persistent-storage
|
||||
source:
|
||||
emptyDir: {}
|
||||
...
|
||||
# ...
|
||||
```
|
||||
|
||||
And we added a reference to that volume to our container:
|
||||
```yaml
|
||||
...
|
||||
# ...
|
||||
volumeMounts:
|
||||
# name must match the volume name below
|
||||
- name: redis-persistent-storage
|
||||
# mount path within the container
|
||||
mountPath: /data/redis
|
||||
...
|
||||
# ...
|
||||
```
|
||||
|
||||
In Kubernetes, ```emptyDir``` Volumes live for the lifespan of the Pod, which is longer than the lifespan of any one container, so if the container fails and is restarted, our persistent storage will live on.
|
||||
|
@ -98,7 +98,7 @@ desiredState:
|
|||
id: www
|
||||
containers:
|
||||
- name: nginx
|
||||
image: dockerfile/nginx
|
||||
image: nginx
|
||||
volumeMounts:
|
||||
- name: www-data
|
||||
mountPath: /srv/www
|
||||
|
@ -114,7 +114,7 @@ desiredState:
|
|||
volumes:
|
||||
- name: www-data
|
||||
source:
|
||||
emptyDir
|
||||
emptyDir: {}
|
||||
```
|
||||
|
||||
Note that we have also added a volume here. In this case, the volume is mounted into both containers. It is marked ```readOnly``` in the web server's case, since it doesn't need to write to the directory.
|
||||
|
|
|
@ -41,7 +41,7 @@ desiredState:
|
|||
id: nginx
|
||||
containers:
|
||||
- name: nginx
|
||||
image: dockerfile/nginx
|
||||
image: nginx
|
||||
ports:
|
||||
- containerPort: 80
|
||||
# Important: these labels need to match the selector above
|
||||
|
@ -135,7 +135,7 @@ desiredState:
|
|||
id: php
|
||||
containers:
|
||||
- name: nginx
|
||||
image: dockerfile/nginx
|
||||
image: nginx
|
||||
ports:
|
||||
- containerPort: 80
|
||||
# defines the health checking
|
||||
|
|
|
@ -7,7 +7,7 @@ desiredState:
|
|||
id: php
|
||||
containers:
|
||||
- name: nginx
|
||||
image: dockerfile/nginx
|
||||
image: nginx
|
||||
ports:
|
||||
- containerPort: 80
|
||||
# defines the health checking
|
||||
|
|
|
@ -7,4 +7,4 @@ desiredState:
|
|||
id: www
|
||||
containers:
|
||||
- name: nginx
|
||||
image: dockerfile/nginx
|
||||
image: nginx
|
||||
|
|
|
@ -7,7 +7,7 @@ desiredState:
|
|||
id: storage
|
||||
containers:
|
||||
- name: redis
|
||||
image: dockerfile/redis
|
||||
image: redis
|
||||
volumeMounts:
|
||||
# name must match the volume name below
|
||||
- name: redis-persistent-storage
|
||||
|
|
|
@ -16,7 +16,7 @@ desiredState:
|
|||
id: nginx
|
||||
containers:
|
||||
- name: nginx
|
||||
image: dockerfile/nginx
|
||||
image: nginx
|
||||
ports:
|
||||
- containerPort: 80
|
||||
# Important: these labels need to match the selector above
|
||||
|
|
|
@ -40,7 +40,7 @@ metadata:
|
|||
spec:
|
||||
containers:
|
||||
- name: nginx
|
||||
image: dockerfile/nginx
|
||||
image: nginx
|
||||
volumeMounts:
|
||||
- mountPath: /srv/www
|
||||
name: www-data
|
||||
|
|
|
@ -5,7 +5,7 @@ metadata:
|
|||
spec:
|
||||
containers:
|
||||
- name: nginx
|
||||
image: dockerfile/nginx
|
||||
image: nginx
|
||||
# defines the health checking
|
||||
livenessProbe:
|
||||
# an http probe
|
||||
|
|
|
@ -5,4 +5,4 @@ metadata:
|
|||
spec:
|
||||
containers:
|
||||
- name: nginx
|
||||
image: dockerfile/nginx
|
||||
image: nginx
|
||||
|
|
|
@ -5,7 +5,7 @@ metadata:
|
|||
spec:
|
||||
containers:
|
||||
- name: redis
|
||||
image: dockerfile/redis
|
||||
image: redis
|
||||
volumeMounts:
|
||||
# name must match the volume name below
|
||||
- name: redis-persistent-storage
|
||||
|
|
|
@ -19,6 +19,6 @@ spec:
|
|||
spec:
|
||||
containers:
|
||||
- name: nginx
|
||||
image: dockerfile/nginx
|
||||
image: nginx
|
||||
ports:
|
||||
- containerPort: 80
|
||||
|
|
Loading…
Reference in New Issue