- 一、简介
- 二、Kubernetes基础概念
- 2.1 修改主机名
- 2.2 安装Docker环境
- 三、Kubersteres集群部署
- 3.1 基础环境准备
- 3.2 安装Kubelet、Kubectl
- 3.3 安装 Kubeadm
- 初始化主节点
- 主节点安装网络组件
- 加入工作节点
- 部署k8s可视化界面dashboard
Kubernetes的名字来自希腊语,意思是“舵手” 或 “领航员”。K8s是将8个字母“ubernete”替换为“8”的缩写。
Kubernetes是一个容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
Docker是应用最为广泛的容器技术,通过打包镜像,启动容器来创建一个服务。 但是随着应用越来越复杂,容器的数量也越来越多,由此衍生了管理运维容器的重大问题,而且随着云计算的发展,云端最大的挑战,容器在漂移。在此业务驱动下,k8s问世,提出了一套全新的基于容器技术的分布式架构领先方案,在整个容器技术领域的发展是一个重大突破与创新。
二、Kubernetes基础概念 2.1 修改主机名准备三台服务器,修改主机名有两种方法:
第一种:
#查看当前主机名 hostname #修改主机名 vim /etc/hostname # i 进入编辑 :wq 保存退出 #重启 reboot #重启后再查看主机名 hostname
第二种:
# 查看当前主机名 hostname # 设置主机名 hostnamectl set-hostname k8s-node01 # 修改后再次查看当前主机名 hostname2.2 安装Docker环境
# 配置yum源
yum install -y yum-utils
yum-config-manager
--add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装docker
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6
#启动docker并设置开机启动
systemctl enable docker --now
# 使用docker info 查看是否安装成功
#配置加速 可以在阿里云的容器镜像服务的镜像加速器找到配置阿里源
# 配置docker镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://iedolof4.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
# 配置后可以使用docker info 查看镜像配置是否成功
三、Kubersteres集群部署
3.1 基础环境准备
将 SELinux 设置为 permissive 模式
# 将 SELinux 设置为 permissive 模式(相当于将其禁用) sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
关闭swap
#关闭swap swapoff -a sed -ri 's/.*swap.*/#&/' /etc/fstab
允许 iptables 检查桥接流量
#允许 iptables 检查桥接流量 cat < sudo sysctl --system3.2 安装Kubelet、Kubectlcat <3.3 安装 Kubeadm 执行以下脚本:
sudo tee ./images.sh <<-'EOF' #!/bin/bash images=( kube-apiserver:v1.20.9 kube-proxy:v1.20.9 kube-controller-manager:v1.20.9 kube-scheduler:v1.20.9 coredns:1.7.0 etcd:3.4.13-0 pause:3.2 ) for imageName in ${images[@]} ; do docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName done EOF chmod +x ./images.sh && ./images.sh上面脚本执行结束之后查看docker镜像:
初始化主节点
在主节点使用 ip a查看主节点服务器的内网IP:
#所有机器添加master域名映射,以下需要修改为自己的 注意:此命令在三个节点都执行 echo "172.31.0.4 cluster-endpoint" >> /etc/hosts在所有节点ping一下域名:
主节点初始化 ,在主节点执行#主节点初始化 注意:此命令只在主节点执行 # IP地址为主节点的内网Ip地址,域名为上一步配置的主节点域名 kubeadm init --apiserver-advertise-address=172.31.0.4 --control-plane-endpoint=cluster-endpoint --image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images --kubernetes-version v1.20.9 --service-cidr=10.96.0.0/16 --pod-network-cidr=192.168.0.0/16 #注意:所有网络范围不重叠,所以在阿里云服务器使用的VCP专有网络时建议选择172.31.0.1/16,因为docker会占用172.17.0.1/16Your 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 # 配置Pod: 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/ # 加入主节点命令: 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 cluster-endpoint:6443 --token cf2tyw.3dgi1phsupnuvgkt --discovery-token-ca-cert-hash sha256:467c3dc05516be8b90463c02a544ed8aafe5e3e02a38b952e264b4b469ee1717 --control-plane # 加入工作节点命令: Then you can join any number of worker nodes by running the following on each as root: kubeadm join cluster-endpoint:6443 --token cf2tyw.3dgi1phsupnuvgkt --discovery-token-ca-cert-hash sha256:467c3dc05516be8b90463c02a544ed8aafe5e3e02a38b952e264b4b469ee1717查看节点
#使用kubectl get nodes命令查看当前节点 kubectl get nodes主节点安装网络组件
注意:此处主节点状态显示未准备的原因是还没有配置网络节点podcanal官网
#在master节点执行命令 curl https://docs.projectcalico.org/manifests/calico.yaml -O # 使用kubectl apply命令应用这个文件 kubectl apply -f calico.yaml加入工作节点
此时再次查看master节点状态已经是准备就绪了。
# 在工作节点执行命令 Then you can join any number of worker nodes by running the following on each as root: kubeadm join cluster-endpoint:6443 --token cf2tyw.3dgi1phsupnuvgkt --discovery-token-ca-cert-hash sha256:467c3dc05516be8b90463c02a544ed8aafe5e3e02a38b952e264b4b469ee1717 # 注意:这命令是24小时有效的,如果过期了需要使用一下命令刷新令牌,在主节点运行 kubeadm token create --print-join-command部署k8s可视化界面dashboard
到这里我们的k8s集群就已经搭建成功了。
kubernetes官方提供的可视化界面
# 使用kubectl apply命令,在主节点执行 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml设置访问端口
# 设置访问端口 将type: ClusterIP 改为 type: NodePort kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
# 找到端口 kubectl get svc -A |grep kubernetes-dashboard32556端口就是k8s控制台的访问端口,并且需要在安全组放行端口32556。
然后我们通过任意以节点的公网IP加上端口号就可以访问到可视化界面。
需要使用https访问:https://集群任意IP:端口
注意:如果浏览器显示您的连接不是私密链接,在页面输入thisisunsafe(不是在地址栏,在页面空打然后回车)。
获得令牌:#创建访问账号,准备一个yaml文件; vi dash.yaml apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard#然后使用 kubectl apply 命令应用 kubectl apply -f dash.yaml
获取令牌:#获取访问令牌 kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"
复制令牌登陆Dashboard:



