栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

云原生Java架构师(三)Kubernetes基础概念及集群部署

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

云原生Java架构师(三)Kubernetes基础概念及集群部署

目录
  • 一、简介
  • 二、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
# 修改后再次查看当前主机名
hostname
2.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 --system
3.2 安装Kubelet、Kubectl
cat < 

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/16

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
# 配置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


注意:此处主节点状态显示未准备的原因是还没有配置网络节点pod

主节点安装网络组件

canal官网

#在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集群就已经搭建成功了。

部署k8s可视化界面dashboard

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-dashboard

32556端口就是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:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/338778.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号