VMkubeadm初始化Kubernetes集群

安装版本:

kubeadm

  • 环境

    • master   172.16.184.135

    • node1    172.16.184.133

    • node2    172.16.184.134

  • 前提

    • 基于主机名通信:/etc/hosts

    • 时间同步 timedatectl

    • 关闭防火墙firewalld、iptables.service

    • OS: centos 7.3 

  • 安装配置步骤

    1. etcd cluster 仅master节点

    2. flannel,集群的所有节点

    3. 配置k8s的master: 仅master节点

      • kubernetes-master

      • 启动服务

        • kube-apiserver、kube-scheduler、kuber-controller-manager

    4. 配置k8s的各个node结点

      • kubernetes-node

      • 先设定启动docker服务

      • 启动k8s服务

        • kube-proxy、kubelet

 

1,master,nodes :安装kubelet、kubeadm、docker

2,master:kubeadm init

3,nodes:kubeam join

基本链接:

https://github.com/kubernetes/kubeadm/blob/master/docs/design/design_v1.10.md

https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.11.md#downloads-for-v1111

https://opsx.alibaba.com/mirror

———————————————————

仓库路径指向

https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

https://mirrors.aliyun.com/kubernetes/yum/doc/

https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

—————————————————————————

[kubernetes]

name =Kubernetes Repo

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

gpgcheck=0

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

enabled=1

—————————————————————————

  • yum repolist

  • 复制文件到node1 node2

    cd /etc/yum.repos.d/

    scp kubernetes.repo docker-ce.repo node1:/etc/yum.repos.d/

    scp kubernetes.repo docker-ce.repo node2:/etc/yum.repos.d/

  • 开始安装

    yum install docker-ce-18.09.8 kubelet kubeadm kubectl

    cd  直接回车返回~ 

    wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

    rpm --import rpm-package-key.gpg

     

    systemctl start docker

    vim /etc/docker/daemon.json

{

  "registry-mirrors": ["https://8vbedmam.mirror.aliyuncs.com"]

}

                                sudo systemctl daemon-reload

                                sudo systemctl restart docker

  • 设定、启动docker

    • vim /usr/lib/systemd/system/docker.service

      在service下面定义环境变量

#Environment="HTTPS_PROXY=http://www.ik8s.io:10080"

Environment="NO_PROXY=127.0.0.0/8,172.20.0.0/16"

                                systemctl daemon-reload

                                systemctl restart docker

                                docker info

  • 解决WARNING: bridge-nf-call-iptables is disabled

    vi /etc/sysctl.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

                               执行    sysctl -p

  • 设定、启动kubelet

    • 看安装生成了哪些文件 rpm -ql kubelet

    • cat /etc/sysconfig/kubelet

    • systemctl start kubelet

    •  看状态 systemctl status kubelet

    •  看日志 tail /var/log/messages

                 systemctl stop kubelet

                 systemctl enable kubelet

                 systemctl enable docker

  • 初始化kubeadm

    • kubeadm init --help

      kubeadm init --kubernetes-version=v1.15.1 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12

    • 上述出现了bug则

      ls 

      vim /etc/sysconfig/kubelet

               KUBELET_EXTRA_ARGS="--fail-swap-on=false"

      kubeadm init --kubernetes-version=v1.15.1 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap

      失败告终

      https://blog.csdn.net/jinguangliu/article/details/82792617

      • docker pull mirrorgooglecontainers/kube-apiserver:v1.15.1 

        docker pull mirrorgooglecontainers/kube-controller-manager:v1.15.1 

        docker pull mirrorgooglecontainers/kube-scheduler:v1.15.1 

        docker pull mirrorgooglecontainers/kube-proxy:v1.15.1 

        docker pull mirrorgooglecontainers/pause:3.1 

        docker pull mirrorgooglecontainers/etcd:3.3.10 

        docker pull coredns/coredns:1.3.1

      • docker tag mirrorgooglecontainers/kube-apiserver:v1.15.1 k8s.gcr.io/kube-apiserver:v1.15.1

        docker tag mirrorgooglecontainers/kube-controller-manager:v1.15.1 k8s.gcr.io/kube-controller-manager:v1.15.1

        docker tag mirrorgooglecontainers/kube-scheduler:v1.15.1 k8s.gcr.io/kube-scheduler:v1.15.1

        docker tag mirrorgooglecontainers/kube-proxy:v1.15.1 k8s.gcr.io/kube-proxy:v1.15.1

        docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1

        docker tag mirrorgooglecontainers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10

        docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1

 

    • docker rmi mirrorgooglecontainers/kube-apiserver:v1.15.1 mirrorgooglecontainers/kube-controller-manager:v1.15.1 mirrorgooglecontainers/kube-scheduler:v1.15.1 mirrorgooglecontainers/kube-proxy:v1.15.1 mirrorgooglecontainers/pause:3.1 mirrorgooglecontainers/etcd:3.3.10 coredns/coredns:1.3.1

      docker images

       

  • kubeadm init --kubernetes-version=v1.15.1 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap

  • 成功信息

