前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Kubernetes(k8s)安装dns附件组件以及使用

Kubernetes(k8s)安装dns附件组件以及使用

作者头像
别先生
发布于 2020-06-23 03:24:50
发布于 2020-06-23 03:24:50
1.3K00
代码可运行
举报
文章被收录于专栏:别先生别先生
运行总次数:0
代码可运行

1、K8s附加组件DNS服务。

答:Kubernetes中有一个很重要的特性,服务子发现。一旦一个service被创建,该service的service ip和service port等信息都可以被注入到pod中供它们使用。kubernetes主要支持两种service发现机制,第一种是环境变量,第二种是DNS。没有dns服务的时候,kubernetes会采用环境变量的形式,一个有很多service,环境变量会变得很复杂,为了解决这个问题,我们使用DNS服务。

2、Pod的环境变量如何查看呢?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 [root@k8s-master ~]# kubectl get all -o wide
 2 NAME       DESIRED   CURRENT   READY     AGE       CONTAINER(S)   IMAGE(S)                             SELECTOR
 3 rc/mysql   1         1         1         16h       mysql          192.168.110.133:5000/mysql:5.7.30    app=mysql
 4 rc/myweb   1         1         1         1h        myweb          192.168.110.133:5000/tomcat:latest   app=myweb
 5 
 6 NAME             CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE       SELECTOR
 7 svc/kubernetes   10.254.0.1       <none>        443/TCP          13d       <none>
 8 svc/mysql        10.254.245.194   <none>        3306/TCP         16h       app=mysql
 9 svc/myweb        10.254.222.197   <nodes>       8080:30008/TCP   1h        app=myweb
10 
11 NAME             READY     STATUS    RESTARTS   AGE       IP            NODE
12 po/mysql-537xf   1/1       Running   1          16h       172.16.16.3   k8s-master
13 po/myweb-8b7n3   1/1       Running   0          1h        172.16.32.3   k8s-node3
14 [root@k8s-master ~]# kubectl exec -it myweb-8b7n3 /bin/bas
15 base64      basename    bash        bashbug     bashbug-64  
16 [root@k8s-master ~]# kubectl exec -it myweb-8b7n3 /bin/bas
17 base64      basename    bash        bashbug     bashbug-64  
18 [root@k8s-master ~]# kubectl exec -it myweb-8b7n3 /bin/bash
19 root@myweb-8b7n3:/usr/local/tomcat# env 
20 KUBERNETES_SERVICE_PORT_HTTPS=443
21 MYSQL_PORT=tcp://10.254.245.194:3306
22 MYSQL_PORT_3306_TCP_ADDR=10.254.245.194
23 KUBERNETES_SERVICE_PORT=443
24 MYSQL_PORT_3306_TCP_PORT=3306
25 HOSTNAME=myweb-8b7n3
26 JAVA_HOME=/usr/local/openjdk-11
27 GPG_KEYS=05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23
28 JAVA_BASE_URL=https://github.com/AdoptOpenJDK/openjdk11-upstream-binaries/releases/download/jdk-11.0.7%2B10/OpenJDK11U-jdk_
29 MYSQL_PORT_3306_TCP=tcp://10.254.245.194:3306
30 PWD=/usr/local/tomcat
31 JAVA_URL_VERSION=11.0.7_10
32 TOMCAT_SHA512=75e16a00e02782961a7753dc9afaf6d209afa5f22d320319778fd0ee5e3b47009da522ac735599f1739bff6e809c2da9081dbbd4b8de54a82cf5b8cfbd8030ff
33 TOMCAT_MAJOR=9
34 HOME=/root
35 LANG=C.UTF-8
36 KUBERNETES_PORT_443_TCP=tcp://10.254.0.1:443
37 TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-lib
38 TERM=xterm
39 MYSQL_SERVICE_PORT=3306
40 CATALINA_HOME=/usr/local/tomcat
41 MYSQL_SERVICE_HOST=10.254.245.194
42 MYSQL_PORT_3306_TCP_PROTO=tcp
43 SHLVL=1
44 KUBERNETES_PORT_443_TCP_PROTO=tcp
45 KUBERNETES_PORT_443_TCP_ADDR=10.254.0.1
46 LD_LIBRARY_PATH=/usr/local/tomcat/native-jni-lib
47 KUBERNETES_SERVICE_HOST=10.254.0.1
48 KUBERNETES_PORT=tcp://10.254.0.1:443
49 KUBERNETES_PORT_443_TCP_PORT=443
50 PATH=/usr/local/tomcat/bin:/usr/local/openjdk-11/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
51 TOMCAT_VERSION=9.0.36
52 JAVA_VERSION=11.0.7
53 _=/usr/bin/env
54 root@myweb-8b7n3:/usr/local/tomcat# java -version
55 openjdk version "11.0.7" 2020-04-14
56 OpenJDK Runtime Environment 18.9 (build 11.0.7+10)
57 OpenJDK 64-Bit Server VM 18.9 (build 11.0.7+10, mixed mode)
58 root@myweb-8b7n3:/usr/local/tomcat# 

