Docker Desktop启动Kubernetes
<p>Docker_Desktop启动Kubernetes</p><p>参考仓库:https://github.com/AliyunContainerService/k8s-for-docker-desktop</p>
<p>视频参考:《如何安装Docker Desktop for Win10 》</p>
<p> </p>
<p>安装的Docker_Desktop的版本是2.1.0.40693</p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408111935646-394816357.png"></p>
<p>安装完成后,查看版本资料(又变成了2.1.0.5),可以看到Kubernetes版本是v1.14.8 </p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408112005955-1460518687.png"></p>
<p> </p>
<p> </p>
<p>设置分享磁盘 </p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408112030231-1277028203.png"></p>
<p> </p>
<p> </p>
<p>为Docker分配4核CPU,8G内存</p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408112051925-1421847434.png"></p>
<p> </p>
<p> </p>
<p>为应用增加阿里云镜像加速器</p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408112118624-454790488.png"></p>
<p> </p>
<p> </p>
<p>Kubernetes先不着急启用</p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408112214641-1670735329.png"></p>
<p> </p>
<p> </p>
<p>查看https://github.com/AliyunContainerService/k8s-for-docker-desktop 中的介绍,如刚才所看,docker_desktop v2.1.0的kubenetes版本是v1.14.8 </p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408112253106-1778840185.png"></p>
<p> </p>
<p> </p>
<p> 我们将仓库切换到v1.14.8的分支</p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408112323589-241529781.png"></p>
<p> </p>
<p> </p>
<p>切换了分支后,然后在仓库中运行Powershell命令,执行./load_images.ps1</p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408112351340-93039322.png"></p>
<p> </p>
<p> </p>
<p>运行脚本,下载镜像</p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408112417643-810495492.png"></p>
<p> </p>
<p> </p>
<p>经过不到一分钟的等待,镜像就全部下载完成了</p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408112441893-1225396972.png"></p>
<p> </p>
<p> </p>
<p>回到docker desktop中,启动kubenetes,并选择show system containers,点击apply按钮</p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408112503066-1093616538.png"></p>
<p> </p>
<p> </p>
<p>确定安装</p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408112514207-1684319826.png"></p>
<p> </p>
<p> </p>
<p>等待安装kubenetes</p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408112541487-390946230.png"></p>
<p> </p>
<p> </p>
<p>关于启动时候的日志,存放的位置在C:\ProgramData\DockerDesktop\service.txt</p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408112608826-1232041429.png"></p>
<p> </p>
<p> </p>
<p>经过大概两分钟的等待,Kubernetes启动成功</p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408112635549-3244029.png"></p>
<p> </p>
<p> </p>
<p>powershell查看kubectl 版本</p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408112658818-1282803287.png"></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>开始配置Kubernetes</p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408112710893-1656254966.png"></p>
<p>执行结果</p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408112742723-262711307.png"></p>
<p> </p>
<p> </p>
<p> </p>
<p>开始配置Kubernetes控制台</p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408112802501-1448254574.png"></p>
<p> </p>
<p> </p>
<p> </p>
<p>打不开https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc5/aio/deploy/recommended.yaml,则用其他方法打开后,将内容复制到本地,再运行<br>内容如下</p>
<div class="cnblogs_code"><img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_8b1c43ee-5b2b-4e01-a8a6-b3f2e4c8422a" class="code_img_opened lazyload" style="display: none" alt="" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_8b1c43ee-5b2b-4e01-a8a6-b3f2e4c8422a" class="cnblogs_code_hide">
<pre># Copyright 2017<span style="color: rgba(0, 0, 0, 1)"> The Kubernetes Authors.
#
# Licensed under the Apache License, Version </span>2.0 (the "License"<span style="color: rgba(0, 0, 0, 1)">);
# you may not use </span><span style="color: rgba(0, 0, 255, 1)">this</span> file except <span style="color: rgba(0, 0, 255, 1)">in</span> compliance <span style="color: rgba(0, 0, 255, 1)">with</span><span style="color: rgba(0, 0, 0, 1)"> the License.
# You may obtain a copy of the License at
#
# http:</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">www.apache.org/licenses/LICENSE-2.0</span>
<span style="color: rgba(0, 0, 0, 1)">#
# Unless required by applicable law or agreed to </span><span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> writing, software
# distributed under the License is distributed on an </span>"AS IS"<span style="color: rgba(0, 0, 0, 1)"> BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License </span><span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> the specific language governing permissions and
# limitations under the License.
apiVersion: v1
kind: Namespace
metadata:
name: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s</span>-app: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
name: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
namespace: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
</span>---<span style="color: rgba(0, 0, 0, 1)">
kind: Service
apiVersion: v1
metadata:
labels:
k8s</span>-app: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
name: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
namespace: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
spec:
ports:
</span>- port: 443<span style="color: rgba(0, 0, 0, 1)">
targetPort: </span>8443<span style="color: rgba(0, 0, 0, 1)">
selector:
k8s</span>-app: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: v1
kind: Secret
metadata:
labels:
k8s</span>-app: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
name: kubernetes</span>-dashboard-<span style="color: rgba(0, 0, 0, 1)">certs
namespace: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
type: Opaque
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: v1
kind: Secret
metadata:
labels:
k8s</span>-app: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
name: kubernetes</span>-dashboard-<span style="color: rgba(0, 0, 0, 1)">csrf
namespace: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
type: Opaque
data:
csrf: </span>""
---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: v1
kind: Secret
metadata:
labels:
k8s</span>-app: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
name: kubernetes</span>-dashboard-key-<span style="color: rgba(0, 0, 0, 1)">holder
namespace: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
type: Opaque
</span>---<span style="color: rgba(0, 0, 0, 1)">
kind: ConfigMap
apiVersion: v1
metadata:
labels:
k8s</span>-app: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
name: kubernetes</span>-dashboard-<span style="color: rgba(0, 0, 0, 1)">settings
namespace: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
</span>---<span style="color: rgba(0, 0, 0, 1)">
kind: Role
apiVersion: rbac.authorization.k8s.io</span>/v1
<span style="color: rgba(0, 0, 0, 1)">metadata:
labels:
k8s</span>-app: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
name: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
namespace: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
rules:
# Allow Dashboard to get, update and </span><span style="color: rgba(0, 0, 255, 1)">delete</span><span style="color: rgba(0, 0, 0, 1)"> Dashboard exclusive secrets.
</span>- apiGroups: [""<span style="color: rgba(0, 0, 0, 1)">]
resources: [</span>"secrets"<span style="color: rgba(0, 0, 0, 1)">]
resourceNames: [</span>"kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs", "kubernetes-dashboard-csrf"<span style="color: rgba(0, 0, 0, 1)">]
verbs: [</span>"get", "update", "delete"<span style="color: rgba(0, 0, 0, 1)">]
# Allow Dashboard to get and update </span>'kubernetes-dashboard-settings'<span style="color: rgba(0, 0, 0, 1)"> config map.
</span>- apiGroups: [""<span style="color: rgba(0, 0, 0, 1)">]
resources: [</span>"configmaps"<span style="color: rgba(0, 0, 0, 1)">]
resourceNames: [</span>"kubernetes-dashboard-settings"<span style="color: rgba(0, 0, 0, 1)">]
verbs: [</span>"get", "update"<span style="color: rgba(0, 0, 0, 1)">]
# Allow Dashboard to get metrics.
</span>- apiGroups: [""<span style="color: rgba(0, 0, 0, 1)">]
resources: [</span>"services"<span style="color: rgba(0, 0, 0, 1)">]
resourceNames: [</span>"heapster", "dashboard-metrics-scraper"<span style="color: rgba(0, 0, 0, 1)">]
verbs: [</span>"proxy"<span style="color: rgba(0, 0, 0, 1)">]
</span>- apiGroups: [""<span style="color: rgba(0, 0, 0, 1)">]
resources: [</span>"services/proxy"<span style="color: rgba(0, 0, 0, 1)">]
resourceNames: [</span>"heapster", "http:heapster:", "https:heapster:", "dashboard-metrics-scraper", "http:dashboard-metrics-scraper"<span style="color: rgba(0, 0, 0, 1)">]
verbs: [</span>"get"<span style="color: rgba(0, 0, 0, 1)">]
</span>---<span style="color: rgba(0, 0, 0, 1)">
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io</span>/v1
<span style="color: rgba(0, 0, 0, 1)">metadata:
labels:
k8s</span>-app: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
name: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
rules:
# Allow Metrics Scraper to get metrics from the Metrics server
</span>- apiGroups: ["metrics.k8s.io"<span style="color: rgba(0, 0, 0, 1)">]
resources: [</span>"pods", "nodes"<span style="color: rgba(0, 0, 0, 1)">]
verbs: [</span>"get", "list", "watch"<span style="color: rgba(0, 0, 0, 1)">]
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: rbac.authorization.k8s.io</span>/v1
<span style="color: rgba(0, 0, 0, 1)">kind: RoleBinding
metadata:
labels:
k8s</span>-app: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
name: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
namespace: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
subjects:
</span>-<span style="color: rgba(0, 0, 0, 1)"> kind: ServiceAccount
name: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
namespace: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: rbac.authorization.k8s.io</span>/v1
<span style="color: rgba(0, 0, 0, 1)">kind: ClusterRoleBinding
metadata:
name: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
subjects:
</span>-<span style="color: rgba(0, 0, 0, 1)"> kind: ServiceAccount
name: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
namespace: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
</span>---<span style="color: rgba(0, 0, 0, 1)">
kind: Deployment
apiVersion: apps</span>/v1
<span style="color: rgba(0, 0, 0, 1)">metadata:
labels:
k8s</span>-app: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
name: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
namespace: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
spec:
replicas: </span>1<span style="color: rgba(0, 0, 0, 1)">
revisionHistoryLimit: </span>10<span style="color: rgba(0, 0, 0, 1)">
selector:
matchLabels:
k8s</span>-app: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
template:
metadata:
labels:
k8s</span>-app: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
spec:
containers:
</span>- name: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
image: kubernetesui</span>/dashboard:v2.0.0-rc5
<span style="color: rgba(0, 0, 0, 1)"> imagePullPolicy: Always
ports:
</span>- containerPort: 8443<span style="color: rgba(0, 0, 0, 1)">
protocol: TCP
args:
</span>- --auto-generate-<span style="color: rgba(0, 0, 0, 1)">certificates
</span>- --namespace=kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
# Uncomment the following line to manually specify Kubernetes API server Host
# If not specified, Dashboard will attempt to auto discover the API server and connect
# to it. Uncomment only </span><span style="color: rgba(0, 0, 255, 1)">if</span> the <span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> does not work.
# </span>- --apiserver-host=http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">my-address:port</span>
<span style="color: rgba(0, 0, 0, 1)"> volumeMounts:
</span>- name: kubernetes-dashboard-<span style="color: rgba(0, 0, 0, 1)">certs
mountPath: </span>/certs
# Create on-<span style="color: rgba(0, 0, 0, 1)">disk volume to store exec logs
</span>- mountPath: /tmp
name: tmp-<span style="color: rgba(0, 0, 0, 1)">volume
livenessProbe:
httpGet:
scheme: HTTPS
path: </span>/<span style="color: rgba(0, 0, 0, 1)">
port: </span>8443<span style="color: rgba(0, 0, 0, 1)">
initialDelaySeconds: </span>30<span style="color: rgba(0, 0, 0, 1)">
timeoutSeconds: </span>30<span style="color: rgba(0, 0, 0, 1)">
securityContext:
allowPrivilegeEscalation: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">
readOnlyRootFilesystem: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
runAsUser: </span>1001<span style="color: rgba(0, 0, 0, 1)">
runAsGroup: </span>2001<span style="color: rgba(0, 0, 0, 1)">
volumes:
</span>- name: kubernetes-dashboard-<span style="color: rgba(0, 0, 0, 1)">certs
secret:
secretName: kubernetes</span>-dashboard-<span style="color: rgba(0, 0, 0, 1)">certs
</span>- name: tmp-<span style="color: rgba(0, 0, 0, 1)">volume
emptyDir: {}
serviceAccountName: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
nodeSelector:
</span>"beta.kubernetes.io/os"<span style="color: rgba(0, 0, 0, 1)">: linux
# Comment the following tolerations </span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> Dashboard must not be deployed on master
tolerations:
</span>- key: node-role.kubernetes.io/master
<span style="color: rgba(0, 0, 0, 1)"> effect: NoSchedule
</span>---<span style="color: rgba(0, 0, 0, 1)">
kind: Service
apiVersion: v1
metadata:
labels:
k8s</span>-app: dashboard-metrics-<span style="color: rgba(0, 0, 0, 1)">scraper
name: dashboard</span>-metrics-<span style="color: rgba(0, 0, 0, 1)">scraper
namespace: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
spec:
ports:
</span>- port: 8000<span style="color: rgba(0, 0, 0, 1)">
targetPort: </span>8000<span style="color: rgba(0, 0, 0, 1)">
selector:
k8s</span>-app: dashboard-metrics-<span style="color: rgba(0, 0, 0, 1)">scraper
</span>---<span style="color: rgba(0, 0, 0, 1)">
kind: Deployment
apiVersion: apps</span>/v1
<span style="color: rgba(0, 0, 0, 1)">metadata:
labels:
k8s</span>-app: dashboard-metrics-<span style="color: rgba(0, 0, 0, 1)">scraper
name: dashboard</span>-metrics-<span style="color: rgba(0, 0, 0, 1)">scraper
namespace: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
spec:
replicas: </span>1<span style="color: rgba(0, 0, 0, 1)">
revisionHistoryLimit: </span>10<span style="color: rgba(0, 0, 0, 1)">
selector:
matchLabels:
k8s</span>-app: dashboard-metrics-<span style="color: rgba(0, 0, 0, 1)">scraper
template:
metadata:
labels:
k8s</span>-app: dashboard-metrics-<span style="color: rgba(0, 0, 0, 1)">scraper
annotations:
seccomp.security.alpha.kubernetes.io</span>/pod: 'runtime/<span style="color: rgba(0, 0, 255, 1)">default</span>'<span style="color: rgba(0, 0, 0, 1)">
spec:
containers:
- name: dashboard-metrics-scraper
image: kubernetesui/metrics-scraper:v1.0.3
ports:
- containerPort: 8000
protocol: TCP
livenessProbe:
httpGet:
scheme: HTTP
path: /
port: 8000
initialDelaySeconds: 30
timeoutSeconds: 30
volumeMounts:
- mountPath: /tmp
name: tmp-volume
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
runAsUser: 1001
runAsGroup: 2001
serviceAccountName: kubernetes-dashboard
nodeSelector:
"beta.kubernetes.io/os": linux
# Comment the following tolerations if Dashboard must not be deployed on master
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
volumes:
- name: tmp-volume
emptyDir: {}</span></pre>
</div>
<span class="cnblogs_code_collapse">yaml文件</span></div>
<p>运行结果</p>
<p><img alt="" data-src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408112942257-1540340005.png"></p>
<p> </p>
<p> </p>
<p>复制地址进入http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/</p>
<p> <img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408113011981-533045088.png"></p>
<p> </p>
<p> </p>
<p>生成Token</p>
<div class="cnblogs_code">
<pre>$TOKEN=((kubectl -n kube-system describe secret <span style="color: rgba(0, 0, 255, 1)">default</span> | Select-String "token:") -split " +")
kubectl config set</span>-credentials docker-<span style="color: rgba(0, 0, 255, 1)">for</span>-desktop --token="${TOKEN}"<span style="color: rgba(0, 0, 0, 1)">
echo $TOKEN</span></pre>
</div>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408113111118-230600064.png"></p>
<p> </p>
<p>设置了token后,最后进入到页面中</p>
<p><img src="https://img2020.cnblogs.com/blog/299612/202004/299612-20200408113125258-741319259.png"></p>
<p> </p>
<p> </p>
<p> </p>
<p>还有其他关于ingress和helm的,可以参考github仓库https://github.com/AliyunContainerService/k8s-for-docker-desktop</p>
<p> </p><br><br>
来源:https://www.cnblogs.com/weschen/p/12658839.html
頁:
[1]