- 前言
- 安装master节点
- 一、安装docker
- 二、基本环境设置
- 三、安装kubelet、kubeadm、kubectl
- 四、初始化master节点
- 4.1 下载镜像
- 4.2 初始化
- 4.3初始化成功
- 4.4
- 五、安装Calico网络插件
- worker节点
- 一、安装docker (同master节点)
- 二、基本环境设置 (同master节点)
- 三、安装kubelet、kubeadm、kubectl (同master节点)
- 四、执行master初始化之后的命令
前言
使用 kubeadm 创建集群
kubeadm
Kubeadm 是一个K8s 部署工具,提供kubeadm init 和kubeadm join,用于快速部署Kubernetes 集群。
使用的是3台阿里云ecs云服务器,系统是CentOS 7.6,配置是2核4G。
k8s的来源,部署方式的演变
- 传统部署
所有应用 部署在一台物理机器上,每个应用都要占用资源,容易相互影响
- 虚拟化部署
在一台物理机上划分多个虚拟机,每个虚拟机上都可以运行程序,互不影响,缺点是每台虚拟机都要有操作系统,有可能操作系统所占资源比部署的程序还多
- 容器化部署
解决了虚拟化部署的弊端,共用一套操作系统,应用程序运行在容器中,比如docker。如果某个容器挂了,如何快速重启一个容器,或者某一时刻访问量大增,如何新增一个容器呢,这就是k8s要解决的问题。简单来说,k8s就是一个管理容器集合的工具,它的工作就是对容器进行编排。
安装master节点 一、安装docker
k8s要管理容器,首先容器要有可执行的环境,比如docker,假设有三台服务器,一个master节点,两个node节点,这三台服务器都要安装docker。
sudo yum remove docker*
sudo yum install -y yum-utils
#配置docker的yum地址
sudo yum-config-manager
--add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装指定版本
sudo yum install -y docker-ce-19.03.10 docker-ce-cli-19.03.10 containerd.io
# 启动&开机启动docker
systemctl enable docker --now
# docker加速配置
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxx.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
二、基本环境设置
#设置每个机器自己的hostname hostnamectl set-hostname xxx # 将 SELinux 设置为 permissive 模式(相当于将其禁用) sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config #关闭swap swapoff -a sed -ri 's/.*swap.*/#&/' /etc/fstab #允许 iptables 检查桥接流量 cat <三、安装kubelet、kubeadm、kubectl #配置k8s的yum源地址,这里配置的是阿里云的 cat <> /etc/hosts centos查看内网ip: ip a
四、初始化master节点 4.1 下载镜像
sudo tee ./images.sh <<-'EOF' #!/bin/bash images=( kube-apiserver:v1.20.9 kube-controller-manager:v1.20.9 kube-scheduler:v1.20.9 kube-proxy:v1.20.9 pause:3.2 etcd:3.4.13-0 coredns:1.7.0 ) for imageName in ${images[@]};do docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName done EOF # 添加可执行权限 chmod +x ./images.sh && ./images.sh4.2 初始化kubeadm init --apiserver-advertise-address=172.31.0.4 #master节点的内网ip --control-plane-endpoint=k8s-master #master节点的hostname --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers #k8s的aliyun镜像 --kubernetes-version v1.20.9 # 版本 --service-cidr=10.96.0.0/16 #不懂不要改 --pod-network-cidr=192.168.0.0/16 #不懂不要改4.3初始化成功保存下来这些日志
Your Kubernetes control-plane has initialized successfully! To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config Alternatively, if you are the root user, you can run: export KUBECONFIG=/etc/kubernetes/admin.conf You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/ #使节点成为master节点,多主模式下用 You can now join any number of control-plane nodes by copying certificate authorities and service account keys on each node and then running the following as root: kubeadm join k8s-master:6443 --token 7sb9v9.wz6f3vm6vi1tdgcq --discovery-token-ca-cert-hash sha256:2433d488be14c479d24ae6d5790b1974712f970b95b83d46dfc9746eb9067486 --control-plane # 使节点成为worker节点 Then you can join any number of worker nodes by running the following on each as root: kubeadm join k8s-master:6443 --token 7sb9v9.wz6f3vm6vi1tdgcq --discovery-token-ca-cert-hash sha256:2433d488be14c479d24ae6d5790b1974712f970b95b83d46dfc9746eb90674864.4mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config有了上面的配置后,kubectl命令才能执行。
kubectl get nodes #查看节点五、安装Calico网络插件
这里的状态是NotReady是因为没有配置网络插件。curl https://docs.projectcalico.org/manifests/calico.yaml -O kubectl apply -f calico.yamlmaster节点安装完毕,接下来安装worker节点
worker节点 一、安装docker (同master节点) 二、基本环境设置 (同master节点) 三、安装kubelet、kubeadm、kubectl (同master节点) 四、执行master初始化之后的命令# 使节点成为worker节点 Then you can join any number of worker nodes by running the following on each as root: kubeadm join k8s-master:6443 --token 7sb9v9.wz6f3vm6vi1tdgcq --discovery-token-ca-cert-hash sha256:2433d488be14c479d24ae6d5790b1974712f970b95b83d46dfc9746eb9067486成功加入
#使用kubectl get nodes 命令在主节点查看