如果有几个Service就会有几个环境变量,这里进行简单的过滤。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 root@myweb-hsdwn:/usr/local/tomcat# env | grep -iE 'kubernetes|mysql|myweb'
 2 KUBERNETES_SERVICE_PORT_HTTPS=443
 3 MYSQL_PORT=tcp://10.254.207.238:3306
 4 MYSQL_PORT_3306_TCP_ADDR=10.254.207.238
 5 KUBERNETES_SERVICE_PORT=443
 6 MYSQL_PORT_3306_TCP_PORT=3306
 7 HOSTNAME=myweb-hsdwn
 8 MYSQL_PORT_3306_TCP=tcp://10.254.207.238:3306
 9 KUBERNETES_PORT_443_TCP=tcp://10.254.0.1:443
10 MYSQL_SERVICE_PORT=3306
11 MYSQL_SERVICE_HOST=10.254.207.238
12 MYSQL_PORT_3306_TCP_PROTO=tcp
13 KUBERNETES_PORT_443_TCP_PROTO=tcp
14 KUBERNETES_PORT_443_TCP_ADDR=10.254.0.1
15 KUBERNETES_SERVICE_HOST=10.254.0.1
16 KUBERNETES_PORT=tcp://10.254.0.1:443
17 KUBERNETES_PORT_443_TCP_PORT=443
18 root@myweb-hsdwn:/usr/local/tomcat# 
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 root@myweb-hsdwn:/usr/local/tomcat# env | grep -iE 'kubernetes|mysql|myweb' | wc -l
2 16
3 root@myweb-hsdwn:/usr/local/tomcat# 

如果环境变量过多的话,会变得很复杂,所以引入了DNS服务。

3、下载DNS的资料包,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 [root@k8s-master tomcat_demo]# wget https://www.qstack.com.cn/skydns.zip
 2 --2020-06-18 15:31:25--  https://www.qstack.com.cn/skydns.zip
 3 Resolving www.qstack.com.cn (www.qstack.com.cn)... 123.125.46.149, 111.202.85.37
 4 Connecting to www.qstack.com.cn (www.qstack.com.cn)|123.125.46.149|:443... connected.
 5 HTTP request sent, awaiting response... 200 OK
 6 Length: 3411 (3.3K) [application/zip]
 7 Saving to: ‘skydns.zip’
 8 
 9 100%[======================================================================================>] 3,411       --.-K/s   in 0s      
