『高级篇』docker之kubernetes基础集群附在功能kube-proxy和kube-dns(36)

栏目: 编程工具 · 发布时间: 5年前

内容简介:上次搭建了kubernetes最核心最基础的服务,也学习了一些命令,现在咱们在这个之上proxy和dns,虽然这2个功能非常非常的重要,但是从技术层面他们属于kubernetes的附加组件,可以有也可以没有,如果需要service的功能可以添加kubernetes proxy,如果需要dns通过名字解析服务就需要增加kubernetes dns组件。非必须的功能做成组件的形式,而不是必须安装的形式。这也说明了kubernetes的设计,尽量避免这种强依赖,首先就为集群增加proxy的功能。源码:https

上次搭建了kubernetes最核心最基础的服务,也学习了一些命令,现在咱们在这个之上proxy和dns,虽然这2个功能非常非常的重要,但是从技术层面他们属于kubernetes的附加组件,可以有也可以没有,如果需要service的功能可以添加kubernetes proxy,如果需要dns通过名字解析服务就需要增加kubernetes dns组件。非必须的功能做成组件的形式,而不是必须安装的形式。这也说明了kubernetes的设计,尽量避免这种强依赖,首先就为集群增加proxy的功能。源码:https://github.com/limingios/msA-docker k8s分支和https://github.com/limingios/kubernetes-starter 基础集群的搭建查看32节到34节

为集群增加service功能 – kube-proxy(工作节点102,103)

简介

每台工作节点上都应该运行一个kube-proxy服务,它监听API server中service和endpoint的变化情况,并通过iptables等来为服务配置负载均衡,是让我们的服务在集群外可以被访问到的重要方式。

部署

通过系统服务方式部署:

#确保工作目录存在
mkdir -p /var/lib/kube-proxy
#复制kube-proxy服务配置文件
cp ~/kubernetes-starter/target/worker-node/kube-proxy.service /lib/systemd/system/
#复制kube-proxy依赖的配置文件
cp ~/kubernetes-starter/target/worker-node/kube-proxy.kubeconfig /etc/kubernetes/

systemctl enable kube-proxy.service
service kube-proxy start
journalctl -f -u kube-proxy

『高级篇』docker之kubernetes基础集群附在功能kube-proxy和kube-dns(36)

『高级篇』docker之kubernetes基础集群附在功能kube-proxy和kube-dns(36)

9.3 重点配置说明

kube-proxy.service

[Unit]

Description=Kubernetes Kube-Proxy Server

[Service]

#工作目录

WorkingDirectory=/var/lib/kube-proxy

ExecStart=/home/michael/bin/kube-proxy \

#监听地址

–bind-address=192.168.1.103 \

#依赖的配置文件,描述了kube-proxy如何访问api-server

–kubeconfig=/etc/kubernetes/kube-proxy.kubeconfig \

102的kube-proxy

[Unit]
Description=Kubernetes Kube-Proxy Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target
[Service]
WorkingDirectory=/var/lib/kube-proxy
ExecStart=/root/bin/kube-proxy \
  --bind-address=192.168.66.102 \
  --hostname-override=192.168.66.102 \
  --kubeconfig=/etc/kubernetes/kube-proxy.kubeconfig \
  --logtostderr=true \
  --v=2
Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

『高级篇』docker之kubernetes基础集群附在功能kube-proxy和kube-dns(36)

103的kube-proxy

[Unit]
Description=Kubernetes Kube-Proxy Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target
[Service]
WorkingDirectory=/var/lib/kube-proxy
ExecStart=/root/bin/kube-proxy \
  --bind-address=192.168.66.103 \
  --hostname-override=192.168.66.103 \
  --kubeconfig=/etc/kubernetes/kube-proxy.kubeconfig \
  --logtostderr=true \
  --v=2
Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

『高级篇』docker之kubernetes基础集群附在功能kube-proxy和kube-dns(36)

