• K8S集群再搭建


     前述:总体是非常简单的,就是过程繁琐,不过都是些重复的操作

    master成员: [controller-manager, scheduler, api-server, etcd, proxy,kubelet]

    node成员:    [kubelet, proxy]

    =====master要修改的配置文件有=====

    1. vi /etc/etcd/etcd.conf  # 数据存储目录/对外监听地址/本机ip

    2. vi /etc/kubernetes/apiserver #开放api-server端口/指明监听奴隶节点端口/指明etcd地址

    3. vi /etc/kubernetes/config   # 告诉proxy api-server是谁?

    4. vi /etc/kubernetes/kubelet # 注册自己信息,并将告诉自己的master是是谁?

    =====node要修改的配置文件有=====

    1. vi /etc/kubernetes/config    # 告诉proxy api-server是谁?

    2. vi /etc/kubernetes/kubelet  # 注册自己信息,并将告诉自己的master是是谁?

    小结:master节点就多配置2个,其它跟node无二差别 ,节点要关闭防火墙或者开发对映的端口,要不然,node无法加入master

    进入正题。。。。。。。。。。

    ================Master======================

    1. 安装etcd服务

    ### 准备3个节点并修改节点hostname

    hostnamectl set-hostname k8s-master
    hostnamectl set-hostname k8s-node1
    hostnamectl set-hostname k8s-node2

    ### 配置3个节点的域名解析

    vi /etc/hosts

    ```

    192.168.208.161 k8s-master
    192.168.208.162 k8s-node1
    192.168.208.163 k8s-node2

    ```

    ### master节点下载数据库ETCD

    yum install -y etcd

    vi /etc/etcd/etcd.conf

    ```

    # 数据存储目录

    ETCD_DATA_DIR="/var/lib/etcd/default.etcd"

    # 监听地址,设置任意ip都可以访问
    ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"

    # 如果配置etcd集群,名称必须不一样
    ETCD_NAME="default"

    # master节点的IP
    ETCD_ADVERTISE_CLIENT_URLS="http://192.168.208.160:2379"

    ```

    ### 启动ETCD并设置开机自启

    systemctl restart etcd
    systemctl enable etcd

     2. 安装kubernetes-master包含了apiserver、controller-manager、scheduler

    yum install -y kubernetes-master.x86_64

    vi /etc/kubernetes/apiserver

    ```

    #如果仅限本地访问可以设置成本机IP
    KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"

    #开放apiserver端口的节点将属于master节点
    KUBE_API_PORT="--port=8080"

    #奴隶节点的端口,奴隶节点是什么端口就配置什么端口
    KUBELET_PORT="--kubelet-port=10250"

    #奴隶节点的端口
    KUBELET_PORT="--kubelet-port=10250"

    ```

    vi /etc/kubernetes/config

    ```

    #为controller-manager, scheduler, and proxy指明api-server
    KUBE_MASTER="--master=http://192.168.208.160:8080"

    ```

    ### 启动 api-server、controller-manager、scheduler

    systemctl start kube-apiserver.service
    systemctl start kube-controller-manager.service
    systemctl start kube-scheduler.service

    # 顺手设置开机自启

    systemctl enable kube-apiserver.service
    systemctl enable kube-controller-manager.service
    systemctl enable kube-scheduler.service

    ### 检查主节点成员状态,这里的api-server不会显示,能执行kubectl命令说明api-server正常,kube-proxy 需要安装kubernetes-node时才会安装,一并安装还有kubelet
    kubectl get componentstatus

    ===============Node====================

    1. 安装kubernetes-node 包含 poxy、kubelet, 还有会自动安装docker哦!!

    ####master自己也成为奴隶节点

    yum install -y kubernetes-node.x86_64

    vi /etc/kubernetes/kubelet

    ```

    #奴隶节点联系上司的地址(这里master也是奴隶,自己监听自己,其它奴隶节点192.168.208.161、192.168.208.162)
    KUBELET_ADDRESS="--address=192.168.208.160"

    #这个端口要跟master监听的端口保持一致,因为master的配置监听端口,就是按照下面的端口配置的
    KUBELET_PORT="--port=10250"

    # 奴隶节点的身份信息,可以是IP,也可以域名(必须先配置域名解析,开始就做好了,其它奴隶节点是 k8s-node1 、k8s-node2)
    KUBELET_HOSTNAME="--hostname-override=k8s-master"

    # 指明api-server

    KUBELET_API_SERVER="--api-servers=http://192.168.208.160:8080"

    ```

    ### 启动kubelet、proxy 会带着启动docker

    systemctl start kubelet.service

    systemctl start kube-proxy.service

    systemctl enable kubelet.service

    systemctl enable kube-proxy.service

    ### 剩余的k8s-node1、k8s-node2 重复操作2次就好,下面配上截图

    k8s-master 、k8s-node1、k8s-node2都一样的

     

    上面集群简单的集群已经搭建好,后续要安装网络插件ssh 用于节点之间的通信

    后续。。。。。。。

    yum install -y flannel

    vi /etc/sysconfig/flanneld

    ```

    # 使用etcd作为pod的IP注册中心

    FLANNEL_ETCD_ENDPOINTS="http://192.168.208.160:2379"

    # 使用默认的前缀

    FLANNEL_ETCD_PREFIX="/atomic.io/network"

    ```

    ###该ip网段可以任意设定,随便设定一个网段都可以。Pod里的容器的ip就是根据这个网段进行自动分配的,下面截图会解释

    etcdctl set /atomic.io/network/config '{ "Network":"172.10.0.0/16" }'

    etcdctl get /atomic.io/network/config

    systemctl start flanneld.service
    systemctl enable flanneld.service

    # 重启dockers后,docker的ip网段也会变的一样

    systemctl restart docker

    同理配置奴隶节点 k8s-node1  k8s-node2,但不要执行etcdctl set /atomic.io/network/config '{ "Network":"172.10.0.0/16" }',etcd只在主节点,node节点是没有的

    至此,已经安装好网络插件flannel ,接下安装一个测试沙箱,测试不同节点上容器是否能正常通讯

    docker pull busybox:1.27

    docker images

    docker run -it <镜像id>

    > ifconfig

    > 找到本容器的ip

    同理在另外一个节点看看  找到本容器的ip

    ping  172.10.xxx.xxx

    master节点成功ping通2个node节点

    如果出现iptables 如下,我这个默认是ACCEPT,所以不用修改

    # 修改命令,3个节点都要修改,如果。。。。但是这种设置是临时的重启失效(可以忽略)直接看iptables永久配置

    iptables -P FORWARD ACCEPT

     iptables永久配置:

    systemctl daemon-reload 

  • 相关阅读:
    【网络安全】网络资产收集
    孤儿进程与终端的关系
    智慧运维:基于 BIM 技术的可视化管理系统
    Claude: ChatGPT替代大语言模型
    LabVIEW异步调用VI
    C#的AOP(最经典实现)
    程序员的自我修养读后感
    在Photoshop上标小图标的操作记录
    Java核心知识:日期和时间总结 -- Date、DateFormat、Calendar
    Java——迷你图书管理器(JDBC+MySQL+Apache DBUtils)
  • 原文地址:https://blog.csdn.net/dj1955/article/details/139051468