【云原生 · k8s】k8s-master初始化过程讲解

心已赠人 2024-03-31 15:48 157阅读 0赞

文章目录

    • 1、k8s-master初始化过程讲解
    • 2、k8s-master运行的组件查看,控制平面(官网说法)查看
    • 3、此时主节点就可以用
    • 4、加入k8s-node到集群中
    • 5、k8s-master主节点,查看所有工作节点的信息
    • 6、如何让集群就绪呢?部署网络插件
    • 7、为何所有节点,都有了网络插件进程
    • 9、至此,所有机器,都走flannel进行集群通信了。
    • 10、配置k8s命令补全(重要)
    • 11、发出pod创建请求,运行一个nginx-pod
    • 12、如何修改这个页面

1、k8s-master初始化过程讲解

\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CsbbnZA4-1670327877727)(pic/1663045974261.png)\]

  1. 中间的组件创建过程,以及ssl证书创建过程,暂时不用看,以后回国头再看
  2. # k8s-master成功装好了
  3. Your Kubernetes control-plane has initialized successfully!
  4. To start using your cluster, you need to run the following as a regular user:
  5. # 创建k8s集群配置文件
  6. # 制定了,默认的ssl整数在哪,api-server的地址,等
  7. mkdir -p $HOME/.kube
  8. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  9. sudo chown $(id -u):$(id -g) $HOME/.kube/config
  10. ======================-===============
  11. # pod分布再多个机器上,pod互相之间链接,得部署,集群网络,选用flannel网络插件
  12. # 安装,使用即可。
  13. You should now deploy a pod network to the cluster.
  14. ==================================
  15. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  16. https://kubernetes.io/docs/concepts/cluster-administration/addons/
  17. # 使用如下命令,将k8s-node加入集群即可,
  18. Then you can join any number of worker nodes by running the following on each as root:
  19. ===================================================
  20. # join添加到集群中
  21. kubeadm join 10.0.0.10:6443 --token vf7bng.p0lkay3nygloh561 \
  22. --discovery-token-ca-cert-hash sha256:ddedb46b4e161fb487ae3ceab0b014283df1afbe7cf1604804e1d075ceeaf69a
  23. ====================================
  24. [root@k8s-master-10 ~]#
  25. # k8s-master初始化结果,讲解,听懂6666

2、k8s-master运行的组件查看,控制平面(官网说法)查看

\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WBBtRrU2-1670327877729)(pic/1663046296639.png)\]

构成k8s主节点。

3、此时主节点就可以用

查看 k8s集群状态,查看有哪些工作节点

  1. 客户端命令
  2. # 可以直接和api-server交互,查询 你要的信息
  3. # 这个命令,默认会去加载ssl证书,确保安全
  4. # 以后再聊,kubectl的整数添加参数
  5. # 再主节点上,使用这个命令是可以直接用的
  6. kubectl get nodes
  7. # 显示更详细的信息
  8. kubectl get nodes -owide

\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IfN7rIhq-1670327877729)(pic/1663046505728.png)\]

4、加入k8s-node到集群中

  1. 只需要用上述的集群命令添加即可。

\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h4lI4pVl-1670327877730)(pic/1663046591195.png)\]

此时node机器就可以和master机器 通信 了,走kubelet进程

  1. [root@k8s-node-12 ~]#netstat -tunlp
  2. Active Internet connections (only servers)
  3. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  4. tcp 0 0 127.0.0.1:44061 0.0.0.0:* LISTEN 13018/kubelet
  5. tcp 0 0 127.0.0.1:10248 0.0.0.0:* LISTEN 13018/kubelet
  6. tcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN 13454/kube-proxy
  7. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1022/sshd
  8. tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1255/master
  9. tcp6 0 0 :::10250 :::* LISTEN 13018/kubelet
  10. tcp6 0 0 :::10256 :::* LISTEN 13454/kube-proxy
  11. tcp6 0 0 :::22 :::* LISTEN 1022/sshd
  12. tcp6 0 0 ::1:25 :::* LISTEN 1255/master
  13. udp 0 0 127.0.0.1:323 0.0.0.0:* 1623/chronyd
  14. udp6 0 0 ::1:323 :::* 1623/chronyd

该进程是以什么形式运行的?

宿主机直接,以1号进程,systemd去启动的kubelet进程

  1. systemctl status kubelet 查看

5、k8s-master主节点,查看所有工作节点的信息

\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pXY62R3m-1670327877731)(pic/1663046822032.png)\]

  1. 查看k8s集群,用到了哪些机器