10 
11 2020-06-18 15:31:26 (40.5 MB/s) - ‘skydns.zip’ saved [3411/3411]
12 
13 [root@k8s-master tomcat_demo]# ls
14 mysql-rc.yml  mysql-svc.yml  skydns.zip  tomcat-rc.yml  tomcat-svc.yml
15 [root@k8s-master tomcat_demo]# cd ..
16 [root@k8s-master k8s]# mv tomcat_demo/skydns.zip .
17 [root@k8s-master k8s]# ls
18 book-master.war  deploy  pod  rc  skydns.zip  svc  tomcat_demo  tomcat_demo.zip
19 [root@k8s-master k8s]# unzip skydns.zip 
20 Archive:  skydns.zip
21    creating: skydns/
22   inflating: skydns/skydns-rc.yaml   
23   inflating: skydns/skydns-svc.yaml  
24   inflating: skydns/test_dns_pod.yaml  
25 [root@k8s-master k8s]# ls
26 book-master.war  deploy  pod  rc  skydns  skydns.zip  svc  tomcat_demo  tomcat_demo.zip
27 [root@k8s-master k8s]# 

修改skydns-rc.yaml配置文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  1 # Copyright 2016 The Kubernetes Authors.
  2 #
  3 # Licensed under the Apache License, Version 2.0 (the "License");
  4 # you may not use this file except in compliance with the License.
  5 # You may obtain a copy of the License at
  6 #
  7 #     http://www.apache.org/licenses/LICENSE-2.0
  8 #
  9 # Unless required by applicable law or agreed to in writing, software
 10 # distributed under the License is distributed on an "AS IS" BASIS,
 11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12 # See the License for the specific language governing permissions and
 13 # limitations under the License.
 14 
 15 # TODO - At some point, we need to rename all skydns-*.yaml.* files to kubedns-*.yaml.*
 16 # Should keep target in cluster/addons/dns-horizontal-autoscaler/dns-horizontal-autoscaler.yaml
 17 # in sync with this file.
 18 
 19 # __MACHINE_GENERATED_WARNING__
 20 
 21 apiVersion: extensions/v1beta1
 22 kind: Deployment
 23 metadata:
 24   name: kube-dns
 25   namespace: kube-system
 26   labels:
 27     k8s-app: kube-dns
 28     kubernetes.io/cluster-service: "true"
 29 spec:
 30   replicas: 1
 31   # replicas: not specified here:
 32   # 1. In order to make Addon Manager do not reconcile this replicas parameter.
 33   # 2. Default is 1.
 34   # 3. Will be tuned in real time if DNS horizontal auto-scaling is turned on.
 35   strategy:
 36     rollingUpdate:
 37       maxSurge: 10%
 38       maxUnavailable: 0
 39   selector:
 40     matchLabels:
 41       k8s-app: kube-dns
 42   template:
 43     metadata:
 44       labels:
 45         k8s-app: kube-dns
 46       annotations:
 47         scheduler.alpha.kubernetes.io/critical-pod: ''
 48         scheduler.alpha.kubernetes.io/tolerations: '[{"key":"CriticalAddonsOnly", "operator":"Exists"}]'
 49     spec:
 50       containers:
 51       - name: kubedns
 52         image: myhub.fdccloud.com/library/kubedns-amd64:1.9
 53         resources:
 54           # TODO: Set memory limits when we've profiled the container for large
 55           # clusters, then set request = limit to keep this container in
 56           # guaranteed class. Currently, this container falls into the
 57           # "burstable" category so the kubelet doesn't backoff from restarting it.
 58           limits:
 59             memory: 170Mi
 60           requests:
 61             cpu: 100m
 62             memory: 70Mi
 63         livenessProbe:
 64           httpGet:
 65             path: /healthz-kubedns
 66             port: 8080
 67             scheme: HTTP
 68           initialDelaySeconds: 60
 69           timeoutSeconds: 5
 70           successThreshold: 1
 71           failureThreshold: 5
 72         readinessProbe:
 73           httpGet:
 74             path: /readiness
 75             port: 8081
 76             scheme: HTTP
 77           # we poll on pod startup for the Kubernetes master service and
 78           # only setup the /readiness HTTP server once that's available.
 79           initialDelaySeconds: 3
 80           timeoutSeconds: 5
 81         args:
 82         - --domain=cluster.local.
 83         - --dns-port=10053
 84         - --config-map=kube-dns
 85         - --kube-master-url=http://10.0.0.11:8080
 86         # This should be set to v=2 only after the new image (cut from 1.5) has
 87         # been released, otherwise we will flood the logs.
 88         - --v=0
 89         #__PILLAR__FEDERATIONS__DOMAIN__MAP__
 90         env:
 91         - name: PROMETHEUS_PORT
 92           value: "10055"
 93         ports:
 94         - containerPort: 10053
 95           name: dns-local
 96           protocol: UDP
 97         - containerPort: 10053
 98           name: dns-tcp-local
 99           protocol: TCP
