安装kubernetes
1.所有节点安装docker
2.配置镜像下载加速器
3.添加阿里云YUM软件源
4.安装kubeadm, kubelet和kubectl
由于版本更新频繁,这里指定版本号部署:
master: kube-apiserver, scheduler, controller-manager, etcd
node: kubelet (非容器化)、kube-proxy
kubeadm不单纯是简化部署k8s集群,采用了容器化方式部署k8s组件。
5.部署Kubernetes Master
--apiserver-advertise-address 集群通告地址
--image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
--kubernetes-version K8s版本,与上面安装的一致
--service-cidr 集群内部虛拟网络,Pod统一访问入口
--pod-network-cidr Pod网络,,与下面部署的CNI网络组件yaml中保持一致
kubectl get node可以看到已经启起来了
kubeadm init初始化工作:
1、[preflight]环境检查和拉取镜像 kubeadm config images pu11
2、[certs]生成k8s证书和etcd证书/etc/kubernetes/pki
3、[kubeconfig]生成kubeconfig文件
4、[kubelet-start]生成kubelet配置文件
5、[controi-plane]部署管理书点组件,用镜像启动容器
6、[etcd]用etcd部署数据库,用镜像启动容器
7、[upload-config] [kubelet] [upload-certs]上传配置文件到k8s中
8、[mark-control-plane] 给管理节点添加一个标签node-role.kubernetes.io/master='' 并且添加一个污点[node-role.kubernetes.io/master:NoSchedule]
9、[bootstrap-token] 自动为kubelet颁发证书
10、[addons] 部署插件,CoreDNS,kube-proxy
最后,搭贝连接k8s集群的认证文件到默认路径下
按控制台提示执行:
默认token有效期为24小时,当过期之后,该tken就不可用了。这时就需要重新创建token,
直接命令快捷生成:
7、 部署容器网络 (CNI)
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network
注意:只需要部署下面其中一个,推荐Calico。
Calico是一个纯三层的数据中心网络方案,Calico支持广泛的平台,包括Kubernetes、 Qpenstack等。
Calico 在每•
-个计算节点利用 Linux Kernel 实现了一个高效的虚拟路由器(yRouter) 来负责数据转发,而每个
vRouter 通过 BGP 协议负责把自己上运行的workload 的路由信息向整个 Calico 网络内传播。
此外,Calico项目还实现了Kubernetes 网络策略,提供ACL功能。
修改完后应用清单:
8.部署Dashboard
以下位置,添加一行。type: NodePort
创建service account并綁定默认cluster-admin管理员集群角色:
使用输出的token登录Dashboard.
文/程忠 浏览次数:0次 2023-02-07 08:59:52
yum -y install wget wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum -y install docker-ce systemctl enable docker && systemctl start docker
2.配置镜像下载加速器
mkdir /etc/docker cat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://b9pmye1o.mirror.aliyuncs.com"] } EOF systemctl restart docker docker info
3.添加阿里云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_gpqcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.qpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
4.安装kubeadm, kubelet和kubectl
由于版本更新频繁,这里指定版本号部署:
yum install -y kubelet-1.19.0 kubeadm-1.19.0 kubectl-1.19.0 systemctl enable kubelet
master: kube-apiserver, scheduler, controller-manager, etcd
node: kubelet (非容器化)、kube-proxy
kubeadm不单纯是简化部署k8s集群,采用了容器化方式部署k8s组件。
5.部署Kubernetes Master
https://kubengetes.io/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubead m/#initializing-your-control-plane-node #192.168.3.12 (Master) 执行 $ kubeadm init \ --apiserver-advertise-address=192.168.3.12 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.19.0 \ --service-cidr=10.96.0.0/12 \ --pod-network-cidr=10.244.0.0/16 \ --ignore-preflight-errors=all
--apiserver-advertise-address 集群通告地址
--image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
--kubernetes-version K8s版本,与上面安装的一致
--service-cidr 集群内部虛拟网络,Pod统一访问入口
--pod-network-cidr Pod网络,,与下面部署的CNI网络组件yaml中保持一致
kubectl get node可以看到已经启起来了
kubeadm init初始化工作:
1、[preflight]环境检查和拉取镜像 kubeadm config images pu11
2、[certs]生成k8s证书和etcd证书/etc/kubernetes/pki
3、[kubeconfig]生成kubeconfig文件
4、[kubelet-start]生成kubelet配置文件
5、[controi-plane]部署管理书点组件,用镜像启动容器
6、[etcd]用etcd部署数据库,用镜像启动容器
7、[upload-config] [kubelet] [upload-certs]上传配置文件到k8s中
8、[mark-control-plane] 给管理节点添加一个标签node-role.kubernetes.io/master='' 并且添加一个污点[node-role.kubernetes.io/master:NoSchedule]
9、[bootstrap-token] 自动为kubelet颁发证书
10、[addons] 部署插件,CoreDNS,kube-proxy
最后,搭贝连接k8s集群的认证文件到默认路径下
按控制台提示执行:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config systemctl status kubelet 查看服务 docker ps 查看启动的进程,或kubectl get pods -n kube-system
6、复制kubeadm init的控制台代码,加入Kubernetes Node
如:
kubeadm join 192.168.3.12:6443 --token pi9mo4.a6a30iyf46wwgh1h \ --discovery-token-ca-cert-hash sha256:9710a51d23b187b2b6f63c3001723819e90f9aacc8b49321a196039f2c37cd38
默认token有效期为24小时,当过期之后,该tken就不可用了。这时就需要重新创建token,
直接命令快捷生成:
kubeadm token create --print-join-command https://kubernetes.io/does/reference/setup-tools/kubeadm/kubeadm-join/
7、 部署容器网络 (CNI)
journalctl -u kubelet #查日志 https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-networkjournalctl -u kubelet #查日志
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network
注意:只需要部署下面其中一个,推荐Calico。
Calico是一个纯三层的数据中心网络方案,Calico支持广泛的平台,包括Kubernetes、 Qpenstack等。
Calico 在每•
-个计算节点利用 Linux Kernel 实现了一个高效的虚拟路由器(yRouter) 来负责数据转发,而每个
vRouter 通过 BGP 协议负责把自己上运行的workload 的路由信息向整个 Calico 网络内传播。
此外,Calico项目还实现了Kubernetes 网络策略,提供ACL功能。
$ wget --no-check-certificate https://docs.projectcalico.org/manifests/calico.yaml curl https://docs.projectcalico.org/v3.20/manifests/calico.yaml -O下载完后还需要修改(vi calico.yaml)里面定义Pod网络 (CALICO IPV4POOL CIDR),与前面kubeadm init指定的一样
修改完后应用清单:
$ kubectl apply -f calico.yaml $ kubectl get pods -n kube-system cat calico.yaml |grep 'image:' image: docker.io/calico/cni:v3.25.0 image: docker.io/calico/cni:v3.25.0 image: docker.io/calico/node:v3.25.0 image: docker.io/calico/node:v3.25.0 image: docker.io/calico/kube-controllers:v3.25.0 docker pull docker.io/calico/cni:v3.25.0
8.部署Dashboard
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml
以下位置,添加一行。type: NodePort
--- kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: ports: - port: 443 targetPort: 8443 selector: k8s-app: kubernetes-dashboard type: NodePort
命令:
kubectl apply -f recommended.yaml kubectl get pods,svc -n kubernetes-dashboard
创建service account并綁定默认cluster-admin管理员集群角色:
#创建用户 $ kubectl create serviceaccount dashboard-admin -n kube-system #用户授权 $ kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin #获取用户Token $ kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}' )
使用输出的token登录Dashboard.
相关阅读
评论:
↓ 广告开始-头部带绿为生活 ↓
↑ 广告结束-尾部支持多点击 ↑