Windows/Mac系统中构建开发的K8s环境(集群、Dashboard、Ingress、Helm、凭据、CoreDNS)
Windows/Mac系统中构建开发使用的的K8s环境包含kubernetes集群、kubernetes Dashboard、Ingress、Helm、凭据/secret、CoreDNS
随笔记-2021/12/07(1)
安装docker环境参考文章参考官网整理笔记:CentOS安装Docker、Docker Compose
以Windows为例运行K8s集群
阿里云提供的经过测试的Windows K8s镜像及文档,选择自己本地K8s版本的分支然后下载
参考:https://github.com/AliyunContainerService/k8s-for-docker-desktop/
如果需要,可以通过修改 images.properties 文件自行加载你自己需要的镜像
下载镜像
执行load_images.ps1
下载镜像,镜像目录是images.properties
如果因为安全策略无法执行 PowerShell 脚本,请在 “以管理员身份运行” 的 PowerShell 中执行
Set-ExecutionPolicy RemoteSigned 命令。
启动kubernetes
下载镜像后,在DockerDesktop的设置中点击开启 Kubernetes
切换上下文
可选操作:
切换Kubernetes运行上下文至 docker-desktop (之前版本的 context 为 docker-for-desktop),docker-desktop已经提供了kubectl命令所以不用安装
kubectl config use-context docker-desktop
验证 Kubernetes 集群状态
kubectl cluster-info
kubectl get nodes
配置 Kubernetes 控制台
启动服务
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml
如果网慢可以找一个电脑用以下命令下载,在应用下载好的文件
curl -LO https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml
kubectl apply -f recommended.yaml
检查 kubernetes-dashboard 应用状态
kubectl get pod -n kubernetes-dashboard
开启 API Server 访问代理
这个会一直挂着
kubectl proxy
如果想外部访问,修改yaml文件,NodePort类型并添加nodePort端口,使用主机IP+nodePort访问
spec:
……
type: NodePort
port:
……
nodePort: 30443
配置控制台访问令牌
对于Mac环境
TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}')
kubectl config set-credentials docker-for-desktop --token="${TOKEN}"
echo $TOKEN
对于Windows环境
$TOKEN=((kubectl -n kube-system describe secret default | Select-String "token:") -split " +")[1]
kubectl config set-credentials docker-for-desktop --token="${TOKEN}"
echo $TOKEN
对于Linux环境
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')
Ingress安装
启动服务
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-0.32.0/deploy/static/provider/cloud/deploy.yaml
验证
kubectl get pods --all-namespaces -l app.kubernetes.io/name=ingress-nginx
Helm安装
Helm 帮助您管理 Kubernetes 应用程序——Helm Charts 帮助您定义、安装和升级最复杂的 Kubernetes 应用程序。
可以根据文档安装 helm v3 https://helm.sh/docs/intro/install/ 在国内由于helm的cdn节点使用的是谷歌云所以可能访问不到,可以参考已存在的官方issue: https://github.com/helm/helm/issues/7028
在Mac OS上安装
#Use homebrew on Mac
brew install helm
#Add helm repo
helm repo add stable http://mirror.azure.cn/kubernetes/charts/
#Update charts repo
helm repo update
在Windows上安装
如果在后续使用 helm 安装组件的过程中出现版本兼容问题,可以参考 通过二进制包安装 思路安装匹配的版本
# Use Chocolatey on Windows
# 注:安装的时候需要保证网络能够访问googleapis这个域名
choco install kubernetes-helm
# Change helm repo
helm repo add stable http://mirror.azure.cn/kubernetes/charts/
# Update charts repo
helm repo update
K8s中创建镜像仓库使用的凭据/密钥
kubectl create secret docker-registry <name> --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL -n <namespace>
POD使用凭据/密钥
apiVersion: v1
kind: Pod
metadata:
name: foo
namespace: awesomeapps
spec:
containers:
- name: foo
image: janedoe/awesomeapp:v1
# 环境变量
env:
- name: key
value: value
imagePullSecrets:
- name: <凭据name>
K8s内部各service之间访问
不需要知道service的ip等信息,只要知道service名就可以访问service下的各个pod服务,属于基于CoreDNS的服务发现
参考另一篇K8s集群内部各Service之间通过服务名调用(Nginx代理)-基于CoreDNS的服务发现
更多推荐
所有评论(0)