100         - containerPort: 10055
101           name: metrics
102           protocol: TCP
103       - name: dnsmasq
104         image: myhub.fdccloud.com/library/kube-dnsmasq-amd64:1.4
105         livenessProbe:
106           httpGet:
107             path: /healthz-dnsmasq
108             port: 8080
109             scheme: HTTP
110           initialDelaySeconds: 60
111           timeoutSeconds: 5
112           successThreshold: 1
113           failureThreshold: 5
114         args:
115         - --cache-size=1000
116         - --no-resolv
117         - --server=127.0.0.1#10053
118         #- --log-facility=-
119         ports:
120         - containerPort: 53
121           name: dns
122           protocol: UDP
123         - containerPort: 53
124           name: dns-tcp
125           protocol: TCP
126         # see: https://github.com/kubernetes/kubernetes/issues/29055 for details
127         resources:
128           requests:
129             cpu: 150m
130             memory: 10Mi
131       - name: dnsmasq-metrics
132         image: myhub.fdccloud.com/library/dnsmasq-metrics-amd64:1.0
133         livenessProbe:
134           httpGet:
135             path: /metrics
136             port: 10054
137             scheme: HTTP
138           initialDelaySeconds: 60
139           timeoutSeconds: 5
140           successThreshold: 1
141           failureThreshold: 5
142         args:
143         - --v=2
144         - --logtostderr
145         ports:
146         - containerPort: 10054
147           name: metrics
148           protocol: TCP
149         resources:
150           requests:
151             memory: 10Mi
152       - name: healthz
153         image: myhub.fdccloud.com/library/exechealthz-amd64:1.2
154         resources:
155           limits:
156             memory: 50Mi
157           requests:
158             cpu: 10m
159             # Note that this container shouldn't really need 50Mi of memory. The
160             # limits are set higher than expected pending investigation on #29688.
161             # The extra memory was stolen from the kubedns container to keep the
162             # net memory requested by the pod constant.
163             memory: 50Mi
164         args:
165         - --cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1 >/dev/null
166         - --url=/healthz-dnsmasq
167         - --cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1:10053 >/dev/null
168         - --url=/healthz-kubedns
169         - --port=8080
170         - --quiet
171         ports:
172         - containerPort: 8080
173           protocol: TCP
174       dnsPolicy: Default  # Don't use cluster DNS.

需要将此地址的ip地址修改为自己api-server的地址。

开始创建RC,创建需要很长时间的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 [root@k8s-master skydns]# kubectl create -f skydns-rc.yaml 
2 deployment "kube-dns" created
3 [root@k8s-master skydns]# 

开始创建SVC,修改配置文件,使用kubectl get svc查看CLUSTER-IP的地址,只要未被使用,就可以配置到skydns-svc.yaml 配置文件中即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 [root@k8s-master ~]# kubectl get svc 
2 NAME         CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
3 kubernetes   10.254.0.1       <none>        443/TCP          13d
4 mysql        10.254.207.238   <none>        3306/TCP         42m
5 myweb        10.254.29.22     <nodes>       8080:30008/TCP   28m
6 [root@k8s-master ~]# 

创建svc的命令,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 [root@k8s-master skydns]# vim skydns-svc.yaml 
2 [root@k8s-master skydns]# kubectl create -f skydns-svc.yaml 
3 service "kube-dns" created
4 [root@k8s-master skydns]#

