centos7安装minikube阿里云版

安kuboard需要两台机器,并且对系统小版本号限制太严格了。所以考虑用minikube

安装minikube之前需要安装docker kubectl

1.安装docker

执行如下命令安装

docker版本建议>=18.09.0

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
#yum install -y docker-ce-18.06.3.ce
yum install -y docker-ce-18.09.0 docker-ce-cli-18.09.0
systemctl start docker.service
systemctl enable docker.service

验证

docker version

2.安装kubectl

执行命令

​curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

验证

kubectl version --client

3.授权用户

minikube执行需要普通用户,需要做一些授权,如无特殊说明,添加K8S用户后的命令都在K8S用户下执行

用户组授权

adduser K8S //创建K8S用户
passwd K8S //设置密码

加入sudo组

usermod -aG wheel K8S

切换到K8S用户

su K8S

执行如下命令将K8S用户加到docker组

sudo groupadd docker //创建docker组
sudo gpasswd -a $USER docker //$USER为上面创建的K8S用户
newgrp docker
docker version

4.安装minikube

下载安装阿里云版minikube

直接安装优化版

#直接下载安装阿里云优化版
curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.20.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
#直接启动 启动一个k8s节点
minikube start

或者安装后使用镜像启动

#安装minikube最新版
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
#历史版本可将latest换成版本号如1.24.0
#curl -LO https://storage.googleapis.com/minikube/releases/v1.24.0/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
#使用阿里云镜像启动
minikube start --image-mirror-country='cn'

建议使用后者安装启动,目前阿里云直装版本最高时1.20,1.23之前的版本使用docker版Ingress有bug

启用dashboard 看看集群

这里的-dashboard就是kubernetes-dashboard

运行以下命令启动

minikube dashboard

如果安装了图形界面,会跳转到浏览器看结果,打开的是 kubernetes-dashboard

如果没安装图形界面

控制台会出现一个127.0.0.1的地址,可以简单的curl看结果

​curl http://127.0.0.1:46595/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

其他局域网电脑需要通过以下方式添加代理访问

​kubectl proxy --port=8001 --address='192.168.3.55' --accept-hosts='^.*' &
curl http://192.168.3.55:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

端口后面的url路径根据控制台返回拷贝,不同版本不一样

可能需要将8001添加进防火墙

firewall-cmd --permanent --add-port=8001/tcp
firewall-cmd --reload

5.第三方GUI工具查看集群

5.1使用 lens 查看集群

除了使用原生的 dashboard,你也可以使用 lens 来查看这个集群的情况。Lens是一个基于electron开发的IDE界面,所以图形界面是必须安装的,并且只能本地查看

官网

Lens | The Kubernetes IDE

下载安装

​wget https://api.k8slens.dev/binaries/Lens-5.4.6-latest.20220428.1.x86_64.rpm
yum install Lens-5.4.6-latest.20220428.1.x86_64.rpm

这里依赖较多,估计80多个,不用rpm -ivh浪费时间了

cat ~/.kube/config

File -->Add Clusters 将~/.kube/config文件内容拷贝进来即可,我这里的内容如下

apiVersion: v1
clusters:
- cluster:
    certificate-authority: /home/K8S/.minikube/ca.crt
    extensions:
    - extension:
        last-update: Tue, 10 May 2022 11:03:34 CST
        provider: minikube.sigs.k8s.io
        version: v1.20.0
      name: cluster_info
    server: https://192.168.49.2:8443
  name: minikube
contexts:
- context:
    cluster: minikube
    extensions:
    - extension:
        last-update: Tue, 10 May 2022 11:03:34 CST
        provider: minikube.sigs.k8s.io
        version: v1.20.0
      name: context_info
    namespace: default
    user: minikube
  name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
  user:
    client-certificate: /home/K8S/.minikube/profiles/minikube/client.crt
    client-key: /home/K8S/.minikube/profiles/minikube/client.key


5.2使用rancher查看集群

