Centos7上使用Kind搭建Kubernetes环境及所遇到的问题
文章目录
本文介绍在Centos7上使用Kind搭建Kubernetes环境时,过程中出现的问题以及对应的解决方案,最后运行一个实例验证是否安装成功。
什么是Kind
Kind是可以用来安装Kubernetes的工具,能够搭建一套开箱即用的Kubernetes环境,并且支持快速创建多个Kubernetes集群。
Kind的原理就是将Kubernetes相关的控制单元——诸如Etcd、kubelet、Controller Manager等以容器的方式运行,并且在镜像的内部使用Kubeadm做集群部署,这样就借助容器镜像,在本地搭建起一个开箱的Kubernetes。
Kind项目链接:https://github.com/kubernetes-sigs/kind
Kind的特点
- 开箱即用,支持搭建多个高可用的Kubernetes集群
- 最小的安装依赖——只需要Docker
- 命令简单,可以快速创建集群
- 通过了CNCF社区的K8S Conformance 测试
搭建单机的Kubernetes环境
安装Docker
# 安装docker所需的工具
yum install -y yum-utils device-mapper-persistent-data lvm2
# 配置阿里云的docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 指定安装这个版本的docker-ce
yum install -y docker-ce
# 启动docker
systemctl enable docker && systemctl start docker
容器镜像加速
到阿里云里面查找容器服务入口,然后里面有一个容器镜像加速,可以找到镜像加速的网址。得到网址之后,加入到daemon.json配置文件中。
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://zxdefssd.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docke
安装Kind
安装Kind的命令:
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.10.0/kind-linux-amd64
chmod +x ./kind
mv ./kind /usr/local/bin/kind
安装kubectl
然后安装kubectl,比较方便管理。
yum install -y kubectl
相关报错与解决
- 首先curl访问不到对应网址,解决方法是修改hosts文件:
echo "140.82.114.4 github.com" >> /etc/hosts
- 然后在安装kubectl的时候,需要配置yum.repo.d
cd /etc/yum.repo.d #mkdir -p tee <<-'EOF' [kubernetes] name=Kubernetes #baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 #gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
- kind命令找不到,我是直接设置了alias,kind是一个可执行文件。
安装完成:
启动Kind
#建立单节点集群
kind create cluster --name my-cluster
然后会有如下提示,最后节点建立成功。
输入如下命令可以查看节点信息:
kubectl get po -n kube-system
节点建立之后就相当于我们拥有了一个kubernetes环境,紧接着,可以开始部署镜像了。
使用Kubernetes运行Nginx镜像
搭建完kubernetes环境之后,我们可以试着部署Nginx镜像。
首先创建一个yaml文件:nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
然后启动
kubectl apply -f nginx-deployment.yaml
# 如果发生修改——比如版本升级,可以直接修改nginx-deployment.yaml的内容,然后再执行一次
kubectl apply -f nginx-deployment.yaml
可以检查一下这个yaml的运行状态
kubectl get pods -l app=nginx
NAME READY STATUS RESTARTS AGE
nginx-deployment-67594d6bf6-9gdvr 1/1 Running 0 10m
nginx-deployment-67594d6bf6-v6j7w 1/1 Running 0 10m
查看对象的细节
kubectl describe pod nginx-deployment-67594d6bf6-9gdvr
Name: nginx-deployment-67594d6bf6-9gdvr
Namespace: default
Priority: 0
PriorityClassName: <none>
Controlled By: ReplicaSet/nginx-deployment-67594d6bf6
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 1m default-scheduler Successfully assigned default/nginx-deployment-67594d6bf6-9gdvr to node-1
Normal Pulling 25s kubelet, node-1 pulling image "nginx:1.7.9"
Normal Pulled 17s kubelet, node-1 Successfully pulled image "nginx:1.7.9"
Normal Created 17s kubelet, node-1 Created container
Normal Started 17s kubelet, node-1 Started container
进入到容器中
kubectl exec -it nginx-deployment-5c678cfb6d-lg9lw -- /bin/bash
删除
kubectl delete -f nginx-deployment.yaml
参考:
https://www.cnblogs.com/zhaocici/p/14594992.html