『高级篇』docker之kubernetes基础集群部署(下)(34)
admin
2023-04-08 02:02:55
0

原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
原文链接地址:『高级篇』docker之kubernetes基础集群部署(下)(34)

这次继续集群的部署simple版本(下)。源码:https://github.com/limingios/msA-docker k8s分支和https://github.com/limingios/kubernetes-starter

『高级篇』docker之kubernetes基础集群部署(下)(34)

部署Scheduler(主节点)

简介

kube-scheduler负责分配调度Pod到集群内的节点上,它监听kube-apiserver,查询还未分配Node的Pod,然后根据调度策略为这些Pod分配节点。我们前面讲到的kubernetes的各种调度策略就是它实现的。

部署

通过系统服务方式部署

cp ~/kubernetes-starter/target/master-node/kube-scheduler.service /lib/systemd/system/
systemctl enable kube-scheduler.service
service kube-scheduler start
journalctl -f -u kube-scheduler

『高级篇』docker之kubernetes基础集群部署(下)(34)

重点配置说明
vi /lib/systemd/system/kube-scheduler.service 

[Unit]
Description=Kubernetes Scheduler
...
[Service]
ExecStart=/home/michael/bin/kube-scheduler \
#对外服务的监听地址,这里表示只有本机的程序可以访问它
--address=127.0.0.1 \
#apiserver的url
--master=http://127.0.0.1:8080 \
...

『高级篇』docker之kubernetes基础集群部署(下)(34)

PS:最重要的三个核心组件就部署完了 ,

部署CalicoNode(所有节点)

它是通过系统服务加docker的方式来完成的。

简介

Calico实现了CNI接口,是kubernetes网络方案的一种选择,它一个纯三层的数据中心网络方案(不需要Overlay),并且与OpenStack、Kubernetes、AWS、GCE等IaaS和容器平台都有良好的集成。
Calico在每一个计算节点利用Linux Kernel实现了一个高效的vRouter来负责数据转发,而每个vRouter通过BGP协议负责把自己上运行的workload的路由信息像整个Calico网络内传播——小规模部署可以直接互联,大规模下可通过指定的BGP route reflector来完成。 这样保证最终所有的workload之间的数据流量都是通过IP路由的方式完成互联的。

部署

calico是通过系统服务+docker方式完成的

cp ~/kubernetes-starter/target/all-node/kube-calico.service /lib/systemd/system/
systemctl enable kube-calico.service
service kube-calico start
journalctl -f -u kube-calico

『高级篇』docker之kubernetes基础集群部署(下)(34)

『高级篇』docker之kubernetes基础集群部署(下)(34)

『高级篇』docker之kubernetes基础集群部署(下)(34)

『高级篇』docker之kubernetes基础集群部署(下)(34)

查看配置
vi /lib/systemd/system/kube-calico.service

『高级篇』docker之kubernetes基础集群部署(下)(34)

『高级篇』docker之kubernetes基础集群部署(下)(34)

『高级篇』docker之kubernetes基础集群部署(下)(34)
『高级篇』docker之kubernetes基础集群部署(下)(34)

calico可用性验证

查看容器运行情况

docker ps

『高级篇』docker之kubernetes基础集群部署(下)(34)

『高级篇』docker之kubernetes基础集群部署(下)(34)

『高级篇』docker之kubernetes基础集群部署(下)(34)

查看节点运行情况

calicoctl node status

『高级篇』docker之kubernetes基础集群部署(下)(34)

『高级篇』docker之kubernetes基础集群部署(下)(34)

『高级篇』docker之kubernetes基础集群部署(下)(34)

查看端口BGP 协议是通过TCP 连接来建立邻居的,因此可以用netstat 命令验证 BGP Peer

netstat -natp|grep ESTABLISHED|grep 179

查看集群ippool情况[主节点]

calicoctl get ipPool -o yaml

『高级篇』docker之kubernetes基础集群部署(下)(34)

5.4 重点配置说明

[Unit]
Description=calico node
...
[Service]
#以docker方式运行
ExecStart=/usr/bin/docker run --net=host --privileged --name=calico-node \
#指定etcd endpoints(这里主要负责网络元数据一致性,确保Calico网络状态的准确性)
-e ETCD_ENDPOINTS=http://192.168.66.101:2379 \
#网络地址范围(同上面ControllerManager)
-e CALICO_IPV4POOL_CIDR=172.20.0.0/16 \
#镜像名,为了加快大家的下载速度,镜像都放到了阿里云上
registry.cn-hangzhou.aliyuncs.com/imooc/calico-node:v2.6.2

配置kubectl命令(主节点)

简介

kubectl是Kubernetes的命令行工具,是Kubernetes用户和管理员必备的管理工具。
kubectl提供了大量的子命令,方便管理Kubernetes集群中的各种功能。

初始化

使用kubectl的第一步是配置Kubernetes集群以及认证方式,包括:

  • cluster信息:api-server地址
  • 用户信息:用户名、密码或密钥
  • Context:cluster、用户信息以及Namespace的组合

我们这没有安全相关的东西,只需要设置好api-server和上下文就好啦:

#指定apiserver地址(ip替换为你自己的api-server地址)
kubectl config set-cluster kubernetes  --server=http://192.168.66.101:8080
#指定设置上下文,指定cluster
kubectl config set-context kubernetes --cluster=kubernetes
#选择默认的上下文
kubectl config use-context kubernetes

『高级篇』docker之kubernetes基础集群部署(下)(34)

通过上面的设置最终目的是生成了一个配置文件:~/.kube/config,当然你也可以手写或复制一个文件放在那,就不需要上面的命令了。

