.netcore 通过Flurl验证k8s内部访问与获取环境变量 (二) 电脑版发表于:2020/4/20 10:26  >#.netcore验证k8s内部访问与获取环境变量 (二) [TOC] <br/> 修改k8s-name项目 ------------ <br/> >#### NameController.cs ```csharp [ApiController] [Route("[controller]")] public class NameController : ControllerBase { [HttpGet] public ActionResult<string> Get(){ var host = Environment.GetEnvironmentVariable("HOSTNAME_COMMAND"); if(string.IsNullOrEmpty(host)) return "empty"; return host; } } ``` <br/> >#### 修改YAML文件并自定义ENV(环境变量) >注意:这里的 **HOSTNAME_COMMAND** 环境变量获取的是自身**pod**节点的名称 ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: name-api namespace: netcore labels: name: name-api spec: replicas: 3 selector: matchLabels: name: name-api template: metadata: labels: name: name-api spec: containers: - name: name-api env: - name: HOSTNAME_COMMAND valueFrom: fieldRef: fieldPath: metadata.name image: aidasi/name-api:v2 ports: - containerPort: 80 imagePullPolicy: Always --- kind: Service apiVersion: v1 metadata: name: name-api namespace: netcore spec: type: NodePort ports: - port: 80 targetPort: 80 selector: name: name-api ``` <br/> 通过Docker发布 name-api:v2 版本 ------------ 参考以往文章 https://www.tnblog.net/hb/article/details/3499 Docker Hub 地址: https://hub.docker.com/repository/docker/aidasi/name-api <br/> 覆盖已经发布的Yaml文件与请求测试 ------------ >执行命令: `kubectl apply -f deploy.yaml` 与 `kubectl get pod,svc,deploy -o wide -n netcore` <br/>  <br/> >发布成功! 然后我们通过关联节点请求相关Service `curl http://192.168.255.218/Name` <br/>  <br/> >但有时候,由于我们请求得太快 **导致HTTP请求保持着连接** 然后一直访问的是同一个**Pod** <br/> >所以有时候不得不换一种方式进行请求 `curl -H "Connection: KeepAlive=false" -H "Keep-Alive: timeout=0" http://192.168.255.218/Name` <br/> 