6、如何让集群就绪呢?部署网络插件

  1. # 1. 下载网络插件的,配置文件 ,yaml以及配置文件
  2. git clone --depth 1 https://github.com/coreos/flannel.git
  3. # 2.再k8s主节点上,应用这个yaml,基于yaml,创建具体的pod过程。
  4. # 3.如果需要修改pod运行网络的话,要改配置文件,
  5. /root/flannel-master/Documentation/kube-flannel.yml
  6. # 创建k8s资源,都是写这种yml文件了
  7. [root@k8s-master-10 ~/flannel-master/Documentation]#grep 'Network' -A 5 kube-flannel.yml
  8. "Network": "10.2.0.0/16",
  9. "Backend": {
  10. "Type": "vxlan"
  11. }
  12. }
  13. ---
  14. # 修改的第二处,夸主机的容器通信,最终不得走宿主机的物理网卡。
  15. # 告诉flannel的你物理网卡是谁
  16. containers:
  17. - name: kube-flannel
  18. #image: flannelcni/flannel:v0.19.2 for ppc64le and mips64le (dockerhub limitations may apply)
  19. image: docker.io/rancher/mirrored-flannelcni-flannel:v0.19.2
  20. command:
  21. - /opt/bin/flanneld
  22. args:
  23. - --ip-masq
  24. - --kube-subnet-mgr
  25. - --iface=ens33
  26. # 基于kubectl命令,应用这个yml文件,读取,以及创建pod资源
  27. [root@k8s-master-10 ~/flannel-master/Documentation]#kubectl create -f ./kube-flannel.yml
  28. namespace/kube-flannel created
  29. clusterrole.rbac.authorization.k8s.io/flannel created
  30. clusterrolebinding.rbac.authorization.k8s.io/flannel created
  31. serviceaccount/flannel created
  32. configmap/kube-flannel-cfg created
  33. daemonset.apps/kube-flannel-ds created
  34. # 查看当前机器的容器,关于flannel网络插件的进程
  35. [root@k8s-master-10 ~/flannel-master/Documentation]#docker ps |grep flannel
  36. 812ebf6b0578 registry.aliyuncs.com/google_containers/pause:3.2 "/pause" 31 seconds ago Up 31 seconds k8s_POD_kube-flannel-ds-9x4l2_kube-flannel_37b34022-cc0d-47c3-b677-3fe657374dbc_0
  37. 修改pod网络的网段地址,根据kubeadm init 初始化时,设置的地址来

\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NjMl1BIj-1670327877732)(pic/1663047963226.png)\]

7、为何所有节点,都有了网络插件进程

\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T9uOK4v6-1670327877733)(pic/1663048368816.png)\]

9、至此,所有机器,都走flannel进行集群通信了。

  1. [root@k8s-master-10 ~/flannel-master/Documentation]#kubectl get nodes -o wide
  2. NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
  3. k8s-master-10 Ready master 41m v1.19.3 10.0.0.10 <none> CentOS Linux 7 (Core) 3.10.0-862.el7.x86_64 docker://19.3.15
  4. k8s-node-11 Ready <none> 31m v1.19.3 10.0.0.11 <none> CentOS Linux 7 (Core) 3.10.0-862.el7.x86_64 docker://19.3.15
  5. k8s-node-12 Ready <none> 31m v1.19.3 10.0.0.12 <none> CentOS Linux 7 (Core) 3.10.0-862.el7.x86_64 docker://19.3.15
  6. [root@k8s-master-10 ~/flannel-master/Documentation]## 至此表示,3个节点,集群通信OK,可以pod部署了,。看懂111
  7. [root@k8s-master-10 ~/flannel-master/Documentation]#
  8. [root@k8s-master-10 ~/flannel-master/Documentation]#
  9. [root@k8s-master-10 ~/flannel-master/Documentation]#
  10. [root@k8s-master-10 ~/flannel-master/Documentation]#
  11. [root@k8s-master-10 ~/flannel-master/Documentation]## 至此表示,3个节点,集群通信OK,可以pod部署了,。看懂111
  12. [root@k8s-master-10 ~/flannel-master/Documentation]#

确保集群所有节点,就绪状态

10、配置k8s命令补全(重要)

  1. k8s命令太多,务必要配置补全
  2. 操作节点:k8s-master
  3. yum install bash-completion -y
  4. source /usr/share/bash-completion/bash_completion
  5. source <(kubectl completion bash)
  6. echo "source <(kubectl completion bash)" >> ~/.bashrc

11、发出pod创建请求,运行一个nginx-pod

  1. # 查看命令帮助
  2. kubectl run --help
  3. # 后台运行一个nginx ,1.14.1 pod ,看结果
  4. [root@k8s-master-10 ~/flannel-master/Documentation]#kubectl run linux0224-pod-1-nginx --image=nginx:1.14.1
  5. pod/linux0224-pod-1-nginx created
  6. # 如何查看pod信息? get 查询
  7. [root@k8s-master-10 ~/flannel-master/Documentation]#kubectl get pods -owide
  8. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
  9. linux0224-pod-1-nginx 1/1 Running 0 38s 10.2.2.2 k8s-node-11 <none> <none>

\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6MMQnZfS-1670327877735)(pic/1663048691733.png)\]

访问pod-ip即可

pod的ip是k8s集群,才能访问通的一个ip,无法再 外部访问,外部访问,得设置更多网络规则。

\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wVcMMtcx-1670327877735)(pic/1663048761395.png)\]

12、如何修改这个页面

  1. 你会的改法?
  2. 直接修改容器信息,具体机器上,的集体容器进程
  3. [root@k8s-node-11 ~]#docker exec 25ff3ec21095 sh -c "echo '<meta charset-utf8> 同志们辛苦了。' > /usr/share/nginx/html/index.html"
  4. 容器集群。,走管理节点去管理pod。再去修改 容器信息,让你明白,。pod和容器的关系
  5. 命令很像
  6. [root@k8s-master-10 ~/flannel-master/Documentation]#kubectl exec linux0224-pod-1-nginx -- sh -c "echo '辛苦了同志们,散会,下午好好消化下,干饭' >/usr/share/nginx/html/index.html "
  7. [root@k8s-master-10 ~/flannel-master/Documentation]#
  8. [root@k8s-master-10 ~/flannel-master/Documentation]##基于k8s命令,修改pod内的容器信息,以及帮助信息查看
  9. [root@k8s-master-10 ~/flannel-master/Documentation]#
  10. [root@k8s-master-10 ~/flannel-master/Documentation]#kubectl exec linux0224-pod-1-nginx -- sh -c "echo '辛苦了同志们,散会,下午好好消化下,干饭' >/usr/share/nginx/html/index.html "
  11. [root@k8s-master-10 ~/flannel-master/Documentation]#

发表评论

表情:
评论列表 (有 0 条评论,157人围观)

还没有评论,来说两句吧...

相关阅读