『高级篇』docker之kubernetes基础集群部署(下)(34)

配置kubelet(工作节点102,103这2两台机器)

简介

每个工作节点上都运行一个kubelet服务进程,默认监听10250端口,接收并执行master发来的指令,管理Pod及Pod中的容器。每个kubelet进程会在API Server上注册节点自身信息,定期向master节点汇报节点的资源使用情况,并通过cAdvisor监控节点和容器的资源。

部署

通过系统服务方式部署,但步骤会多一些,具体如下:

#确保相关目录存在
mkdir -p /var/lib/kubelet
mkdir -p /etc/kubernetes
mkdir -p /etc/cni/net.d

#复制kubelet服务配置文件
cp ~/kubernetes-starter/target/worker-node/kubelet.service /lib/systemd/system/
#复制kubelet依赖的配置文件
cp ~/kubernetes-starter/target/worker-node/kubelet.kubeconfig /etc/kubernetes/
#复制kubelet用到的cni插件配置文件
cp ~/kubernetes-starter/target/worker-node/10-calico.conf /etc/cni/net.d/

systemctl enable kubelet.service
service kubelet start
journalctl -f -u kubelet

『高级篇』docker之kubernetes基础集群部署(下)(34)

『高级篇』docker之kubernetes基础集群部署(下)(34)

主节点查看node的信息
kubectl get nodes

『高级篇』docker之kubernetes基础集群部署(下)(34)

重点配置说明

kubelet.service

[Unit]
Description=Kubernetes Kubelet
[Service]
#kubelet工作目录,存储当前节点容器,pod等信息
WorkingDirectory=/var/lib/kubelet
ExecStart=/home/michael/bin/kubelet \
#对外服务的监听地址
--address=192.168.66.103 \
#指定基础容器的镜像,负责创建Pod 内部共享的网络、文件系统等,这个基础容器非常重要:K8S每一个运行的 POD里面必然包含这个基础容器,如果它没有运行起来那么你的POD 肯定创建不了
--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/imooc/pause-amd64:3.0 \
#访问集群方式的配置,如api-server地址等
--kubeconfig=/etc/kubernetes/kubelet.kubeconfig \
#声明cni网络插件
--network-plugin=cni \
#cni网络配置目录,kubelet会读取该目录下得网络配置
--cni-conf-dir=/etc/cni/net.d \
#指定 kubedns 的 Service IP(可以先分配,后续创建 kubedns 服务时指定该 IP),--cluster-domain 指定域名后缀,这两个参数同时指定后才会生效
--cluster-dns=10.68.0.2 \
...

kubelet.kubeconfig
kubelet依赖的一个配置,格式看也是我们后面经常遇到的yaml格式,描述了kubelet访问apiserver的方式

apiVersion: v1
clusters:
- cluster:
#跳过tls,即是kubernetes的认证
insecure-skip-tls-verify: true
#api-server地址
server: http://192.168.1.102:8080
...

calico.conf
calico作为kubernets的CNI插件的配置

{  
  "name": "calico-k8s-network",  
  "cniVersion": "0.1.0",  
  "type": "calico",  
    
    "ed_endpoints": "http://192.168.1.102:2379",  
    "logevel": "info",  
    "ipam": {  
        "type": "calico-ipam"  
   },  
    "kubernetes": {  
        
        "k8s_api_root": "http://192.168.1.102:8080"  
    }  
}  

PS:每次安装都需要看日志的,老铁不要认为看日志麻烦,看日志其实是为了避免后续的问题存在,走一步稳一步!后续在出现问题了,就更麻烦。下次老铁我们一起在这个集群上面做下测试和练习。

『高级篇』docker之kubernetes基础集群部署(下)(34)

相关内容

热门资讯

徐巧芯剖析赖清德:最怕自己丢掉... 海峡导报综合报道 大罢免投票一周年纪念活动26日举行,台北市长蒋万安出席并怒轰,民进党一年过后仍没有...
中国红十字会总会紧急向广东调拨... 记者从中国红十字会总会了解到,针对台风“红霞”给广东造成的灾情,中国红十字会总会启动四级应急响应,紧...
这些少年,正被“毒蛋”围猎 李梦抽了几口电子烟,吐出了白色的烟雾,有一股浓烈的水果香味。随后,她看着自己握电子烟的手,跟身边人说...
蒋万安号召“倒阁”,卢秀燕认为... 海峡导报综合报道 台北市长蒋万安27日抛出震撼议题,表示多名民代向他提议推动“倒阁”,要求台行政机构...
特朗普将在白宫会见两位重要客人 俄乌战争仍未结束,美伊冲突又有升级风险。在此背景下,美国总统特朗普将在白宫接见乌克兰和以色列领导人。...
新租客打扫卧室柜子上掉落4万元... 近日,莲前西路某小区内,张倩签下一套房子的租赁合同。当天上午,她带着12岁的大女儿周馨怡和11岁的小...
六部门通告:禁止涉军队退役报废... 关于禁止涉军队退役报废装备销售活动的通告近年来,部分经营者在线上线下公开销售涉及我军退役报废装备(指...
九寨沟景区发生泥石流,部分道路... 7月26日,九寨沟风景名胜区管理局发布泥石流灾害通报:2026年7月26日15时50分,九寨沟景区局...
空调26度不凉是什么原因 从空调内部元器件来说,不凉的原因有可能是温度传感器出现故障了,也有可能是空调压缩机或者铜管出现问题,...
鲸鸿动能携手香港国际机场、鸿蒙...   2026 年 7 月 25 日,十余位鸿蒙车主组成的车队从珠海出发,经港珠澳大桥通关抵达香港国际...