文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏

这个周末我花了一点时间玩了一下 Kubernetes ,然后尝试了一下网文件中写引入机器名的功能。

我使用一个超棒的工具 —— minikube 来创建一个本地的 Kubernetes 集群实验环境。第一步就是把机器启动:

$ minikube start
Starting local Kubernetes cluster...
Kubectl is now configured to use the cluster.

首先我需要知道如何获取主机名,我希望可以通过访问一个环境变量来获得。我们可以调用 env 命令来查看容器中所有的环境变量列表。因此我创建了一个 pod 模板来显示这些信息:

第 1 段(可获 1.45 积分)

Hostname_Super_Simple.yaml

apiVersion: v1
kind: Pod
metadata:
  name: mark-super-simple-test-pod
spec:
  containers:
    - name: test-container
      image: gcr.io/google_containers/busybox:1.24
      command: [ "/bin/sh", "-c", "env" ]      
  dnsPolicy: Default
  restartPolicy: Never

紧接着我从模板中创建一个 pod 并检查该 pod 的日志:

$ kubectl create -f hostname_super_simple.yaml 
pod "mark-super-simple-test-pod" created
$ kubectl logs  mark-super-simple-test-pod
KUBERNETES_SERVICE_PORT=443
KUBERNETES_PORT=tcp://10.0.0.1:443
HOSTNAME=mark-super-simple-test-pod
SHLVL=1
HOME=/root
KUBERNETES_PORT_443_TCP_ADDR=10.0.0.1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT_443_TCP=tcp://10.0.0.1:443
PWD=/
KUBERNETES_SERVICE_HOST=10.0.0.1
第 2 段(可获 0.26 积分)

我们所需的信息就在 $HOSTNAME 变量中,所以接下来我们需要做的就是创建一个 pod 模板,该模板将这个信息写到文件中。

Hostname_Simple.yaml

apiVersion: v1
kind: Pod
metadata:
  name: mark-test-pod
spec:
  containers:
    - name: test-container
      image: gcr.io/google_containers/busybox:1.24
      command: [ "/bin/sh", "-c", "echo $HOSTNAME > /tmp/bar; cat /tmp/bar" ]
  dnsPolicy: Default
  restartPolicy: Never

我们可以通过下面命令来从模板中创建 pod

$ kubectl create -f hostname_simple.yaml
pod "mark-test-pod" created

现在来检查一下实例的日志,并查看脚本是否工作正常:

$ kubectl logs mark-test-pod
mark-test-pod

是的,相当好!

第 3 段(可获 0.79 积分)

文章评论

一叶障目
小编一个人玩得很开心的样子~
CY2
很短,顺手就搞定了 ~
苏州小浮云
自娱自乐 哈哈