Kubernetes系列(三) - 通过Kubeadm部署kubernetes

1. Kubeadm简介#

kubeadm是k8s官方提供的,用于新入门人员快速部署一套kubernetes集群的一种简单的方法

点击进入官方文档链接

2. 本次操作的机器配置#

  • 两台1核2G的阿里云
    • centos 7.6
    • 内网互通

配置远低于官方的要求,但是用于学习用途足矣

3. 部署步骤#

  • 以下不做特殊说明默认所有机子都执行

3.1 准备工作#

Copy
# 更新系统和软件包 yum update # 设置主机名(master node 名字分开) hostnamectl set-hostname k8s-master # 同步时间 systemctl restart chronyd # 添加host # 以下ip是两台机子的内网ip cat >> /etc/hosts <<EOF 172.19.227.80 k8s-master 172.19.138.68 k8s-node01 EOF # 设置两台机子间无密码访问 ssh-keygen -t rsa ssh-copy-id root@k8s-master ssh-copy-id root@k8s-node01 # 关闭防火墙和iptables systemctl stop firewalld.service systemctl disable firewalld.service systemctl stop iptables.service systemctl disable iptables.service # 关闭SELinux setenforce 0 sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config # 关闭swap swapoff -a sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

3.2 安装docker#

Copy
# master执行以下转到repo目录 cd /etc/yum.repos.d/ # master执行下载docker阿里云镜像 wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # master同步到其他服务器 scp docker-ce.repo k8s-node01:/etc/yum.repos.d/ # 安装docker(各个都要装) yum -y install docker-ce # 修改配置 nano /usr/lib/systemd/system/docker.service # master增加一行如下 ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT # 配置阿里云镜像加速 sudo mkdir -p /etc/docker # 注意这里的链接要换成自己账号的镜像加速 sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"] } EOF # 重启docker systemctl daemon-reload systemctl start docker systemctl enable docker systemctl restart docker

3.3 安装kubeadm, kubectl, kubelet#

Copy
# master执行以下 cd /etc/yum.repos.d/ nano kubernetes.repo # 添加如下内容 [kubernetes] name=Kubernetes Repository baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg # master检查仓库 yum repolist yum list all | grep "^kube" # master执行安装 yum install kubeadm kubelet kubectl -y # 检查安装 rpm -ql kubectl rpm -ql kubeadm # master上把仓库拷贝过去 cd /etc/yum.repos.d/ scp kubernetes.repo k8s-node01:/etc/yum.repos.d/ # 所有node安装kubelet kubeadm yum install kubelet kubeadm -y # master和node执行以下 systemctl enable kubelet.service # master查看所需的镜像 kubeadm config images list # 所有机器都执行以下的拉取镜像的操作 # 由于kubeadm依赖国外的k8s.gcr.io的镜像,国内被墙所以这边的解决方案是下载国内的镜像重新打tag的方式 docker pull lzw5399/kube-proxy:v1.18.3 docker pull lzw5399/kube-apiserver:v1.18.3 docker pull lzw5399/kube-controller-manager:v1.18.3 docker pull lzw5399/kube-scheduler:v1.18.3 docker pull lzw5399/coredns:1.6.7 docker pull lzw5399/etcd:3.4.3-0 docker pull lzw5399/pause:3.2 # 修改tag docker tag lzw5399/kube-proxy:v1.18.3 k8s.gcr.io/kube-proxy:v1.18.3 docker tag lzw5399/kube-apiserver:v1.18.3 k8s.gcr.io/kube-apiserver:v1.18.3 docker tag lzw5399/kube-controller-manager:v1.18.3 k8s.gcr.io/kube-controller-manager:v1.18.3 docker tag lzw5399/kube-scheduler:v1.18.3 k8s.gcr.io/kube-scheduler:v1.18.3 docker tag lzw5399/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7 docker tag lzw5399/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0 docker tag lzw5399/pause:3.2 k8s.gcr.io/pause:3.2 # 移除没用的镜像 docker rmi lzw5399/kube-proxy:v1.18.3 docker rmi lzw5399/kube-apiserver:v1.18.3 docker rmi lzw5399/kube-controller-manager:v1.18.3 docker rmi lzw5399/kube-scheduler:v1.18.3 docker rmi lzw5399/coredns:1.6.7 docker rmi lzw5399/etcd:3.4.3-0 docker rmi lzw5399/pause:3.2

3.4 master初始化kubeadm#

Copy
# master执行init初始化 kubeadm init \ --kubernetes-version="v1.18.3" \ --pod-network-cidr="10.244.0.0/16" \ --ignore-preflight-errors="NumCPU" # 后续步骤 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config # 应用网络插件flannle kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

3.5 node加入集群#

Copy
# 加入集群 # 这里具体的语句在master上init成功后就会通过log打印出来,直接复制到node上用就好了 kubeadm join 172.19.227.80:6443 --token vdyayi.ghs1zut7yxd94vru \ --discovery-token-ca-cert-hash sha256:fcdaaaf7411b786e3d5bb77c1d190e278a2952e1f415012cfdeea31c0af7547b \ --v=4

3.6 查看部署状态#

Copy
# master查看node节点状态 kubectl get nodes # master查看kube-system命名空间下的pod启动的状态 kubectl get po -n kube-system # 如果有pod一直启动不起来,通过describe查看状态 kubectl describe po/{具体的pod名字} -n kube-system
posted @   宝树呐  阅读(816)  评论(2编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示
CONTENTS