rancher官网:Enterprise Kubernetes Management | Rancher

安装rancher

创建映射目录

mkdir -p /docker_volume/rancher_home/rancher
mkdir -p /docker_volume/rancher_home/auditlog

运行

docker run -d --restart=unless-stopped --privileged -p 80:80 -p 443:443 \
-v /docker_volume/rancher_home/rancher:/var/lib/rancher \
-v /docker_volume/rancher_home/auditlog:/var/log/auditlog \
--name rancher rancher/rancher

开放防火墙端口

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

访问

https://ip/

6.部署第一个应用程序nginx

6.1创建Deployment

创建文件 nginx-deployment.yaml,内容如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9

应用 YAML 文件

kubectl apply -f nginx-deployment.yaml

查看部署结果

# 查看 Deployment
kubectl get deployments
# 查看 Pod
kubectl get pods

进入pod命令行

#进入pod命令行界面
kubectl exec -it nginx-deployment-7fb7fd49b4-cs4lb -- /bin/sh
kubectl exec -it nginx-deployment-7fb7fd49b4-cs4lb -- /bin/bash

执行测试命令

将上面的image镜像换成mage: nginx:alpine

可以进命令行执行curl命令看容器是否正常

curl localhost

如果容器内没有curl命令但有http服务,可以通过kubectl proxy间接测试访问

#启用kubectl proxy,默认端口8001
kubectl proxy  & 
#查看pods
kubectl get pods
#curl测试访问
curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME:80/proxy/

6.2 创建NodePort类型的service

创建nginx-service.yaml内容如下

apiVersion: v1
kind: Service
metadata:
  namespace: default  
  name: nginx-service
  labels: 
   app: nginx
spec:
  type: NodePort
  ports:
  - protocol: TCP
    port: 9000
    targetPort: 80
    nodePort: 30080
  selector:
    app: nginx

几个端口含义
targetPort:指的deployment里的端口
port:指的service里的端口
nodePort:指的external IP的端口,大部分k8s里用localhost+nodeport就可以本机访问,minikube不行需要用minikube ip

应用service的yml文件

kubectl apply -f nginx-service.yaml

查看service

# 查看 service
kubectl get service
# 查看服务详情
kubectl get service nginx-service -o wide

注意:nodePort使用的SNAT机制有一定的概率丢包,不建议在生产环境中使用nodePort,建议通过ingress暴露服务。

6.3 本机测试访问

本机测试访问,执行命令

curl localhost:30080

如果k8s是minikube搭建的localhost需要替换成minikube ip

先执行minikube ip获取ip

minikube ip

然后

curl <minikube ip>:30080

或者通过一下命令获取url

minikube service nginx-service --url

然后执行curl命令

curl <minikube service url>

6.4 局域网访问

使用kubectl 的端口转发
这里使用--address指定本机ip,根据需要,--address后面的ip改成你自己的ip

kubectl port-forward svc/nginx-service 30080:9000  --address localhost,192.168.3.55   &

可能还需要添加防火墙端口

firewall-cmd --permanent --add-port=30080/tcp
firewall-cmd --reload

之后可以局域网其他电脑访问了,地址如下

http://192.168.3.55:30080/

结果如图

7 常见问题

7.1.k8s的镜像拉不下来

先用docker pull 到本地,然后minikube image load 命令导入到minikube,minikube里读取的本地不是docker而是minikube

以nginx:1.7.9为例,命令为

docker pull nginx:1.7.9
minikube image load nginx:1.7.9

如果出现docker pull也拉不下来,设置镜像后重载设置

vi /etc/docker/daemon.json

内容如下

{
    "registry-mirrors": [
        "http://hub-mirror.c.163.com",
        "https://registry.aliyuncs.com",
        "https://registry.docker-cn.com",
        "https://docker.mirrors.ustc.edu.cn"
    ]
}

如果你有harbor镜像也可以配置到里面

之后重载docker配置

systemctl reload docker

注意这里用reload,不用restart,restart会导致集群丢失。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值