文章目录
前言
Kubernetes 是用于自动部署,扩展和管理容器化应用程序的开源系统。
为什么需要 Kubernetes ?
真实的生产环境应用会包含多个容器,而这些容器还很可能会跨越多个服务器主机部署。Kubernetes 提供了为那些工作负载大规模部署容器的编排与管理能力。Kubernetes 编排让你能够构建多容器的应用服务,在集群上调度或伸缩这些容器,以及管理它们随时间变化的健康状态。
提示:以下是本篇文章正文内容
一、准备工作
系统:CentOS7
虚拟机:目前常见的虚拟机软件分别是 VMware 和 Virtualbox ,我使用的是VMWare,可以去官网进行下载,也可以找别人的压缩包进行下载。
下面我将简单介绍以下VMware的安装过程
1.VMware的安装
首先我们进入到官网(https://www.vmware.com/)
点击workspace,找到products右下角的Workstation Pro,打开,根据自己的系统选择版本,pro是需要购买的,不过我们可以选择试用30天
点击下载即可,接下来是安装,根据指引完成操作即可(一直点下一步,需要更改安装路径的自己更改即可),安装完成后打开,应该是这样一个界面
验证是否安装成功
打开设置–>网络和Internet–>高级网络设置–>更改适配器选项
看见下面左侧两个设备就说明虚拟机安装成功
2.安装操作系统
选择安装CentOS7,我照样是进入官网进行下载,也可以下载别人的压缩包。
官网下载地址:https://www.centos.org/download/
根据自己的电脑选择合适的文件进行下载,我选择是x86_64,也就是64位。点击RPMs(一种用于互联网下载包的打包及安装工具),进入如下界面,点击isos,选择一个镜像地址下载
在这里插入图片描述
接下来就是简单的VMware安装centos,过程比较简单,可以参考:
https://blog.csdn.net/tsundere_x/article/details/104263100
二、kubernetes单机版安装和使用
1. 环境准备
主机名 | IP | 角色 |
---|---|---|
docker-k8s01 | 192.168.10.130 | master |
docker-k8s02 | 192.168.10.131 | node01 |
docker-k8s03 | 192.168.10.132 | node02 |
查看当前IP,保证 Linux 系统 ifcfg-ens33 文件中 IP 地址、虚拟网络编辑器地址和Windows 系统 VM8 网络 IP 地址相同
#ifconfig
执行如下命令:
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭selinux
vim /etc/selinux/config
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
# 关闭swap
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
# 根据规划设置主机名
hostnamectl set-hostname <hostname>
# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.10.130 k8smaster
192.168.10.131 k8snode1
192.168.10.132 k8snode2
EOF
# 将桥接的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
2. 部署docker
1.切换镜像源
$ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
2.安装特定版本的docker-ce
$ yum -y install docker-ce-18.06.1.ce-3.el7
3.配置文件
$ cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF
4.启动docker
$ systemctl enable docker && systemctl start docker
5.查看docker版本
$ docker --version
18.06.1-ce
安装截图
3. 安装 kubeadm、kubelet 和 kubectl
添加阿里云镜像源
输入指令: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
输入下面两个命令进行安装
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
systemctl enable kubelet
安装效果如下图所示:
4. 部署Kubernetes Master
在192.168.10.130(也就是我们的Master上)执行
$ kubeadm init \
--apiserver-advertise-address=192.168.10.130 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
5. 加入Kubernetes Node
在192.168.10.131 和192.168.10.132(Node01和Node02)执行下面的语句
kubeadm join 192.168.10.130:6443 --token 4or4z4.fcqslk46vnnz6soc \
--discovery-token-ca-cert-hash sha256:124f37009d5d2a2524f8607d86c73b33f468e6dfdbbc33f871ff9dc587552552
#这串代码是在上一步部署master成功后显示的,可以自行查看
这边截图显示 This node has joined the cluster ,表面加入成功
kubectl get nodes #查看结点
如果这边的状态是Not Ready,需要安装相关插件
方式1
wget https://raw.githubusercontect.com/coreos/flannel/master/Documentation/kube-flannel.yml
方式2
如果镜像地址访问不了,可以去csdn上找别人上传的kube-flannel.yml文件,我选用的这个方式,有兴趣的可以关注这篇文章
> https://blog.csdn.net/weixin_43298522/article/details/109769013
#使用配置文件启动flannel
kubectl apply -f kube-flannel.yml
那么到目前为止,集群已经搭建成功。
6. 测试
在集群中创建一个pod,验证是否正常运行:
$ kubectl create deployment nginx --image=nginx #部署nginx
$ kubectl expose deployment nginx --port=80 --type=NodePort #暴露端口
$ kubectl get pod,svc #查看服务状态
运行结果如下:
这里的ip是指服务器的ip,port是指docker分配给nginx的端口
通过http://192.168.10.130:30747/查看,可以发现测试成功。
三、总结
在k8s的配置和使用过程中,我还是遇到了不少的问题,也是通过上网查询一一进行解决。主要问题如下:
1. raw.githubusercontent.com无法访问,
解决办法1:可以sed命令修改为docker hub镜像仓库
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
解决办法2:去网上找别人的kube-flannel文件,上文已经给出链接
2.默认token有效期为24小时,当过期之后,该token就不可用了
解决办法:kubeadm token create --print-join-command
3.在节点配置过程中如果出现错误,无法进行,可以进行重置操作