searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

K8S容器技术—Part1:搭建自己的minikube集群

2024-08-23 09:39:38
16
0

为什么要搭建本地K8S集群

  1. 资源节省​:相较于在云环境中创建集群,本地运行可以节省云资源费用。
  2. 离线工作​:可以在没有互联网连接的情况下进行开发和测试,适合某些特定场景。
  3. 简易部署​:本地环境可以快速在启动 Kubernetes 集群,无需登录云环境快速拉起各种资源。
  4. 快速迭代​:开发者可以快速修改和测试应用程序,而不必等待云端资源的配置。

minikbe的优点

  1. 学习和实验​:对于学习 Kubernetes 的新手,Minikube 提供了一个安全的环境来实验和学习各种功能。
  2. 多种驱动支持​:Minikube 支持多种虚拟化驱动(如 VirtualBox、Docker 等),用户可以根据自己的环境选择合适的驱动。
  3. 社区支持​:Minikube 拥有活跃的社区和丰富的文档,方便用户获取帮助和资源。
  4. 集成工具​:可以与其他开发工具(如 Helm、Kubectl 等)无缝集成,提升开发效率。

minkube安装与配置

  1. 安装docker
    Minikube 支持多种虚拟化驱动,我们这里选择docker。
brew install --cask docker
  1. 安装minkbe
    使用Curl的方式下载minikube执行程序
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64  && sudo install minikube-darwin-amd64 /usr/local/bin/minikube

3.启动minikube
首次启动需要指定一些配置,建议用国内的镜像地址

minikube start --image-mirror-country='cn' \
--image-repository=gcr.lank8s.cn \
--driver='docker' \
--kubernetes-version=v1.28.12

minikube start常用的选项

  • --image-mirror-country 地区
  • --driver 虚拟化驱动
  • --image-repository 镜像仓库地址
  • --kubernetes-version k8s版本

4.设置kubectl别名

alias kubectl="minikube kubectl --"

尝试使用 kubectl

➜  ~ kubectl get pod -A
NAMESPACE     NAME                               READY   STATUS    RESTARTS   AGE
kube-system   coredns-6554b8b87f-r5dp9           1/1     Running   0          106s
kube-system   etcd-minikube                      1/1     Running   0          119s
kube-system   kube-apiserver-minikube            1/1     Running   0          119s
kube-system   kube-controller-manager-minikube   1/1     Running   0          119s
kube-system   kube-proxy-6vzr4                   1/1     Running   0          106s
kube-system   kube-scheduler-minikube            1/1     Running   0          119s
kube-system   storage-provisioner                1/1     Running   0          118s

部署和测试简单的服务

1.部署服务

创建Kubernetes部署、服务类型NodePort

kubectl create deployment hello-minikube1 --image=kicbase/echo-server:1.0
kubectl expose deployment hello-minikube1 --type=NodePort --port=8080

2.启用本地访问

minikube服务hello-minikube1作为进程运行,创建到集群的隧道。该命令将服务直接暴露给主机操作系统上运行的任何程序。

➜  ~ minikube service hello-minikube1 --url
http://127.0.0.1:52106


➜  ~ curl http://127.0.0.1:52106/test
Request served by hello-minikube1-5f7945679-md6vs

HTTP/1.1 GET /test

