文章目录
1.基本概念
1.1Master节点
apiserver:集群统一入口,以restful方式,交给etcd存储
scheduler:节点调度,选择worker节点应用部署
controller-manager:处理集群中常规后台任务,一个资源对应一个控制器
etcd:存储系统,用于保存集群相关的数据
1.2worker节点
kubelet:master派到node节点的代表,管理本机容器
kube-proxy:提供网络代理,负载均衡等操作
1.3Pod
- 最小部署单元
- 一组容器的集合
- 共享网络
- 生命周期是短暂的
1.4Controller
- 确保预期的Pod副本数量
- 无状态应用部署
- 有状态应用部署
- 一次性任务和定时任务
1.5Service
- 定义一组Pod的访问规则
2.环境搭建
安装版本,采用kubeadm搭建,k8s的组件均运行在docker容器中
ubuntu | kubernetes | docker |
---|---|---|
22.04 LTS | 1.23.5-00 | 5:20.10.14~3-0~ubuntu-jammy |
2.1安装指定版本docker
#准备工具
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
#Add Docker’s official GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
#set up the repository
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
#查看版本号
sudo apt-cache madison docker-ce
#安装指定版本
sudo apt-get install docker-ce=5:20.10.14~3-0~ubuntu-jammy docker-ce-cli=5:20.10.14~3-0~ubuntu-jammy containerd.io
#docker compose,docker官网安装教程中有,可不安装,不影响运行
#sudo apt-get install containerd.io docker-buildx-plugin docker-compose-plugin
#换仓库地址,写入配置文件
sudo vim /etc/docker/daemon.json
#写入加速器地址
{
"registry-mirrors": ["https://hub-mirror.c.163.com/"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
#配置docker,kubernetes默认设置cgroup驱动(cgroupdriver)为"systemd",而docker服务的cgroup驱动默认为"cgroupfs",建议将其修改为"systemd",与kubernetes保持一致
#再次修改daemon.json,在其后添加一行"exec-opts":["native.cgroupdriver=systemd"]
sudo vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://hub-mirror.c.163.com/"],
"exec-opts":["native.cgroupdriver=systemd"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
2.2关闭swap分区
sudo vim /etc/fstab
#注释掉 /swapfile 所在行,然后重启计算机即可永久关闭swap
2.3安装kubeadm、kubectl和kubelet
- kubelet: k8s sh的核心服务
- kubeadm: 这个是用于快速安装 k8s 的一个集成工具,我们在master1和worker1上的 k8s 部署都将使用它来完成。
- kubectl: k8s 的命令行工具,部署完成之后后续的操作都要用它来执行
#更新apt源
sudo apt-get update
#使apt支持ssl传输
sudo apt-get install -y apt-transport-https
#下载gpg密钥
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
#添加apt源
sudo apt-add-repository "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"
#查看可安装版本
sudo apt-cache madison kubectl
#安装指定版本
sudo apt-get install kubelet=1.23.5-00 kubeadm=1.23.5-00 kubectl=1.23.5-00
#阻止自动更新
sudo apt-mark hold kubelet kubeadm kubectl
2.4配置Master节点
#查看集群使用的容器镜像
kubeadm config images list
#拉取所需镜像
sudo kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers
#初始化
#配置项说明:
#--apiserver-advertise-address k8s 中服务apiserver的部署地址,如果不填写,默认是本机
#--image-repository 拉取的 docker 镜像源,因为初始化的时候kubeadm会去拉 k8s 的很多组件来进行部署,所以需要指定国内镜像源,下不然会拉取不到镜像
#--pod-network-cidr k8s采用的节点网络,该参数指定了为pod节点分配的虚拟ip网段
#--kubernetes-version: 这个是用来指定你要部署的 k8s 版本的,一般不用填,不过如果初始化过程中出现了因为版本不对导致的安装错误的话,可以用这个参数手动指定
kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.23.5 --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=192.168.121.130
#初始化
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#查看集群节点
kubectl get nodes
#查看集群状态
kubectl get cs
#以上步骤安装完后,机器搭建起来了,但状态还是NotReady状态,master机器需要安装网络插件Calico
#下面是一个网上别人整理好的资源清单,之间运行k8s会在docker中拉起相应的服务
kubectl apply -f https://docs.projectcalico.org/v3.21/manifests/calico.yaml
#再次查看集群节点,状态变为Ready
kubectl get nodes
#查看集群状态
kubectl get cs
输出信息如下,执行其中的mkdir,cp等命令,最后的输出kubeadm join命令用于worker节点加入集群
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/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.121.130:6443 --token 1uwxx8.zkr71sdz5uu7z2t1 \
--discovery-token-ca-cert-hash sha256:5d0df7efc1d8895ec4c93e7d926738d4311fd36b6f14b18dffbaf4e07d66213d
2.5配置worker节点
#更新apt源
sudo apt-get update
#使apt支持ssl传输
sudo apt-get install -y apt-transport-https
#下载gpg密钥
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
#添加apt源
sudo apt-add-repository "deb http