第3章:Kubeadm初始化Kubernetes集群

Master核心组件:kube-apiserver,kube-scheduler,kube-controller-manager,和etcd等
ETCD:保存每个组件的状态数据,需要高可用部署;
Node:kubelet,kube-proxy,和容器引擎(主流的为docker)等;
Docker Registry:存储镜像(制品仓库);

部署的前置条件:
1,确保每个节点上的防火墙策略和IPtables规则等处于未启用状态,即Disable;
2,集群内网的DNS提前做好解析服务;
3,集群内的所有节点通过时间服务器同步时间;

部署方式,大体上分为两种:
(1)第一种是将master上的4个核心组件和node上的3个核心组件,以节点守护进程的方式运行使用systemctl命令来管理,并enable以便开机自启动,整个流程都需要手动解决,操作起来较为复杂(需要至少5组证书),缺点是如果某一组件不可用,无法自恢复;(时间周期,一般需要1天左右时间;也可以参考GitHub上的playbook。)
(2)第二种是使用官方的集群部署管理工具kubeadm来部署,在每个节点(包含master节点和node节点)上都需要先安装Kubelet和docker,然后根据情况标记每个节点为master节点,或者node节点,其他组件均以Static Pod的形式运行(注意这些pod不受Kubernetes管理),包括:API Server, Scheduler,Controller-manager,etcd和Kube-proxy等,之后再将网络组件(如flannel)以系统守护进程(动态pod,属于daemonset类型,受Kubernetes管理)的方式启动;

具体安装步骤:
1,在每个节点上,安装kubeadm,kubelet,docker;
在master节点操作如下:
①获取Docker CE 镜像的链接:
https://developer.aliyun.com/mirror/docker-ce?spm=a2c6h.13651102.0.0.62d71b11jR49GS
② 获取Kubernetes 镜像的链接:
https://developer.aliyun.com/mirror/kubernetes?spm=a2c6h.13651102.0.0.62d71b11jR49GS

cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
setenforce 0
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet
③ scp Kubernetes.repo docker.repo node01: /etc/yum.repos.d/
和scp Kubernetes.repo docker.repo node02: /etc/yum.repos.d/
scp rpm-package-key.gpg node01:/root
和scp rpm-package-key.gpg node02:/root
scp /usr/lib/systemd/docker.service node01:/usr/lib/systemd/docker.service
scp /etc/sysconfig/kubelet node01:/etc/sysconfig/kubelet
④ yum install docker-ce kubelet kubeadm kubectl
⑤ 设定启动docker
vim /usr/lib/systemd/system/docker.service
在启动docker之前,加入环境变量;
Environment=“HTTPS_PROXY=http://www.ik8s.io:10080”
Environment=“NO_PROXY=127.0.0.0/18, 172.20.0.0/16”
systemctl daemon-reload
systemctl start docker
需要确保cat /proc/sys/net/bridge/bridge-nf-call-ip6tables和cat /proc/sys/net/bridge/bridge-nf-call-ip6tables的值为1
⑥通过systemctl enable docker kubelet等设置开机自启动;
⑦vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS=”–fail-swap-on=false”
kubeadm init --kuberneters-version=【Kubernetes最新稳定发行版】 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap
#这一步最后,需要复制保存最后的kubeadm join命令的全部内容。
⑧mkdir -p $HOME/.kube
#如果不是管理员,则需要加sudo
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
⑨kubectl get cs或者kubectl get componentstatus
#这一步操作成功的结果是显示scheduler,controller-manager,etcd等组件状态为healthy;
⑩部署网络组件;
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#相关网址:https://github.com/flannel-io/flannel

在node01上的操作;
①rpm --import rpm-package-key.gpg
②yum install docker-ce kubelet kubeadm
③systemctl daemon-reload
systemctl start docker
④通过systemctl enable docker kubelet等设置开机自启动;
⑤使用kubeadm join命令;

相关链接:https://github.com/kubernetes/kubeadm
https://github.com/kubernetes/kubeadm/blob/master/docs/design/design_v1.10.md
https://developer.aliyun.com/packageSearch?word=Kubernetes

镜像链接:
https://mirrors.aliyun.com/centos/7.9.2009/virt/x86_64/kubernetes19/kubernetes-1.9.3-1.el7.x86_64.rpm?spm=a2c6h.13651111.0.0.2bac2f70Qg1fMp&file=kubernetes-1.9.3-1.el7.x86_64.rpm

https://mirrors.aliyun.com/centos/7.9.2009/virt/x86_64/ovirt-4.2/common/cockpit-docker-193-2.el7.x86_64.rpm?spm=a2c6h.13651111.0.0.2bac2f70Qg1fMp&file=cockpit-docker-193-2.el7.x86_64.rpm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
搭建 Kubernetes 集群可以分为以下几个步骤: 1. 确保所有节点上安装了 Dockerkubelet,并启动服务。 2. 安装 kubeadmkubectl 和 kubelet 工具。 3. 在主节点上使用 kubeadm 初始化 Kubernetes 集群。 4. 加入其他节点到集群中。 5. 部署网络插件。 具体步骤如下: 1. 确保所有节点上安装了 Dockerkubelet,并启动服务。 在每个节点上执行以下命令安装依赖项: ``` sudo apt-get update sudo apt-get install -y apt-transport-https curl ``` 安装 Docker: ``` curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update sudo apt-get install -y docker-ce ``` 启动 Docker 服务: ``` sudo systemctl enable docker sudo systemctl start docker ``` 安装 kubelet: ``` sudo apt-get update && sudo apt-get install -y apt-transport-https curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list deb https://apt.kubernetes.io/ kubernetes-xenial main EOF sudo apt-get update sudo apt-get install -y kubelet ``` 启动 kubelet 服务: ``` sudo systemctl enable kubelet sudo systemctl start kubelet ``` 2. 安装 kubeadmkubectl 和 kubelet 工具。 在每个节点上安装 kubeadmkubectl 和 kubelet 工具: ``` sudo apt-get update && sudo apt-get install -y apt-transport-https curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list deb https://apt.kubernetes.io/ kubernetes-xenial main EOF sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl ``` 3. 在主节点上使用 kubeadm 初始化 Kubernetes 集群。 在主节点上执行以下命令初始化 Kubernetes 集群: ``` sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 初始化完成后,会输出一个类似这样的提示: ``` kubeadm join 192.168.0.100:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef ``` 将这个命令保存下来,后面加入其他节点时需要使用。 4. 加入其他节点到集群中。 在每个节点上执行第一步中的命令,然后使用第三步中得到的加入命令加入到集群中: ``` sudo kubeadm join 192.168.0.100:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef ``` 5. 部署网络插件。 Kubernetes 集群需要网络插件才能实现节点之间的通信。这里以 Calico 为例,执行以下命令部署 Calico 网络插件: ``` kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml ``` 部署完成后,可以使用以下命令查看节点状态: ``` kubectl get nodes ``` 如果所有节点都处于 Ready 状态,那么 Kubernetes 集群就搭建完成了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Davidwatt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值