Host: 127.0.0.1:52106
Accept: */*
User-Agent: curl/8.4.0

配置访问apiserver

1.创建token配置文件

mkdir -p ~/.minikube/files/etc/ca-certificates
cd ~/.minikube/files/etc/ca-certificates

#分别对应`token`, `user`, `uid`, and `groups`
cat  >  tokens.csv << EOF
token1,user1,1,"admin,dev"
token2,user2,2,dev
EOF

2.创建ClusterRoleBinding配置

cat > admin-binding.yaml <<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin
subjects:
- kind: User
  name: user1
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
EOF

➜  ~ kubectl apply -f   admin-binding.yaml

3.启动minikube

minikube start   --extra-config=apiserver.token-auth-file=/etc/ca-certificates/tokens.csv

4.访问apiserver

找到apiserver映射到本机的端口53403

~ docker port minikube
22/tcp -> 127.0.0.1:53398
2376/tcp -> 127.0.0.1:53399
32443/tcp -> 127.0.0.1:53400
5000/tcp -> 127.0.0.1:53402
8443/tcp -> 127.0.0.1:53403

这样就可以访问到apiserver了

curl --header "Authorization: Bearer token1"   --cacert ~/.minikube/ca.crt  https://127.0.0.1:53403/api/

{
  "kind": "APIVersions",
  "versions": [
    "v1"
  ],
  "serverAddressByClientCIDRs": [
    {
      "clientCIDR": "0.0.0.0/0",
      "serverAddress": "192.168.49.2:8443"
    }
  ]
}
0条评论
0 / 1000
x****n
2文章数
0粉丝数
x****n
2 文章 | 0 粉丝
x****n
2文章数
0粉丝数
x****n
2 文章 | 0 粉丝
原创

K8S容器技术—Part1:搭建自己的minikube集群

2024-08-23 09:39:38
16
0

为什么要搭建本地K8S集群

  1. 资源节省​:相较于在云环境中创建集群,本地运行可以节省云资源费用。
  2. 离线工作​:可以在没有互联网连接的情况下进行开发和测试,适合某些特定场景。
  3. 简易部署​:本地环境可以快速在启动 Kubernetes 集群,无需登录云环境快速拉起各种资源。
  4. 快速迭代​:开发者可以快速修改和测试应用程序,而不必等待云端资源的配置。

minikbe的优点

  1. 学习和实验​:对于学习 Kubernetes 的新手,Minikube 提供了一个安全的环境来实验和学习各种功能。
  2. 多种驱动支持​:Minikube 支持多种虚拟化驱动(如 VirtualBox、Docker 等),用户可以根据自己的环境选择合适的驱动。
  3. 社区支持​:Minikube 拥有活跃的社区和丰富的文档,方便用户获取帮助和资源。
  4. 集成工具​:可以与其他开发工具(如 Helm、Kubectl 等)无缝集成,提升开发效率。

minkube安装与配置

  1. 安装docker
    Minikube 支持多种虚拟化驱动,我们这里选择docker。
brew install --cask docker
  1. 安装minkbe
    使用Curl的方式下载minikube执行程序
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64  && sudo install minikube-darwin-amd64 /usr/local/bin/minikube

3.启动minikube
首次启动需要指定一些配置,建议用国内的镜像地址

minikube start --image-mirror-country='cn' \
--image-repository=gcr.lank8s.cn \
--driver='docker' \
--kubernetes-version=v1.28.12

minikube start常用的选项

  • --image-mirror-country 地区
  • --driver 虚拟化驱动
  • --image-repository 镜像仓库地址
  • --kubernetes-version k8s版本

4.设置kubectl别名

alias kubectl="minikube kubectl --"

尝试使用 kubectl

➜  ~ kubectl get pod -A
NAMESPACE     NAME                               READY   STATUS    RESTARTS   AGE
kube-system   coredns-6554b8b87f-r5dp9           1/1     Running   0          106s
kube-system   etcd-minikube                      1/1     Running   0          119s
kube-system   kube-apiserver-minikube            1/1     Running   0          119s
kube-system   kube-controller-manager-minikube   1/1     Running   0          119s
kube-system   kube-proxy-6vzr4                   1/1     Running   0          106s
kube-system   kube-scheduler-minikube            1/1     Running   0          119s
kube-system   storage-provisioner                1/1     Running   0          118s

部署和测试简单的服务

1.部署服务

创建Kubernetes部署、服务类型NodePort

kubectl create deployment hello-minikube1 --image=kicbase/echo-server:1.0
kubectl expose deployment hello-minikube1 --type=NodePort --port=8080

2.启用本地访问

minikube服务hello-minikube1作为进程运行,创建到集群的隧道。该命令将服务直接暴露给主机操作系统上运行的任何程序。

➜  ~ minikube service hello-minikube1 --url
http://127.0.0.1:52106


➜  ~ curl http://127.0.0.1:52106/test
Request served by hello-minikube1-5f7945679-md6vs

HTTP/1.1 GET /test

Host: 127.0.0.1:52106
Accept: */*
User-Agent: curl/8.4.0

配置访问apiserver

1.创建token配置文件

mkdir -p ~/.minikube/files/etc/ca-certificates
cd ~/.minikube/files/etc/ca-certificates

#分别对应`token`, `user`, `uid`, and `groups`
cat  >  tokens.csv << EOF
token1,user1,1,"admin,dev"
token2,user2,2,dev
EOF

2.创建ClusterRoleBinding配置

cat > admin-binding.yaml <<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin
subjects:
- kind: User
  name: user1
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
EOF

➜  ~ kubectl apply -f   admin-binding.yaml

3.启动minikube

minikube start   --extra-config=apiserver.token-auth-file=/etc/ca-certificates/tokens.csv

4.访问apiserver

找到apiserver映射到本机的端口53403

~ docker port minikube
22/tcp -> 127.0.0.1:53398
2376/tcp -> 127.0.0.1:53399
32443/tcp -> 127.0.0.1:53400
5000/tcp -> 127.0.0.1:53402
8443/tcp -> 127.0.0.1:53403

这样就可以访问到apiserver了

curl --header "Authorization: Bearer token1"   --cacert ~/.minikube/ca.crt  https://127.0.0.1:53403/api/

{
  "kind": "APIVersions",
  "versions": [
    "v1"
  ],
  "serverAddressByClientCIDRs": [
    {
      "clientCIDR": "0.0.0.0/0",
      "serverAddress": "192.168.49.2:8443"
    }
  ]
}
文章来自个人专栏
应用运维管理
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0