8. Kubernetes run none-container applications
8.1. Background
Kubernetes only support manage container applications, It’s impossible to run none-container application by Kubernetes. This solution provides a simple way to forward container start cmd to AppMesh and running on native host, AppMesh will guarantee the native application have same lifecycle with container.
8.2. Install AppMesh on host OS
AppMesh is a native app manager, provide REST API which can used to manage application remotely. AppMesh is running on host OS, and container can register process to AppMesh by API, each container will register 2 AppMesh applications, one is used to start container command, the other is used to clean AppMesh application when container exits. Installation Guide
8.3. Build Kubernetes Docker image for native command
This Docker image laoshanxi/appmesh:container_agent
is used to forward container start command to AppMesh, The image was already built and pushed to docker.io
and built by Dockerfile.
8.4. Test run native command in docker container
docker run --net=host -v /opt/appmesh/ssl/:/opt/appmesh/ssl/ laoshanxi/appmesh:container_agent docker ps
8.5. Kubernetes job example to run cmd on host OS
This is an example run docker ps
command on host OS and I did not install docker to this image, the command will forward to AppMesh and return result to container.
$ tee myjob.yml <<-'EOF'
apiVersion: batch/v1
kind: Job
metadata:
name: myjob
spec:
template:
metadata:
name: myjob
spec:
containers:
- name: native-cmd-test
image: laoshanxi/appmesh:container_agent
args: ["docker ps"]
volumeMounts:
- name: appmesh-volume
mountPath: /opt/appmesh/ssl
restartPolicy: Never
hostNetwork: true
volumes:
- name: appmesh-volume
hostPath:
path: /opt/appmesh/ssl
EOF
$ kubectl apply -f myjob.yml
job.batch/myjob created
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
myjob-vtc8h 0/1 Completed 0 8s
$ kubectl logs myjob-vtc8h
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
805dc03c3433 laoshanxi/appmesh_agent "python3 /opt/appmes…" Less than a second ago Up Less than a second
k8s_native-cmd-test_myjob-rp6gp_default_473ca690-c685-4d97-b135-499b40c7ad24_0
3e482b6cf175 registry.aliyuncs.com/google_containers/pause:3.4.1 "/pause" 8 seconds ago Up 8 seconds k8s_POD_myjob-rp6gp_default_473ca690-c685-4d97-b135-499b40c7ad24_0
69cd63beddf3 kubernetesui/dashboard "/dashboard --insecu…" 3 hours ago Up 3 hours k8s_kubernetes-dashboard_kubernetes-dashboard-1621683118-6dfd7fb446-hbhbj_kube-system_0adaa5dd-e5aa-46d1-9855-ac9fde6afe27_0
5dac52459e05 registry.aliyuncs.com/google_containers/pause:3.4.1 "/pause" 3 hours ago Up 3 hours k8s_POD_kubernetes-dashboard-1621683118-6dfd7fb446-hbhbj_kube-system_0adaa5dd-e5aa-46d1-9855-ac9fde6afe27_0
54739eda7c37 3885a5b7f138 "/coredns -conf /etc…" 7 hours ago Up 7 hours k8s_coredns_coredns-545d6fc579-fxzm7_kube-system_6b9073e8-1d25-4362-a78f-09fd964647ab_0
7c79f918b323 3885a5b7f138 "/coredns -conf /etc…" 7 hours ago Up 7 hours k8s_coredns_coredns-545d6fc579-8lxbm_kube-system_4083590b-588f-436e-8ab9-367e659aca44_0
d565259460ab registry.aliyuncs.com/google_containers/pause:3.4.1 "/pause" 7 hours ago Up 7 hours k8s_POD_coredns-545d6fc579-8lxbm_kube-system_4083590b-588f-436e-8ab9-367e659aca44_0
5164ed1d0f5a registry.aliyuncs.com/google_containers/pause:3.4.1 "/pause" 7 hours ago Up 7 hours k8s_POD_coredns-545d6fc579-fxzm7_kube-system_6b9073e8-1d25-4362-a78f-09fd964647ab_0
4e875b475432 ff281650a721 "/opt/bin/flanneld -…" 7 hours ago Up 7 hours k8s_kube-flannel_kube-flannel-ds-amd64-s7xlv_kube-system_721629f8-37c9-4ba6-a5a8-6da2338821df_0
67dfd0f306f0 registry.aliyuncs.com/google_containers/pause:3.4.1 "/pause" 7 hours ago Up 7 hours k8s_POD_kube-flannel-ds-amd64-s7xlv_kube-system_721629f8-37c9-4ba6-a5a8-6da2338821df_0
499ee792a968 4359e752b596 "/usr/local/bin/kube…" 7 hours ago Up 7 hours k8s_kube-proxy_kube-proxy-dd8tg_kube-system_22aa23ea-31bb-43db-b291-d45eb299da61_0
a96e5c736f9e registry.aliyuncs.com/google_containers/pause:3.4.1 "/pause" 7 hours ago Up 7 hours k8s_POD_kube-proxy-dd8tg_kube-system_22aa23ea-31bb-43db-b291-d45eb299da61_0
ebac7a8ecc0f 0369cf4303ff "etcd --advertise-cl…" 7 hours ago Up 7 hours k8s_etcd_etcd-appmesh_kube-system_5d160e57e8635cd0c69135b7b768045b_0
23a5c9d28c68 771ffcf9ca63 "kube-apiserver --ad…" 7 hours ago Up 7 hours k8s_kube-apiserver_kube-apiserver-appmesh_kube-system_3c1f54f06e9a4e45f00deb20f8bacdc6_0
294e4e18d348 e16544fd47b0 "kube-controller-man…" 7 hours ago Up 7 hours k8s_kube-controller-manager_kube-controller-manager-appmesh_kube-system_d1b968d45ab2d7c9ed9d656c91ce03e4_0
.
.
.
.
.
.