标签:cri kubernetes -- 集群 本地 kubeadm k8s docker
我这里准备三台本地vmware虚拟机,版本号centos7.9,一台master节点,一台node1,一台node2
kubeadm方式部署。Kubeadm 是一个 K8s 部署工具,提供 kubeadm init 和 kubeadm join,用于快速部署 Kubernetes集群。
一、初始化虚拟机环境(三台虚拟机都执行)
[root@k8s ~]# yum update #更新所有本地包,操作更新完成后建议快照一下。
二、操作所有节点
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭 selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时
# 关闭 swap
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
# 根据规划设置主机名
vi /etc/hosts
192.168.10.1 k8s-master
192.168.10.2 k8s-node1
192.168.10.3 k8s-node2
# 将桥接的 IPv4 流量传递到 iptables 的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system # 生效
# 时间同步
yum install ntpdate -y
ntpdate time.windows.com
三、安装docker(三台虚拟机都执行)
1.wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
2.yum -y install docker-ce
3.systemctl enable docker && systemctl start docker
4.配置镜像下载加速器:
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
阿良教育:http://www.aliangedu.cn
}
EOF
5.systemctl restart docker #重启docker
6.docker info #查看docker详情
四、安装cri-dockerd(三台虚拟机都执行)
1. wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.2.5/cri-dockerd-0.2.5-3.el7.x86_64.rpm
2. rpm -ivh cri-dockerd-0.2.5-3.el7.x86_64.rpm
3. 指定依赖镜像地址:
vi /usr/lib/systemd/system/cri-docker.service ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
4. systemctl daemon-reload
5. systemctl enable cri-docker && systemctl start cri-docker
五、添加阿里云 YUM 软件源(三台虚拟机都执行)
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
六、安装 kubeadm,kubelet 和 kubectl(三台虚拟机都执行)
由于版本更新频繁,这里指定版本号部署:
1. yum install -y kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0
2. systemctl enable kubelet
七、 部署 Kubernetes Master (master节点执行)
1. 在 192.168.10.1(Master)执行。
kubeadm init \
--apiserver-advertise-address=192.168.10.1 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.25.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--cri-socket=unix:///var/run/cri-dockerd.sock \
--ignore-preflight-errors=all
注释:
• --apiserver-advertise-address 集群通告地址
• --image-repository 由于默认拉取镜像地址 k8s.gcr.io 国内无法访问,这里指定阿里云镜像仓库地址
• --kubernetes-version K8s 版本,与上面安装的一致阿良教育:http://www.aliangedu.cn
• --service-cidr 集群内部虚拟网络,Pod 统一访问入口
• --pod-network-cidr Pod 网络,与下面部署的 CNI 网络组件 yaml 中保持一致
• --cri-socket 指定 cri-dockerd 接口,如果是 containerd 则使用--cri-socket unix:///run/containerd/containerd.sock
2. 初始化完成后,最后会输出一个 join 命令,先记住,下面用。
拷贝 kubectl 使用的连接 k8s 认证文件到默认路径:
1)mkdir -p $HOME/.kube
2)sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
3)sudo chown $(id -u):$(id -g) $HOME/.kube/config
查看工作节点:
4)kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master NotReady control-plane,master 20s v1.25.0
注:由于网络插件还没有部署,还没有准备就绪 NotReady,先继续参考资料:
https://kubernetes.io/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#initializing-your-control-plane-node
八、加入 Kubernetes Node (node1,node2执行)
在 192.168.10.2/3(Node)执行。
向集群添加新节点,执行在 kubeadm init 输出的 kubeadm join 命令并手动加上 --cri-socket=unix:///var/run/cri-dockerd.sock:
1. kubeadm join 192.168.10.1:6443 --token 7gqt13.kncw9hg5085iwclx \ --discovery-token-ca-cert-hash sha256:66fbfcf18649a5841474c2dc4b9ff90c02fc05de0798ed690e1754437be35a01 --cri-socket=unix:///var/run/cri-dockerd.sock
默认 token 有效期为 24 小时,当过期之后,该 token 就不可用了。这时就需要重新创建 token,
可以直接使用命令快捷生成:阿良教育:http://www.aliangedu.cn。kubeadm token create --print-join-command 参考资料:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-join/
九、 部署容器网络(CNI)(master节点执行)
Calico 是一个纯三层的数据中心网络方案,是目前 Kubernetes 主流的网络方案。下载 YAML:
1. wget https://docs.projectcalico.org/manifests/calico.yaml
下载完后还需要修改里面定义 Pod 网络(CALICO_IPV4POOL_CIDR),与前面 kubeadm init 的 --pod-network-cidr 指定的一样。
修改完后文件后,部署:
2. kubectl apply -f calico.yaml
3. kubectl get pods -n kube-system
等 Calico Pod 都 Running,节点也会准备就绪。
注:以后所有 yaml 文件都只在 Master 节点执行。
安装目录:/etc/kubernetes/
组件配置文件目录:/etc/kubernetes/manifests/
参考资料:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network
十、 部署 Dashboard(master节点执行)
Dashboard 是官方提供的一个 UI,可用于基本管理 K8s 资源。YAML 下载地址:
1. https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
课件中文件名是:kubernetes-dashboard.yaml
默认 Dashboard 只能集群内部访问,修改 Service 为 NodePort 类型,暴露到外部:阿良教育:http://www.aliangedu.cn
1. vi recommended.yaml
...
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
ports:
- port: 443
targetPort: 8443
nodePort: 30001
selector:
k8s-app: kubernetes-dashboard
type: NodePort
...
2. kubectl apply -f recommended.yaml
3. kubectl get pods -n kubernetes-dashboard
十一、部署完成访问地址
访问地址:https://IP:30001
标签:cri,
kubernetes,
--,
集群,
本地,
kubeadm,
k8s,
docker
From: https://www.cnblogs.com/peijiao/p/17153376.html