kubeadm join 172.16.184.135:6443 --token nsz8ol.3x7b2v1r0xwhra9f \

    --discovery-token-ca-cert-hash sha256:75b8d2439ce9b12c84259fdbba654529e33eecb432bdde857fdf2bc4c13b4e1e

 

  •             kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

      • docker images 查看flannel镜像

      • kubectl get pods -n kube-system

      • kubectl get nodes

        kubectl get ns

         

    • 复制文件.  cd /etc/yum.repos.d/

      scp rpm-package-key.gpg node1:/root

      scp rpm-package-key.gpg node2:/root

      • node1、node2分别

         yum install docker-ce-18.09.8 kubelet kubeadm

    • scp /usr/lib/systemd/system/docker.service node1:/usr/lib/systemd/system/docker.service

      scp /etc/sysconfig/kubelet node1:/etc/sysconfig/

      scp /usr/lib/systemd/system/docker.service node2:/usr/lib/systemd/system/docker.service

      scp /etc/sysconfig/kubelet node2:/etc/sysconfig/

    • systemctl restart docker

      docker info

      systemctl enable docker kubelet

  • node1/2

    • systemctl daemon-reload

      systemctl start docker

      docker info

      • vi /etc/sysctl.conf

 net.bridge.bridge-nf-call-ip6tables = 1

 net.bridge.bridge-nf-call-iptables = 1

                              sysctl -p

 

kubeadm join 172.16.184.135:6443 --token nsz8ol.3x7b2v1r0xwhra9f  \

--discovery-token-ca-cert-hash sha256:75b8d2439ce9b12c84259fdbba654529e33eecb432bdde857fdf2bc4c13b4e1e --ignore-preflight-errors=Swap

 

  • master

    • kubectl get nodes

      kubectl get pods -n kube-system -o wide

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个全面的 Kubernetes 集群初始化配置文件包含多个部分,以下是一个示例: ```yaml apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration kubernetesVersion: 1.23.1 # 控制平面组件配置 controlPlaneEndpoint: "kubernetes.example.com:6443" # 控制平面节点的访问地址 etcd: external: endpoints: - https://etcd1.example.com:2379 - https://etcd2.example.com:2379 - https://etcd3.example.com:2379 caFile: /etc/kubernetes/pki/etcd/ca.crt certFile: /etc/kubernetes/pki/etcd/server.crt keyFile: /etc/kubernetes/pki/etcd/server.key networking: podSubnet: 10.244.0.0/16 # Pod 网络子网段 apiServer: extraArgs: enable-admission-plugins: "NamespaceLifecycle,NodeRestriction,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota" service-account-issuer: kubernetes.default.svc service-account-key-file: /etc/kubernetes/pki/sa.key controllerManager: extraArgs: cluster-signing-cert-file: /etc/kubernetes/pki/ca.crt cluster-signing-key-file: /etc/kubernetes/pki/ca.key scheduler: extraArgs: address: 0.0.0.0 dns: type: CoreDNS --- apiVersion: kubeadm.k8s.io/v1beta3 kind: InitConfiguration localAPIEndpoint: advertiseAddress: 172.31.186.226 bindPort: 6443 advertiseAddress: 172.31.186.226 bindPort: 6443 --- apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration cgroupDriver: systemd ``` 这个配置文件包含了以下几个部分: 1. `ClusterConfiguration` 部分:定义了集群的基本配置,包括 Kubernetes 版本和控制平面组件的配置。 2. `etcd` 部分:定义了外部 etcd 集群的连接信息和证书。 3. `networking` 部分:定义了 Pod 网络的子网段。 4. `apiServer` 部分:定义了 API 服务器的额外参数,例如启用的插件和服务账号配置。 5. `controllerManager` 部分:定义了控制器管理器的额外参数,例如集群签名证书。 6. `scheduler` 部分:定义了调度器的额外参数,例如监听地址。 7. `dns` 部分:定义了 DNS 类型。 然后是 `InitConfiguration` 部分,定义了初始化节点时的配置,包括 API 服务器的地址和端口。 最后是 `KubeletConfiguration` 部分,定义了 kubelet 的配置选项,例如 cgroup 驱动程序。 这个示例提供了一个更全面的 Kubernetes 集群初始化配置文件,你可以根据自己的需求进行修改和定制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值