七、部署网络组件
在 所有node节点上操作
#上传 cni-plugins-linux-amd64-v0.8.6.tgz 和 flannel.tar 到 /opt 目录中 cd /opt/ docker load -i flannel.tar #加载到本地,传到node2,也加载 mkdir -p /opt/cni/bin tar zxvf cni-plugins-linux-amd64-v0.8.6.tgz -C /opt/cni/bin
在 master01 节点上操作
cd /opt/k8s kubectl apply -f kube-flannel.yml kubectl get pods -n kube-system NAME READY STATUS RESTARTS AGE kube-flannel-ds-hjtc7 1/1 Running 0 7s kubectl get nodes NAME STATUS ROLES AGE VERSION 192.168.80.11 Ready <none> 81m v1.20.11 #上传 kube-flannel.yml 文件到 /opt/k8s 目录中,部署 CNI 网络 #创建相关资源 [root@master01 k8s]# kubectl apply -f kube-flannel.yml #查看指定命令空间 [root@master01 k8s]# kubectl get pods -n kube-system NAME READY STATUS RESTARTS AGE kube-flannel-ds-5h4nl 1/1 Running 0 9s kube-flannel-ds-cnjh8 1/1 Running 0 9s #查看节点状态 [root@master01 k8s]# kubectl get nodes NAME STATUS ROLES AGE VERSION 192.168.109.132 Ready <none> 22m v1.20.11 192.168.109.133 Ready <none> 12m v1.20.11
八、部署 CoreDNS
在所有 node 节点上操作
#上传 coredns.tar 到 /opt 目录中 cd /opt docker load -i coredns.tar
在 master01 节点上操作
#上传 coredns.yaml 文件到 /opt/k8s 目录中,部署 CoreDNS cd /opt/k8s kubectl apply -f coredns.yaml kubectl get pods -n kube-system NAME READY STATUS RESTARTS AGE coredns-6954c77b9b-knt7b 1/1 Running 0 10s kube-flannel-ds-5h4nl 1/1 Running 0 5m28s kube-flannel-ds-cnjh8 1/1 Running 0 5m28s #DNS 解析测试 kubectl run -it --rm dns-test --image=busybox:1.28.4 sh If you don't see a command prompt, try pressing enter. / # nslookup kubernetes Server: 10.0.0.2 Address 1: 10.0.0.2 kube-dns.kube-system.svc.cluster.local Name: kubernetes Address 1: 10.0.0.1 kubernetes.default.svc.cluster.local
九、部署 Dashboard
在node节点操作
#上传dashboard.tar和metrics-scraper.tar到opt #加载 docker load -i dashboard.tar docker load -i metrics-scraper.tar #传送并加载 scp dashboard.tar metrics-scraper.tar 192.168.109.133:/opt
在 master01 节点上操作
#上传 recommended.yaml 文件到 /opt/k8s 目录中 cd /opt/k8s vim recommended.yaml #默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部: kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: ports: - port: 443 targetPort: 8443 nodePort: 30001 #添加 type: NodePort #添加 selector: k8s-app: kubernetes-dashboard #加载资源 kubectl apply -f recommended.yaml #查看kubernetes-dashboard命名空间下的pod kubectl get pods -n kubernetes-dashboard NAME READY STATUS RESTARTS AGE dashboard-metrics-scraper-7b59f7d4df-w7cds 1/1 Running 0 10m kubernetes-dashboard-74d688b6bc-9sjrv 1/1 Running 0 10m #查看所有命令空间下的pod资源 kubectl get pods -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-6954c77b9b-knt7b 1/1 Running 1 3h51m kube-system kube-flannel-ds-5h4nl 1/1 Running 1 3h56m kube-system kube-flannel-ds-cnjh8 1/1 Running 1 3h56m kubernetes-dashboard dashboard-metrics-scraper-7b59f7d4df-w7cds 1/1 Running 0 12m kubernetes-dashboard kubernetes-dashboard-74d688b6bc-9sjrv 1/1 Running 0 12m #创建service account并绑定默认cluster-admin管理员集群角色 kubectl create serviceaccount dashboard-admin -n kube-system kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin #查看到登录需要的token kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}') #查看kubernetes-dashboard运行在哪个节点ip上 kubectl get pods -A -o wide NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kube-system coredns-6954c77b9b-knt7b 1/1 Running 1 3h52m 10.244.0.3 192.168.109.132 <none> <none> kube-system kube-flannel-ds-5h4nl 1/1 Running 1 3h57m 192.168.109.133 192.168.109.133 <none> <none> kube-system kube-flannel-ds-cnjh8 1/1 Running 1 3h57m 192.168.109.132 192.168.109.132 <none> <none> kubernetes-dashboard dashboard-metrics-scraper-7b59f7d4df-w7cds 1/1 Running 0 14m 10.244.0.4 192.168.109.132 <none> <none> kubernetes-dashboard kubernetes-dashboard-74d688b6bc-9sjrv 1/1 Running 0 14m 10.244.1.3 192.168.109.133 <none> <none> #使用输出的token登录Dashboard https://192.168.109.133:30001
总结
1. 关于etcd
etcd分布式键值对数据库,服务发现系统
go语言开发的使用raft一致性算法
集群时需3台或以上的奇数台组成
2379对外(客户端)通信的端口
2380对内(集群内部节点间)通信的端口
2. etcd 安装步骤
准备ca证书和私钥文件,使用ca签发服务端证书和私钥文件
使用ca证书、服务端证书和私钥文件加上etcd 集群配置文件去启动etcd 服务
复制etcd工作目录和服务管理文件到另外几个节点上,修改etcd集群配置文件并启动etcd服务使用
v3版本的接口执行etcdctl+证书选项+(endpoint health I endpoint status I member list)查看etcd集群和节点状态
3. master组件安装过程
1.先安装apiserver
准备组件的相关证书和私钥文件
准备bootstrap token认证文件(给kubelet启动时签发证书时使用)
准备组件的启动配置文件
启动apiserver 服务端口号6443 https
2.再启动 controller-manager和scheduler
准备启动配置文件
准备证书和私钥文件生成kubeconfig文件(用于指定对接哪个apiserver,使用什么证书认证)
启动服务
3.检查集群组件状态
需要准备kubeconfig 文件把 kubectl加入到集群中(指定对接哪个apiserver,使用什么证书认证)
kubectl get cs
4. node组件安装过程
准备kubeconfig文件
启动kubelet,发送csr 请求证书
启动kube-proxy
安装CNI网络插件,实现pod跨主机的通信
安装CoreDNS插件,可以实现service名称解析到clusterIP