kube-proxy.kubeconfig

配置了kube-proxy如何访问api-server,内容与kubelet雷同,不再赘述。

操练service

  • 查看service

    >api的时候就建立的一个service,查看类型是Type:ClusterIp,它有一个虚拟的Ip(10.68.0.1)相当于给apiservice做成了一个服务,一个是集群内的其他组件,可以通过这个ip直接进行访问,不需要依赖具体worker的ip地址了,负载均衡,apiserver的高可用,通过apiserver的ip来完成。上次访问对应的deployment,都是启动代理,然后另一个窗口通过curl的方式来进行访问。

kubectl get services
kubectl describe serivce kubernetes

『高级篇』docker之kubernetes基础集群附在功能kube-proxy和kube-dns(36)

  • deploy升级成为service

    >感觉比较乱,命令去执行的2个端口target-port 和port ,在执行service的时候又出现了一个端口,

  1. 随机的端口23492节点启动的端口,可以通过端口访问服务
  2. target-port 这个端口实际启动的端口
  3. port 虚拟ip下需要访问的端口
kubectl expose deploy kubernetes-bootcamp --type="NodePort" --target-port=8080 --port=80

『高级篇』docker之kubernetes基础集群附在功能kube-proxy和kube-dns(36)

  • worker访问
curl http://192.168.66.103:23492

『高级篇』docker之kubernetes基础集群附在功能kube-proxy和kube-dns(36)

  • 进入容器内部访问的话

    >通过docker ps 找到容器id,进入容器exec -it 后

curl http://10.68.99.134:80

都是可以curl通的这是符合k8s的规范的pod之间是互通的。

  • 通过yaml文件将pod生成services
vi nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  ports:
  - port: 8080
    targetPort: 80
    nodePort: 20000
  selector:
    app: nginx
  type: NodePort

『高级篇』docker之kubernetes基础集群附在功能kube-proxy和kube-dns(36)

『高级篇』docker之kubernetes基础集群附在功能kube-proxy和kube-dns(36)

为集群增加dns功能 – kube-dns(app)

简介

kube-dns为Kubernetes集群提供命名服务,主要用来解析集群服务名和Pod的hostname。目的是让pod可以通过名字访问到集群内服务。它通过添加A记录的方式实现名字和service的解析。普通的service会解析到service-ip。headless service会解析到pod列表。

部署

通过kubernetes应用的方式部署

kube-dns.yaml文件基本与官方一致(除了镜像名不同外)。

里面配置了多个组件,之间使用”—“分隔

#到kubernetes-starter目录执行命令
kubectl create -f target/services/kube-dns.yaml

『高级篇』docker之kubernetes基础集群附在功能kube-proxy和kube-dns(36)

在特定的命名空间中

 kubectl -n kube-system get svc 

『高级篇』docker之kubernetes基础集群附在功能kube-proxy和kube-dns(36)

只要安装了这个后,直接可以通过名称访问

说白了 只要运行dns服务,就可以直接用啦。

PS:基础集群的没有经过认证授权,也就基本完成了,这些组件就是每个k8s公司所必须的,非常重要非常核心,整个集群的搭建让老铁对k8s有个深入的了解,了解每个组件都是干啥用的,让老铁觉得k8s没有那么复杂,通过上边的安装,确实没有mesos和swarm那么简单,但是也没有那么复杂。一定要熟悉k8s的命令。下次了解下认证的授权。

『高级篇』docker之kubernetes基础集群附在功能kube-proxy和kube-dns(36)

百度未收录

>>原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!

>>原文链接地址:上一篇:

已是最新文章


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Data Structures and Algorithm Analysis in Java

Data Structures and Algorithm Analysis in Java

Mark A. Weiss / Pearson / 2011-11-18 / GBP 129.99

Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course wa......一起来看看 《Data Structures and Algorithm Analysis in Java》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

MD5 加密
MD5 加密

MD5 加密工具