根据命名空间来查看创建好的pod,可以看到这个Pod里面的四个容器都已经运行起来了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 [root@k8s-master skydns]# kubectl get pod --namespace=kube-system
2 NAME                       READY     STATUS    RESTARTS   AGE
3 kube-dns-778415672-f9ssw   4/4       Running   0          6m
4 [root@k8s-master skydns]# 
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 [root@k8s-master skydns]# kubectl get all --namespace=kube-system
 2 NAME              DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
 3 deploy/kube-dns   1         1         1            1           7m
 4 
 5 NAME           CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
 6 svc/kube-dns   10.254.230.254   <none>        53/UDP,53/TCP   3m
 7 
 8 NAME                    DESIRED   CURRENT   READY     AGE
 9 rs/kube-dns-778415672   1         1         1         7m
10 
11 NAME                          READY     STATUS    RESTARTS   AGE
12 po/kube-dns-778415672-f9ssw   4/4       Running   0          7m
13 [root@k8s-master skydns]# 

如果希望所有的Pod都使用DNS的话,还需要修改一下配置文件。修改kubelet配置,修改各个node节点上的/etc/kubernetes/kubelet配置文件,增加如下行。然后再重启各个node节点的kubelet。

4、修改kubelet配置,修改各个node节点上的/etc/kubernetes/kubelet配置文件,增加如下行。然后再重启各个node节点的kubelet。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 KUBELET_ARGS="--cluster_dns=10.254.230.254 --cluster_domain=cluster.local"

这个地址就是刚才自己配置的svc的地址,可以使用命令进行查看。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 [root@k8s-master skydns]# vim /etc/kubernetes/kubelet 
2 [root@k8s-master skydns]# kubectl get svc --namespace=kube-system
3 NAME       CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
4 kube-dns   10.254.230.254   <none>        53/UDP,53/TCP   9m
5 [root@k8s-master skydns]# 

然后重启三台Node节点的kubelet服务。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 [root@k8s-master skydns]# systemctl restart kubelet.service 
2 
3 [root@k8s-node2 ~]# systemctl restart kubelet.service
4 
5 [root@k8s-node3 ~]# systemctl restart kubelet.service

如何测试DNS是否生效呢,可以使用下面的配置进行测试。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 [root@k8s-master skydns]# ls
 2 skydns-rc.yaml  skydns-svc.yaml  test_dns_pod.yaml
 3 [root@k8s-master skydns]# cat test_dns_pod.yaml 
 4 apiVersion: v1
 5 kind: Pod
 6 metadata:
 7   labels:
 8     name: busybox
 9     role: master
10   name: busybox2
11 spec:
12   containers:
13   - name: busybox
14     image: docker.io/busybox:latest
15     imagePullPolicy: IfNotPresent
16     command:
17     - sleep
18     - "3600"
19 [root@k8s-master skydns]# kubectl create -f test_dns_pod.yaml 
20 pod "busybox2" created
21 [root@k8s-master skydns]# kubectl get pods
22 NAME          READY     STATUS    RESTARTS   AGE
23 busybox2      1/1       Running   0          20s
24 mysql-lmx4s   1/1       Running   0          59m
25 myweb-hsdwn   1/1       Running   0          45m
26 [root@k8s-master skydns]# kubectl exec -it busybox2 sh
27 / # 

可以检测一下,svc的vip是否可以解析出来。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 / # nslookup mysql
2 Server:        10.254.230.254
3 Address:    10.254.230.254:53
4 
5 Name:    mysql.default.svc.cluster.local
6 Address: 10.254.207.238

可以看出来和SVC的地址一样。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 [root@k8s-master ~]# kubectl get svc 
2 NAME         CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
3 kubernetes   10.254.0.1       <none>        443/TCP          13d
4 mysql        10.254.207.238   <none>        3306/TCP         1h
5 myweb        10.254.29.22     <nodes>       8080:30008/TCP   46m
6 [root@k8s-master ~]# 

注意,刚才创建的dns服务,只有新起的pod里面才可以使用,如果已经存在的pod里面还没有使用dns服务的。如果想要之前的pod使用dns服务,需要将他们删除掉,重新创建一下的。

