在使用k8s 中,难免有一些实例需要添加hosts绑定,最土的办法就是把这个hosts写在dockfile里。但是这样稍显麻烦,其实k8s本身就可以实现这样的功能。
官方文档
https://kubernetes.io/zh/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
在Deployment 配置中配置 Host 文件中添加 192.168.10.10
映射到 www.baidu.com
域名,Deployment 内容如下
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: tomcat-test-sy
namespace: test
labels:
app: tomcat-test-sy
spec:
selector:
matchLabels:
app: tomcat-test-sy
revisionHistoryLimit: 5
replicas: 1
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
template:
metadata:
labels:
app: tomcat-test-sy
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- tomcat-test-sy
topologyKey: kubernetes.io/hostname
terminationGracePeriodSeconds: 60
nodeSelector:
apptype: memnode
hostAliases: #配置hosts文件
- ip: "192.168.10.10" #配置解析的IP
hostnames:
- "www.baidu.com" #配置域名
containers:
- name: tomcat-test-sy
image: docker-mirror.siku.cn/test/tomcat-test-sy:20200409
securityContext:
privileged: true
imagePullPolicy: Always
env:
- name: JAVA_OPTS
value: "-Xmx2688M -Xms2688M -Xmn960M -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M -XX:+UseConcMarkSweepGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses -XX:+CMSClassUnloadingEnabled -XX:+ParallelRefProcEnabled -XX:+CMSScavengeBeforeRemark -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/dump-logs/tomcat-test-sy/dump.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/data/dump-logs/tomcat-test-sy/heap_trace.log -Dnetworkaddress.cache.ttl=30 -Dsun.net.inetaddr.ttl=30"
- name: HOST_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
resources:
limits:
cpu: "2"
memory: "4096M"
requests:
cpu: "1"
memory: "4096M"
[rsync@tomcat-test]$ kubectl get pods -n test -l app=tomcat-test-sy
NAME READY STATUS RESTARTS AGE
tomcat-test-sy-fdb5466d-mps2d 1/1 Running 0 88s
[rsync@tomcat-test]$ kubectl exec -it tomcat-test-sy-fdb5466d-mps2d bash -n test
[root@tomcat-test-sy-fdb5466d-mps2d /]# cat /etc/hosts
# Kubernetes-managed hosts file.
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
fe00::0 ip6-mcastprefix
fe00::1 ip6-allnodes
fe00::2 ip6-allrouters
10.49.7.251 tomcat-test-sy-fdb5466d-mps2d
# Entries added by HostAliases.
192.168.10.10 www.baidu.com
可以看到,解析已经加进host里面。