Kubernetes 0-1 K8S部署coredns

在K8S集群未部署DNS之前脂凶,K8S中運行的Pod是無法訪問外部網絡的土涝,因為無法完成域名解析碘饼。

比如我們運行一個busybox的Pod课蔬,然后在Pod里面是無法ping通外部網絡的:

[root@k8s-master01 ~]# kubectl run -it --rm busybox --image=busybox sh
If you don't see a command prompt, try pressing enter.
/ # ping www.baidu.com
ping: bad address 'www.baidu.com'

我們可以通過在K8S中部署coredns解決這一問題。

準備coredns.yaml文件容客,寫入文件內容:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: coredns
  namespace: kube-system
  labels:
      kubernetes.io/cluster-service: "true"
      addonmanager.kubernetes.io/mode: Reconcile
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    kubernetes.io/bootstrapping: rbac-defaults
    addonmanager.kubernetes.io/mode: Reconcile
  name: system:coredns
rules:
- apiGroups:
  - ""
  resources:
  - endpoints
  - services
  - pods
  - namespaces
  verbs:
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - nodes
  verbs:
  - get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  annotations:
    rbac.authorization.kubernetes.io/autoupdate: "true"
  labels:
    kubernetes.io/bootstrapping: rbac-defaults
    addonmanager.kubernetes.io/mode: EnsureExists
  name: system:coredns
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:coredns
subjects:
- kind: ServiceAccount
  name: coredns
  namespace: kube-system
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
  labels:
      addonmanager.kubernetes.io/mode: EnsureExists
data:
  Corefile: |
    .:53 {
        errors
        health {
            lameduck 5s
        }
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
            pods insecure
            fallthrough in-addr.arpa ip6.arpa
            ttl 30
        }
        prometheus :9153
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: coredns
  namespace: kube-system
  labels:
    k8s-app: kube-dns
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
    kubernetes.io/name: "CoreDNS"
spec:
  # replicas: not specified here:
  # 1. In order to make Addon Manager do not reconcile this replicas parameter.
  # 2. Default is 1.
  # 3. Will be tuned in real time if DNS horizontal auto-scaling is turned on.
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
  selector:
    matchLabels:
      k8s-app: kube-dns
  template:
    metadata:
      labels:
        k8s-app: kube-dns
      annotations:
        seccomp.security.alpha.kubernetes.io/pod: 'runtime/default'
    spec:
      priorityClassName: system-cluster-critical
      serviceAccountName: coredns
      tolerations:
        - key: "CriticalAddonsOnly"
          operator: "Exists"
      nodeSelector:
        kubernetes.io/os: linux
      containers:
      - name: coredns
        image: k8s.gcr.io/coredns:1.6.7
        imagePullPolicy: IfNotPresent
        resources:
          limits:
            memory: 160Mi
          requests:
            cpu: 100m
            memory: 70Mi
        args: [ "-conf", "/etc/coredns/Corefile" ]
        volumeMounts:
        - name: config-volume
          mountPath: /etc/coredns
          readOnly: true
        ports:
        - containerPort: 53
          name: dns
          protocol: UDP
        - containerPort: 53
          name: dns-tcp
          protocol: TCP
        - containerPort: 9153
          name: metrics
          protocol: TCP
        livenessProbe:
          httpGet:
            path: /health
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 60
          timeoutSeconds: 5
          successThreshold: 1
          failureThreshold: 5
        readinessProbe:
          httpGet:
            path: /ready
            port: 8181
            scheme: HTTP
        securityContext:
          allowPrivilegeEscalation: false
          capabilities:
            add:
            - NET_BIND_SERVICE
            drop:
            - all
          readOnlyRootFilesystem: true
      dnsPolicy: Default
      volumes:
        - name: config-volume
          configMap:
            name: coredns
            items:
            - key: Corefile
              path: Corefile
---
apiVersion: v1
kind: Service
metadata:
  name: kube-dns
  namespace: kube-system
  annotations:
    prometheus.io/port: "9153"
    prometheus.io/scrape: "true"
  labels:
    k8s-app: kube-dns
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
    kubernetes.io/name: "CoreDNS"
spec:
  selector:
    k8s-app: kube-dns
  clusterIP: 10.0.0.2
  ports:
  - name: dns
    port: 53
    protocol: UDP
  - name: dns-tcp
    port: 53
    protocol: TCP
  - name: metrics
    port: 9153
    protocol: TCP

運行命令:

kubectl apply -f coredns.yaml

查看coredns部署情況:

[root@k8s-master01 ~]# kubectl get pod -A
NAMESPACE     NAME                          READY   STATUS    RESTARTS   AGE
kube-system   coredns-6879cc89dc-ngsld      1/1     Running   0          3m
kube-system   kube-flannel-ds-amd64-bgjt4   1/1     Running   1          6d14h
kube-system   kube-flannel-ds-amd64-dqlkc   1/1     Running   1          6d14h

可以看到coredns的Pod已經啟動秕铛,這是我們再次測試Pod內部的網絡訪問情況:

[root@k8s-master01 ~]# kubectl run -it --rm busybox --image=busybox sh
If you don't see a command prompt, try pressing enter.
/ # ping www.baidu.com
PING www.baidu.com (14.215.177.39): 56 data bytes
64 bytes from 14.215.177.39: seq=0 ttl=127 time=14.441 ms
64 bytes from 14.215.177.39: seq=1 ttl=127 time=26.355 ms
...

可以正常解析约郁。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市但两,隨后出現(xiàn)的幾起案子鬓梅,更是在濱河造成了極大的恐慌,老刑警劉巖谨湘,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绽快,死亡現(xiàn)場離奇詭異,居然都是意外死亡紧阔,警方通過查閱死者的電腦和手機坊罢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來擅耽,“玉大人活孩,你說我怎么就攤上這事」猿穑” “怎么了诱鞠?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長这敬。 經常有香客問我,道長蕉朵,這世上最難降的妖魔是什么崔涂? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮始衅,結果婚禮上冷蚂,老公的妹妹穿的比我還像新娘。我一直安慰自己汛闸,他們只是感情好蝙茶,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著诸老,像睡著了一般隆夯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上别伏,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天蹄衷,我揣著相機與錄音,去河邊找鬼厘肮。 笑死愧口,一個胖子當著我的面吹牛,可吹牛的內容都是我干的类茂。 我是一名探鬼主播耍属,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼托嚣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了厚骗?” 一聲冷哼從身側響起示启,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎溯捆,沒想到半個月后丑搔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡提揍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年啤月,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片劳跃。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡谎仲,死狀恐怖,靈堂內的尸體忽然破棺而出刨仑,到底是詐尸還是另有隱情郑诺,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布杉武,位于F島的核電站辙诞,受9級特大地震影響,放射性物質發(fā)生泄漏轻抱。R本人自食惡果不足惜飞涂,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望祈搜。 院中可真熱鬧较店,春花似錦、人聲如沸容燕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蘸秘。三九已至官卡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秘血,已是汗流浹背味抖。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留灰粮,地道東北人仔涩。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像粘舟,于是被迫代替她去往敵國和親熔脂。 傳聞我的和親對象是個殘疾皇子佩研,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348