备注:如果配置好了DNS之后,创建的RC里面就可以不使用环境变量的地址(即VIP的地址),可以使用service(svc)的名称既可以找到这个service。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-06-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Kubernetes(k8s)持久化存储PV和PVC
答:k8s中的副本控制器保证了pod的始终存储,却保证不了Pod中的数据。只有启动一个新pod的,之前pod中的数据会随着容器的删掉而丢失。k8s中的rc启动指定数量的Pod,当某个Pod死掉了,会在新的节点启动新的Pod,k8s中想要实现数据持久化,需要使用一个叫做共享存储的,让Pod里面的数据挂载到这个共享存储上面,就算在新的节点启动新的Pod,依然可以保证数据不丢失。
别先生
2020/07/06
1.4K0
Kubernetes(k8s)持久化存储PV和PVC
Kubernetes(k8s)中namespace的作用、反向代理访问k8s中的应用、k8s监控服务heapster
答:Namespace命名空间,是kubernetes系统中的另一个非常重要的概念,Namespace在很多情况下用于实现多租户的资源隔离,不同的业务可以使用不同的namespace进行隔离。
别先生
2020/06/30
2K0
Kubernetes(k8s)中namespace的作用、反向代理访问k8s中的应用、k8s监控服务heapster
K8s集群部署篇–Kube-DNS(三)
1、部署Cluster DNS 1.1 原理:(看看吧,摘抄网上的↓) 通过前面对Kubernetes的讨论(Kubernetes核心概念总结).我们已经知道,每个Kubernetes service都绑定了一个虚拟IP 地址(ClusterIP),而且Kubernetes最初使用向pod中注入环境变量的方式实现服务发现,但这会带来环境变量泛滥等问题。故需要增加集群DNS服务为每个service映射一个域名。到Kubernetes v1.2版本时,DNS作为一个系统可选插件集成到Kubernetes集群中。
老七Linux
2018/05/31
2.3K0
k8s集群之kubernetes-dashboard和kube-dns组件部署安装
k8s集群之kubernetes-dashboard和kube-dns组件部署安装
三杯水Plus
2018/11/14
1.7K0
Kubernetes(k8s)的弹性伸缩
答:Hpa(全称叫做Horizontal Pod Autoscaler),Horizontal Pod Autoscaler的操作对象是Replication Controller、ReplicaSet或者Deployment对应的Pod(k8s中可以控制Pod的是rc、rs、deployment),根据观察到的CPU使用量与用户的阈值进行比对,做出是否需要增加或者减少实例数量的决策。controller目前使用heapSter来检测CPU使用量,检测周期默认是30秒。
别先生
2020/07/03
1.6K0
Kubernetes(k8s)的deployment资源
答:deployment也是保证pod高可用的一种方式,明明已经有RC(Replication Controller),为什么还要引入deployment呢?是因为deployment解决了RC(Replication Controller)的一个痛点。是因为RC在进行版本升级的时候,会造成一个问题,就是它的svc(Service)短时间内访问不了了,deployment就是解决这个问题的。
别先生
2020/06/23
9230
Kubernetes(k8s)的deployment资源
Kubernetes(k8s)中dashboard的部署。
1、k8s的dashboard的安装部署,首先需要将压缩包下载下来,然后进行解压缩操作。
别先生
2020/06/24
1.1K0
Kubernetes(k8s)中dashboard的部署。
Kubernetes(k8s)的Service资源
答:运行在docker中的业务,想要被外界访问,我们需要为它做端口映射才能被访问,那么运行在k8s中的容器,为什么不能直接为它做端口映射呢?
别先生
2020/06/14
9370
Docker集群编排工具之Kubernetes(K8s)介绍、安装及使用
K8s基础原理 k8s中文社区:https://www.kubernetes.org.cn/ 简介 Kubernetes与较早的集群管理系统Mesos和YARN相比,对容器尤其是 Docker的支持更加原生,同时提供了更强大的机制实现资源调度,自动 管理容器生命周期,负载均衡,高可用等底层功能,使开发者可以专注于开发应用。 Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用
863987322
2018/03/29
5K0
Docker集群编排工具之Kubernetes(K8s)介绍、安装及使用
K8S基础搭建使用
由上可见,需要本地镜像仓库需要 pod-infrastructure:latest 这个 pod 基础镜像,所以需要在拉取镜像 docker pull tianyebj/pod-infrastructure,并且 push 到本地镜像仓库
cuijianzhe
2022/06/14
5390
K8S基础搭建使用
Kubernetes(k8s)中Pod资源的健康检查
答:1)、livenessProbe,健康状态检查,周期性检查服务是否存活,检查结果失败,将重启容器。 2)、readinessProbe,可用性检查,周期性检查服务是否可用,不可用将从service的endpoints中移除。
别先生
2020/06/23
1.1K0
Kubernetes(k8s)中Pod资源的健康检查
Kubernetes 编排系统
1.1 Kubernetes简介 1.1.1 什么是Kubernetes Kubernetes (通常称为K8s,K8s是将8个字母“ubernete”替换为“8”的缩写) 是用于自动部署、扩展和管理
惨绿少年
2018/03/30
3K1
k8s实践(11) --服务发现CoreDNS和Kubernetes内部域名解析
从Kubernetes 1.11开始,可使用CoreDNS作为Kubernetes的DNS插件进入GA状态,Kubernetes推荐使用CoreDNS作为集群内的DNS服务。 我们先看一下Kubernetes DNS服务的发展历程。
黄规速
2022/04/14
4.2K0
k8s实践(11) --服务发现CoreDNS和Kubernetes内部域名解析
k8s之DNS服务器搭建
在使用k8s部署springboot+redis简单应用这篇文章中,spring boot连接redis是直接使用的IP连接,那么可不可以直接使用服务名称进行连接呢?答案是可以的,这就是k8s集群范围内的DNS服务来完成服务名到ClusterIP的解析,接下来就一起看一下如何搭建DNS服务器。
Liusy
2020/11/03
6640
kubernetes学习记录(5)——服务发现机制与Cluster DNS的安装(无CA认证版)
胡了了
2017/12/28
1.8K0
kubernetes学习记录(5)——服务发现机制与Cluster DNS的安装(无CA认证版)
附011.Kubernetes-DNS及搭建
作为服务发现机制的基本功能,在集群内需要能够通过服务名对服务进行访问,因此需要一个集群范围内的DNS服务来完成从服务名到ClusterIP的解析。
木二
2019/12/10
8640
附011.Kubernetes-DNS及搭建
002.Kubernetes简单入门实例
提示:若不关闭鉴权,可能出现以下报错:Error creating: No API token found for service account "default"……
木二
2019/11/15
4770
Kubernetes集群配置DNS服务
本文将在前文的基础上介绍在kubernetes集群环境中配置dns服务,在k8s集群中,pod的生命周期是短暂的,pod重启后ip地址会产生变化,对于应用程序来说这是不可接受的,为解决这个问题,K8S集群巧妙的引入的dns服务来实现服务的发现,在k8s集群中dns总共需要使用4个组件,各组件分工如下: etcd:DNS存储 kube2sky:将Kubernetes Master中的service(服务)注册到etcd。 skyDNS:提供DNS域名解析服务。 healthz:提供对skydns服务的健康检查。
星哥玩云
2022/07/13
1.3K0
Kubernetes集群配置DNS服务
Centos7使用yum方式部署Kubernetes1.5集群
yum安装的etcd默认配置文件在/etc/etcd/etcd.conf。编辑配置文件,更改以下带颜色部分信息:
菲宇
2019/06/12
7420
Centos7使用yum方式部署Kubernetes1.5集群
Kubernetes K8S之Service服务详解与示例
Kubernetes Service定义了这样一种抽象:逻辑上的一组 Pod,一种可以访问它们的策略 —— 通常被称为微服务。这一组 Pod 能够被 Service 访问到,通常是通过 selector实现的。
踏歌行
2020/10/15
3.6K0
Kubernetes K8S之Service服务详解与示例
相关推荐
Kubernetes(k8s)持久化存储PV和PVC
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文