在Linux服务器,一键搭建1.21.0最新版K8s服务【脚本篇】
<h3>前言</h3><p>好久没有写博客了,本文主要是对网上文章的总结篇,主要是将安装和运行代码做了一次真机实验,亲测可用。文章内包含的脚本和代码,多来自于网络,也有我自己的调整和配置,文章末尾对参考的文献做了列举,方便大家参考。</p>
<p>过程很简单,一路next往下看和操作即可,文章不对脚本和代码做原理解释,某些注意点加了红色标注,部分脚本有注释,可以自行参考,以后有机会可以视频讲解。</p>
<h3>核心步骤</h3>
<p>因为是next的方式,所以本章节主要是操作步骤,步骤中涉及到的代码或者脚本,可以在下文中找到,比如:附录代码一、附录代码二等等,因为脚本实在太长,不太方便放到步骤里。</p>
<h4>1、配置 node01 主节点(2个文件,1个结果);</h4>
<p>在root目录下拷贝k8s脚本(<strong>附录代码一:kubernetes_node01.sh</strong>)和flannel网络(<strong>附录代码二:kube-flannel.yml</strong>)的文件;</p>
<p>然后给脚本文件赋权限:chmod +x kubernetes_node01.sh</p>
<p>最后执行脚本:./kubernetes_node01.sh</p>
<blockquote>
<p>ps:1、sh脚本中,需要配置节点,是内网的。</p>
<p>2、多个节点之间要保证能ping通;</p>
<p>3、中间可能需要自己来配合做些操作,比如输入:y,来做确认等等。</p>
<p>最后,可以在当前文件夹下,看到一个key.txt的文件,里边有安装的结果数据或者密钥等,可查看<strong>附录代码三:key.txt</strong>,这是我安装的结果,里边有join主节点的配置语句。</p>
</blockquote>
<p>查看所有的nodes和pods:</p>
<div class="cnblogs_code">
<pre># kubectl <span style="color: rgba(0, 0, 255, 1)">get</span><span style="color: rgba(0, 0, 0, 1)"> nodes
NAME STATUS ROLES AGE VERSION
node01 Ready control-plane,master 26h v1.21</span><span style="color: rgba(128, 0, 128, 1)">.0</span></pre>
</div>
<p> </p>
<p>所有的pods:</p>
<div class="cnblogs_code">
<pre># kubectl <span style="color: rgba(0, 0, 255, 1)">get</span> pods -<span style="color: rgba(0, 0, 0, 1)">A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube</span>-system coredns-7ff77c879f-6m6fl <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 25m
kube</span>-system coredns-7ff77c879f-dkd56 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 25m
kube</span>-system etcd-node01 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 26m
kube</span>-system kube-apiserver-node01 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 26m
kube</span>-system kube-controller-manager-node01 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 26m
kube</span>-system kube-flannel-ds-amd64-sdv2h <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 25m
kube</span>-system kube-proxy-vgf4r <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 25m
kube</span>-system kube-scheduler-node01 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span> 26m</pre>
</div>
<p> </p>
<p>如果都启动,都READY了,表示安装成功。</p>
<p> </p>
<h4>2、配置dashboard仪表盘(2个文件)</h4>
<p>上面安装好了kubectl、kubeadm、kubelet后,我们可以通过客户端来连接,这里安利下k8s的客户端:Lens,很香。</p>
<p>如果要使用客户端连接,就需要获取集群的上下文配置信息,可以执行以下命令:</p>
<p>kubectl config view --minify --raw</p>
<p>输出的结果类似于:</p>
<div class="cnblogs_code">
<pre># <span style="color: rgba(0, 128, 0, 1)">kubectl config view --minify --</span><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(0, 128, 0, 1)">raw</span>
apiVersion: v1
clusters:
</span>-<span style="color: rgba(0, 0, 0, 1)"> cluster:
certificate</span>-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTa3Foa2XcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeE1EVXlOakE0TVRjMU9Wb1hEVE14TURVeU5EQTRNVGMxT1Zvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTDlsCjRTSktsSnI1ZGdENUJZWlNvcWd3UWlsNDM4K2h2RkdCK0JwT2dXU3JJOUdTcjZRRzVEMllYSnU4bHE5a1IxMXEKME9ZcFpmSGJoOXJlZkZETThmNGh3TjFpSlRtN0pxVEc2UlFMc1BIZWdjdE1vQ2VyWkhzYURJNHpuOUxOdTEzcgpIbFhwSHFuRjY1bnpnL0pQcjVHclVPTGpqTis0aXdyaXE0cmFiZGg5aWR1aDlRaWFzTDNmaEhXeUYvNVJIbTdMCitvdFpkM2pJU2dJZDJxSkg1R2gwK3pzbSt0MHE2WHpPbjljWkpaWnUxWEhkRTVUMUI2aXdzS1B1cG9rYVB2VHQKTW9NeWc2SkM5SVVyalp6SVZEQWg5TU1Ua0NLckJIalBWeXY0L2xkdWxiOUpMZS95TTJidVhVWTVsV0VESm1hMQpjS0xlTEVrckYvelIrS1R4c3lzQ0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFDR2NQdk5GZ2VHUjNVbkZsV1M1Y3JZNVRtQUIKQ2dPdVBmVU5ZMFRLNDU1QytGVzVHaTBkeG1JL3NVM2cwVXVoN3c0dWlTQStZQksvUmh0TE1EZnNmMFhRc3FQTwpIeEduWWYvM0xDR3dpVFBrSnFzS2ZodUJlS0RVZ1lsejhOcWJlMDdaMkJlTTVNbFdsN2VmTVNoOEpqRXBzUjBHCnArYmdzdVViQ0hzQ1BSS0ErcW13dFU0UkUvTlMvYzh6Q2xPN3JpNkkzSE1qdTJQOWRTSit1aDY2OFNhSVN0MDkKMG1XWGdoaHlqdmRicnJBTnBucEh0TWNwSGRYM2lRS2g1RVczVjk3VjVpbEt6Yjl3TmJ1QTAwTzVUcEd1eGQ5RApnYUdTajBoMVBOSE9yaFVQRnZQa1ZoS1VaWjZ2cnNWTUsxR3N1akNObWZlZEhWVDlOR0kzNy9aYVMzWT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=<span style="color: rgba(255, 0, 0, 1)">
server: https://172.17.10.4:6443 #注意这里以后是kubectl proxy的地址,应该是你的ip地址:8001</span>
<span style="color: rgba(0, 0, 0, 1)">name: kubernetes
contexts:
</span>-<span style="color: rgba(0, 0, 0, 1)"> context:
cluster: kubernetes
user: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">admin
name: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">admin@kubernetes
current</span>-context: kubernetes-<span style="color: rgba(0, 0, 0, 1)">admin@kubernetes
kind: Config
preferences: {}
users:
</span>- name: kubernetes-<span style="color: rgba(0, 0, 0, 1)">admin
user:
client</span>-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1J4akNDQWRxZ0F3SUJBZ0lJU3FXNFdBdVVE13RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TVRBMU1qWXdPREUzTlRsYUZ3MHlNakExTWpZd09ERTRNREphTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTNtTGRIM3ZQTnZxN2pjbzYKL1lOU0RkMlJ0YVlWWGIwazdlRXpDVlFWL2dFc2M4bEpiRHZveTcxQUJpa09IMjF5dU4rN00yNmNxTW5KSUgvNQpOcUtKeFRNMVliZHJGTzh2RVJDNE5hMWpRSUppdnJBbVBLeUdzbEpTL2h0dXVlQzZOazRlWmdLNDhCOVJSazNtCmxHclBYZnFvaHo5ckkwQzFvaHA4YnErVGNxYkRvNTNjc1ZMU1puNFFGWHRXMjZJbHg1V3Rhc0JGZVMyWVgvamEKQklld1FWaTMxbmthblFuWVMyekg4aVhiWktXZkc4eDkyR3hrSDhRYWV1ZmlxR2VCYlRuc3UxUlh4TnByVEZqcQpaeW9rUm5yWFEzSU5Fd2dRRzNzUndQaWZxcWtxQTZ1NlQxS21hbzFRelF6bW5XNTdCUG5Jd1EvVjFURU1iS2tJCkdvU0dSUUlEQVFBQm95Y3dKVEFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFHbTBCSVhKMVBnTDh4bDVRZ2UvNjlaemd6N1d2TythZ2JZUgowdVB2blhSTU1kNGk1akV1NlQzWDh3Zm4zVGowR004VDlsZERLa2ZKUGFIcnRuRVFIOFFkeHBaek9HeXNjSEpLCmRYN3Uyb2d1dTMxUy9ZblltR21vMk5VS1M3T2hiTWE3WEw1bVpTTGV4RWp0eWNBdkpDa2Evdndqa0hFTFJUMzYKZ3hGWnhBQWRqWFVOd011TWdiV25IT0dOK3dIcUxDSjZKa3NkYU9yZTJTRHRCUWZXRTZ5RjJEVnk4akZvUDVlWQpFcDZuVzVia1NsY3NIR2NhamJPcXNNbSs2bEk5L3RidDZyMno4U3VHR1BVenNzbUFqMHJIbDFvTHhVYjFkWjhCCjF2ZTBYVWZPNmhsSDhWaWxqYVFISHBnQU5NV05KN3kvR0VVYmMzSWZCVGZ6b05UWHJCRT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=<span style="color: rgba(0, 0, 0, 1)">
client</span>-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVS0tLQpNSUlFcEFJQkFBS0NBUUVBM21MZEgzdlBOdnE3avNi9ZTlNEZDJSdGFZVlhiMGs3ZUV6Q1ZRVi9nRXNjOGxKCmJEdm95NzFBQmlrT0gyMXl1Tis3TTI2Y3FNbkpJSC81TnFLSnhUTTFZYmRyRk84dkVSQzROYTFqUUlKaXZyQW0KUEt5R3NsSlMvaHR1dWVDNk5rNGVaZ0s0OEI5UlJrM21sR3JQWGZxb2h6OXJJMEMxb2hwOGJxK1RjcWJEbzUzYwpzVkxTWm40UUZYdFcyNklseDVXdGFzQkZlUzJZWC9qYUJJZXdRVmkzMW5rYW5RbllTMnpIOGlYYlpLV2ZHOHg5CjJHeGtIOFFhZXVmaXFHZUJiVG5zdTFSWHhOcHJURmpxWnlva1JuclhRM0lORXdnUUczc1J3UGlmcXFrcUE2dTYKVDFLbWFvMVF6UXptblc1N0JQbkl3US9WMVRFTWJLa0lHb1NHUlFJREFRQUJBb0lCQUVnN3BvVSthc3o1M2dldApJMElLOEpFT1lmQzFsSVVSRmJpcWlEQkVmcXcxWjJIb2hJL0NXZGdyaldzeTFLS0NvMXZIVi8vWnNzcmtXQTdWClluWkxqeUpkZ3I1Tm5GdDlZVFZTei9LbmNmQ1hLVW0wMzRhZnAxU3Voc1NBMXBOTG1sQmZTV0pyQ2ZUOHh5SmwKMVRwcUF4Y01mc2NIWTE1YysySSs1aUh4cDV2NlVjNEtQZ0R6bGZCbkVTZ3dhNlVOVURZRkVmN2RNMXdONlhtZgpPMllNcDIvWHVacWFwU3RRRHRLWXVvT2xsWStsRXpQeUpQQSsvS0tnN3M5VGpzSllUZTJyN1Y0S2psVUpLQ0tqCjhsNnVoUWhNNkRuWnYvVVZScEtZM3RlSlJkRDgxZ2RBQ1FPTUh0aktrb0drbEtDeS96Z29oak9FZlVFTWJqNloKY2dRT0VFRUNnWUVBOU1KSytZUTg3YURqSTMrOWVSd0VxSmQ2WjFXbnZTUHZld21iOXpUSVdkYjUrU1RGSi8vZwpPS1lFdHNjN1hRc05wV3hsdjhncnc4azhKRzFxcG1EVHFaa1Vna3NGaXNaMGxGYVk1TUlKOUh3K00wMzJmN0N0CkxaQ2oxSTdqNWpsNWt5dy9qYVB3amJtWG1zY280NUNxZFl4YUhoMjJPbE1pdVVkNTU2SVJhdFVDZ1lFQTZKbUcKKytsWTZxRDJKY2N2cGJhUFhnQUwrZklpTDlSblQwbVZKTmZ5MXU3RGdhSXl3UHVOaVBUOUhoRXc0VU1WeTE5UQpzeS9yQ2JFQ1A5MnJQeEloOXVlTHlCazNNR0hyaTBVZkdiV0V4czNiZ3QydTUvZUpSaGlaYm5sSlJqZDlIeFdZCnljaWhER2JRVVhoVWhtaGxzSUU1dDRGcWdjUUN6L0NmSklxVmhiRUNnWUVBcnVxN2toNURQTCtpRkJpU1hCNzkKNVU1OEY2VkxQd3lUZFNhazQ4SkEvSk42Q2VlUlRzaTZnVUdFVk91RkxUVmRCeiswWjU2eVNEVmtXZFFvUjhjaQovUzE5VHJBMndicWFUZmlsUTdhNFRwVU1EclpFMTNSNER2d3pXUkRWSmc4bEoxeVQvckdPbEhweU1oYnF6ZGJ4Ck94aVd2cmNWS0JHSjIwZU5nMUI3aWhFQ2dZRUFuUUcxT2lwRFdPMlorZHBBY1cyUHpQWGZIN0t3SFBVVlgxSGUKR09ha0J5MVlUeEw3aTRUQi95YlFEUkd4bXZ5N28zSU5lVWJwTXJ1SE56RWNQUkN5V0lYbnR3UStXcXhlWUw0aAp4aXJmRzRzdGwyS29nL0IxZXhsenlEeWFsNGt4TG1CWHFDMkRlR21XU01nZTFqTjJJUFM1endMT3NCVnRpSXQyCkFTYUMwNkVDZ1lCeGNBaFRkVG9pWGhkWnNmWCtaMC9mMXJ5ait3WWp2VnlUU0Z2Q0JZVDFnYllVM0VZOHFCTEkKMWZLaCtJeDhuS0U3bzJGMEFzMTVJN1ZNeks0OFF5NnhjbkExa0RPUGFxOXYydTBlUzJyemJhSWhudmZLTFpBZgpxa3NtaHl0bWVCMUxPRGZQZjdFRVgvNWNCOWlkZ0QwVGlzNHMxL1NCWkhaRWJuMVhCd0J1WEE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=</pre>
</div>
<p> </p>
<p>如果不用客户端,那就需要安装仪表盘了。</p>
<p>1、Linux根目录拷贝文件,<strong>附录代码四:recommended.yaml</strong>(安装看板),<strong>附录代码五:dashboard-svc-account.yaml</strong>(配置管理员账户)</p>
<p>2、执行命令:</p>
<div class="cnblogs_code">
<pre>sed -i <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/targetPort: 8443/a\ \ \ \ \ \ nodePort: 30001\n\ \ type: NodePort</span><span style="color: rgba(128, 0, 0, 1)">'</span> recommended.yaml</pre>
</div>
<p>3、启动仪表盘服务:</p>
<div class="cnblogs_code">
<pre>kubectl apply -f recommended.yaml</pre>
</div>
<p>4、启动配置账户:</p>
<div class="cnblogs_code">
<pre>kubectl apply -f dashboard-svc-account.yaml</pre>
</div>
<p> </p>
<p>都成功后,会生成一个token字符串,用来登录web端的令牌的,如果没有拷贝或者丢失了也不怕,可以使用命令查看:</p>
<div class="cnblogs_code">
<pre>kubectl describe secrets -n kube-system `kubectl <span style="color: rgba(0, 0, 255, 1)">get</span> secret -n kube-system | grep admin | awk <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">{print $1}</span><span style="color: rgba(128, 0, 0, 1)">'</span>` | grep <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">^token</span><span style="color: rgba(128, 0, 0, 1)">'</span>|awk <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">{print $2}</span><span style="color: rgba(128, 0, 0, 1)">'</span></pre>
</div>
<p> </p>
<p>token就是类似这种:</p>
<div class="cnblogs_code">
<pre>eyJhbGciOiJSUzI1NiIsImtpZCI6Ikl5SE00cXFZR1V2cWstQURVcGlUOGk4cTBYekZMV0VmNDEwRy14UTd1d2sifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tY3JnejYiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWliwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiMjYwMGQ0ZjctM2ZhOS00ODIwLWFmMmUtZTJlZDMxYWMyYWFhIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.BBtdG-S2kHEwRbWIAf6DiUgC3ILUOStPATyWfvxcQs5VJBtLRyMGqQ-AfkUoVLuhZdUv-CGoEJ1OYA00M6MwoehDdkhLFbXF7Xx1IPyhFTHxZ_oXHBPyjEREkTEerarZnvgt0ufU4g_Eqn91jdHet73itz-0abgmLMPkRl5YYjlh36Ivwq9IjKgujLwTNisUFckLuHOscHtQIrjIvAZlWTRh_awMsDHvemAKG_YIjMbyQnXi6VfN3rTW869DA0XAGOF2t7cWBtMmHvmLxVYqpOauUzwXXeYbO9eP0_d9JtVwKv6R0Q7sexRFZ-iTdZBOJDujFI3UT2jsqgVdbagA</pre>
</div>
<p> </p>
<p>这里再检查下:</p>
<p>查看所有的nodes和pods:</p>
<div class="cnblogs_code">
<pre># kubectl <span style="color: rgba(0, 0, 255, 1)">get</span> pods -<span style="color: rgba(0, 0, 0, 1)">A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube</span>-system coredns-7ff77c879f-6m6fl <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 25m
kube</span>-system coredns-7ff77c879f-dkd56 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 25m
kube</span>-system etcd-node01 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 26m
kube</span>-system kube-apiserver-node01 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 26m
kube</span>-system kube-controller-manager-node01 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 26m
kube</span>-system kube-flannel-ds-amd64-sdv2h <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 25m
kube</span>-system kube-proxy-vgf4r <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 25m
kube</span>-system kube-scheduler-node01 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 26m
kubernetes</span>-dashboard dashboard-metrics-scraper-78f5d9f487-ldswx <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 12m
kubernetes</span>-dashboard kubernetes-dashboard-577bd97bc-szvwt <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span> 12m</pre>
</div>
<p> </p>
<p>多了kubernetes-dashboard命名空间下的两个pod。</p>
<p> </p>
<p> </p>
<h4>3、配置 node02 子节点(1个文件)</h4>
<p>如果你没有多余的服务器,也可以在master节点做自己的pod的,需要开启下,命令将 master 标记为可调度:</p>
<div class="cnblogs_code">
<pre>sudo kubectl taint nodes --all node-role.kubernetes.io/masteflr-</pre>
</div>
<p> </p>
<p>如果要配置多个子节点,那就仿照主节点来继续写sh脚本吧(<strong>附录代码六:kubernetes_node02.sh</strong>),步骤和主节点一致:</p>
<p>1、拷贝到子节点服务器;</p>
<p>2、赋权限,执行文件:./kubernetes_node02.sh</p>
<p>3、这里不用flannel配置;</p>
<p>4、安装完成后,可以join到主节点,配置文件在主节点的key.txt文件里,如果你安装成功了的话;</p>
<div class="cnblogs_code">
<pre>kubeadm join <span style="color: rgba(128, 0, 128, 1)">172.17</span>.<span style="color: rgba(128, 0, 128, 1)">10.4</span>:<span style="color: rgba(128, 0, 128, 1)">6443</span> --<span style="color: rgba(0, 0, 0, 1)">token q3uu1o.4rdfkcyzxjhawvk1 \
</span>--discovery-token-ca-cert-hash sha256:a755d8f56733ba8f9d1951298b200202fce7b84389954bf7a38558fa6ce2a9c9 </pre>
</div>
<p> </p>
<p>如果一切正常,可以去主节点查看所有的nodes:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">NAME STATUS ROLES AGE VERSION
node01 Ready control-plane,master 26h v1.21</span><span style="color: rgba(128, 0, 128, 1)">.0</span><span style="color: rgba(0, 0, 0, 1)">
node02 Ready <none> 25h v1.21</span><span style="color: rgba(128, 0, 128, 1)">.0</span></pre>
</div>
<p>表示我们的子节点已经配置完成。</p>
<p> </p>
<p> </p>
<h4>4、配置ASP.Net Core服务</h4>
<p>这里的Deployment+Service的写法比较简单,直接贴出来,就不做过多的解释了。</p>
<div class="cnblogs_code">
<pre>apiVersion: apps/<span style="color: rgba(0, 0, 0, 1)">v1
kind: Deployment
metadata:
labels:
app: laozhang</span>-<span style="color: rgba(0, 0, 0, 1)">op2
name: laozhang</span>-<span style="color: rgba(0, 0, 0, 1)">op2
spec:
selector:
matchLabels:
app: laozhang</span>-<span style="color: rgba(0, 0, 0, 1)">op2
replicas: </span><span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">
template:
metadata:
labels:
app: laozhang</span>-<span style="color: rgba(0, 0, 0, 1)">op2
spec:
containers:
</span>- name: laozhang-<span style="color: rgba(0, 0, 0, 1)">op2
image: laozhangisphi</span>/<span style="color: rgba(0, 0, 0, 1)">apkimg315
imagePullPolicy: IfNotPresent #pull镜像时机,
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: v1
kind: Service
metadata:
name: laozhang</span>-nodeport-<span style="color: rgba(0, 0, 0, 1)">op2
spec:
type: NodePort
ports:
</span>- name: <span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)">
protocol: TCP
port: </span><span style="color: rgba(128, 0, 128, 1)">8081</span><span style="color: rgba(0, 0, 0, 1)">
targetPort: </span><span style="color: rgba(128, 0, 128, 1)">8081</span><span style="color: rgba(0, 0, 0, 1)">
nodePort: </span><span style="color: rgba(128, 0, 128, 1)">30099</span><span style="color: rgba(0, 0, 0, 1)">
selector:
app: laozhang</span>-op2 </pre>
<pre><code>---
apiVersion: v1
kind: Service
metadata:
name: laozhang-cluster-svc
spec:
selector:
app: laozhang-op2
ports:
- protocol: TCP
port: 8081
targetPort: 8081<br>---<br></code></pre>
<p>apiVersion: extensions/v1beta1<br>kind: Ingress<br>metadata:<br> name: test-ingress<br> annotations:<br> nginx.ingress.kubernetes.io/rewrite-target: /<br>spec:<br> rules:<br> - host: abctest.neters.club<br> http:<br> paths:<br> - path: /<br> pathType: ImplementationSpecific<br> backend:<br> serviceName: tomcat-svc<br> servicePort: 8081</p>
<pre><code> </code></pre>
</div>
<p> </p>
<p>关于简历service有两种方式,上边的这种是nodePort的方式——laozhang-nodeport-op2,直接暴漏端口到公网,</p>
<p>不过平时使用更多的是Ingress的方式,对应的service也都是使用集群的方式,也就是下边那种——laozhang-cluster-svc,官方默认的就是集群的方式,</p>
<p>那使用ingress,就先需要配置ingress的服务。</p>
<p> </p>
<h4>5、配置Ingress-nginx(1个文件)</h4>
<p>在根目录拷贝文件,<strong>附录代码七:mandatory.yaml</strong>,配置Ingress-Nginx服务,</p>
<p>这里需要注意下,如果服务器之前已经配置过nginx,需要在mandatory.yaml文件中,修改http-port输出端口,详细内容见下面的代码,有注释。</p>
<p>直接执行yaml:</p>
<div class="cnblogs_code">
<pre>kubectl apply -f mandatory.yaml</pre>
</div>
<p> </p>
<p>如果没有报错,可以查看所有的pods:</p>
<div class="cnblogs_code">
<pre># kubectl <span style="color: rgba(0, 0, 255, 1)">get</span> pods -<span style="color: rgba(0, 0, 0, 1)">A
NAMESPACE NAME READY STATUS RESTARTS AGE
</span><span style="color: rgba(0, 0, 255, 1)">default</span> laozhang-op2-5cf487b57f-pdvfg <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 4h29m
</span><span style="color: rgba(0, 0, 255, 1)">default</span> laozhang-op2-5cf487b57f-vtgwc <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 4h29m
<span style="color: rgba(255, 0, 0, 1)">ingress</span></span><span style="color: rgba(255, 0, 0, 1)">-nginx nginx-ingress-controller-557475687f-rfl98 1/1 Running 0</span><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(255, 0, 0, 1)"> 122m</span>
kube</span>-system coredns-7ff77c879f-gj4sl <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 26h
kube</span>-system coredns-7ff77c879f-mqp2q <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 26h
kube</span>-system etcd-node01 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 26h
kube</span>-system kube-apiserver-node01 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 26h
kube</span>-system kube-controller-manager-node01 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 26h
kube</span>-system kube-flannel-ds-amd64-nmnj2 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 26h
kube</span>-system kube-proxy-wcjb8 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 26h
kube</span>-system kube-scheduler-node01 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)"> 26h
kubernetes</span>-dashboard dashboard-metrics-scraper-78f5d9f487-qp2fw <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> 26h
kubernetes</span>-dashboard kubernetes-dashboard-577bd97bc-2tsj7 <span style="color: rgba(128, 0, 128, 1)">1</span>/<span style="color: rgba(128, 0, 128, 1)">1</span> Running <span style="color: rgba(128, 0, 128, 1)">0</span> 26h</pre>
</div>
<p> </p>
<p>如果和上面一样,那恭喜,一切配置就完成了。</p>
<p> </p>
<p> </p>
<h3>附录代码一:<strong>kubernetes_node01.sh</strong></h3>
<div class="cnblogs_code">
<pre>#!/bin/<span style="color: rgba(0, 0, 0, 1)">bash
##############
##主节点##
##############
#### 第一部分,环境初始化 ####
#k8s版本
version</span>=v1.21<span style="color: rgba(128, 0, 128, 1)">.0</span><span style="color: rgba(0, 0, 0, 1)">
kubelet</span>=kubelet-<span style="color: rgba(128, 0, 128, 1)">1.21</span>.<span style="color: rgba(128, 0, 128, 1)">0</span>-<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">.x86_64
kubeadm</span>=kubeadm-<span style="color: rgba(128, 0, 128, 1)">1.21</span>.<span style="color: rgba(128, 0, 128, 1)">0</span>-<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">.x86_64
kubectl</span>=kubectl-<span style="color: rgba(128, 0, 128, 1)">1.21</span>.<span style="color: rgba(128, 0, 128, 1)">0</span>-<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">.x86_64
#集群加入方式
key</span>=/root/<span style="color: rgba(0, 0, 0, 1)">key.txt
#部署flannel网络
flannel</span>=/root/kube-<span style="color: rgba(0, 0, 0, 1)">flannel.yml
#安装必要依赖
yum </span>-y install vim wget git cmake make gcc gcc-c++ net-<span style="color: rgba(0, 0, 0, 1)">tools lrzsz
#### 第二部分,节点配置 ####
<span style="color: rgba(255, 0, 0, 1)">#第一步:主机解析,免密登录
#内网ip,配置多节点,也可以不配置,后期通过join的方式</span>
node01</span>=<span style="color: rgba(128, 0, 128, 1)">172.21</span>.<span style="color: rgba(128, 0, 128, 1)">10.4</span><span style="color: rgba(0, 0, 0, 1)">
#node02</span>=<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">10.7</span><span style="color: rgba(0, 0, 0, 1)">
#node03</span>=<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">1.30</span><span style="color: rgba(0, 0, 0, 1)">
hostnamectl </span><span style="color: rgba(0, 0, 255, 1)">set</span>-<span style="color: rgba(0, 0, 0, 1)">hostname node01
echo</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">172.21.10.4 node01</span>
#<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">10.7</span><span style="color: rgba(0, 0, 0, 1)"> node02
#</span><span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">1.30</span> node03<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)"> >> /etc/hosts</span>
ssh-<span style="color: rgba(0, 0, 0, 1)">keygen
ssh</span>-copy-id-<span style="color: rgba(0, 0, 0, 1)">i $node01
#ssh</span>-copy-id-<span style="color: rgba(0, 0, 0, 1)">i $node02
#ssh</span>-copy-id-<span style="color: rgba(0, 0, 0, 1)">i $node03
#scp </span>/etc/hosts node02:/etc/<span style="color: rgba(0, 0, 0, 1)">hosts
#scp </span>/etc/hosts node03:/etc/<span style="color: rgba(0, 0, 0, 1)">hosts<br><span style="color: rgba(255, 0, 0, 1)">#第二步:时间同步</span><br>systemctl start chronyd<br>systemctl enable chronyd
<span style="color: rgba(255, 0, 0, 1)">#第三步:关闭防火墙和急用iptables</span>
systemctl stop firewalld
systemctl disable firewalld<br>#systemctl stop iptables<br>#systemctl disable iptables
<span style="color: rgba(255, 0, 0, 1)">#第四步:禁用swap分区</span>
swapoff </span>-<span style="color: rgba(0, 0, 0, 1)">a
sed </span>-i <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">s/.*swap.*/#&/</span><span style="color: rgba(128, 0, 0, 1)">'</span> /etc/<span style="color: rgba(0, 0, 0, 1)">fstab
<span style="color: rgba(255, 0, 0, 1)">#第五步:关闭沙盒,禁用selinux</span>
setenforce</span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
sed </span>-i <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">s/^SELINUX=enforcing/SELINUX=disabled/g</span><span style="color: rgba(128, 0, 0, 1)">"</span> /etc/sysconfig/<span style="color: rgba(0, 0, 0, 1)">selinux
sed </span>-i <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">s/^SELINUX=enforcing/SELINUX=disabled/g</span><span style="color: rgba(128, 0, 0, 1)">"</span> /etc/selinux/<span style="color: rgba(0, 0, 0, 1)">config
sed </span>-i <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">s/^SELINUX=permissive/SELINUX=disabled/g</span><span style="color: rgba(128, 0, 0, 1)">"</span> /etc/sysconfig/<span style="color: rgba(0, 0, 0, 1)">selinux
sed </span>-i <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">s/^SELINUX=permissive/SELINUX=disabled/g</span><span style="color: rgba(128, 0, 0, 1)">"</span> /etc/selinux/<span style="color: rgba(0, 0, 0, 1)">config
<span style="color: rgba(255, 0, 0, 1)">#第六步:打开ipv6</span>
modprobe br_netfilter
modprobeip_vs_rr<br><span style="color: rgba(255, 0, 0, 1)">#第七步:修改Linux的内核参数</span>
cat </span><<EOF >/etc/sysctl.d/<span style="color: rgba(0, 0, 0, 1)">k8s.conf
net.bridge.bridge</span>-nf-call-ip6tables = <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
net.bridge.bridge</span>-nf-call-iptables = <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
vm.swappiness </span>= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
EOF
sysctl </span>-p /etc/sysctl.d/<span style="color: rgba(0, 0, 0, 1)">k8s.conf
ls </span>/proc/sys/net/<span style="color: rgba(0, 0, 0, 1)">bridge
#### 第三部分,参数</span>/<span style="color: rgba(0, 0, 0, 1)">源处理 ####
#安装epel源
yum install </span>-y epel-<span style="color: rgba(0, 0, 0, 1)">release
yum install </span>-y yum-utils device-mapper-persistent-data lvm2 net-tools conntrack-tools wget vimntpdate libseccomp libtool-<span style="color: rgba(0, 0, 0, 1)">ltdl
#时区校准
systemctl enable ntpdate.service
echo </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">*/30 * * * * /usr/sbin/ntpdate time7.aliyun.com >/dev/null 2>&1</span><span style="color: rgba(128, 0, 0, 1)">'</span> > /tmp/<span style="color: rgba(0, 0, 0, 1)">crontab2.tmp
crontab </span>/tmp/<span style="color: rgba(0, 0, 0, 1)">crontab2.tmp
systemctl start ntpdate.service
#添加参数
echo </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">* soft nofile 65536</span><span style="color: rgba(128, 0, 0, 1)">"</span> >> /etc/security/<span style="color: rgba(0, 0, 0, 1)">limits.conf
echo </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">* hard nofile 65536</span><span style="color: rgba(128, 0, 0, 1)">"</span> >> /etc/security/<span style="color: rgba(0, 0, 0, 1)">limits.conf
echo </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">* soft nproc 65536</span><span style="color: rgba(128, 0, 0, 1)">"</span>>> /etc/security/<span style="color: rgba(0, 0, 0, 1)">limits.conf
echo </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">* hard nproc 65536</span><span style="color: rgba(128, 0, 0, 1)">"</span>>> /etc/security/<span style="color: rgba(0, 0, 0, 1)">limits.conf
echo </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">* softmemlockunlimited</span><span style="color: rgba(128, 0, 0, 1)">"</span>>> /etc/security/<span style="color: rgba(0, 0, 0, 1)">limits.conf
echo </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">* hard memlockunlimited</span><span style="color: rgba(128, 0, 0, 1)">"</span>>> /etc/security/<span style="color: rgba(0, 0, 0, 1)">limits.conf
#添加kubernetes的epel源
echo </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)"></span>
name=<span style="color: rgba(0, 0, 0, 1)">Kubernetes
baseurl</span>=https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/</span>
enabled=<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
gpgcheck</span>=<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
repo_gpgcheck</span>=<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
gpgkey</span>=https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg </span><span style="color: rgba(0, 128, 0, 1); text-decoration: underline">https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg</span><span style="color: rgba(0, 128, 0, 1)">' > /etc/yum.repos.d/kubernetes.repo</span>
<span style="color: rgba(0, 0, 0, 1)">#下载
sudo yum</span>-config-<span style="color: rgba(0, 0, 0, 1)">manager \
</span>--add-<span style="color: rgba(0, 0, 0, 1)">repo \
https:</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo</span>
<span style="color: rgba(0, 0, 0, 1)">yum makecache fast
#### 第四部分,开始安装 ####
yum </span>-y install docker-<span style="color: rgba(0, 0, 0, 1)">ce
yum install </span>--enablerepo=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubernetes</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> $kubelet $kubeadm$kubectl
systemctl enable kubelet.service </span>&&<span style="color: rgba(0, 0, 0, 1)"> systemctl start kubelet.service
systemctl start docker.service </span>&&<span style="color: rgba(0, 0, 0, 1)">systemctl enable docker.service
#安装tab快捷键
yum </span>-yinstall bash-completion && source /usr/share/bash-completion/bash_completion && source <(kubectl completion bash) && echo <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">source <(kubectl completion bash)</span><span style="color: rgba(128, 0, 0, 1)">"</span> >> ~/<span style="color: rgba(0, 0, 0, 1)">.bashrc
#创建集群
kubeadm init </span>--apiserver-advertise-address $node01 --kubernetes-version $version --pod-network-cidr=<span style="color: rgba(128, 0, 128, 1)">10.244</span>.<span style="color: rgba(128, 0, 128, 1)">0.0</span>/<span style="color: rgba(128, 0, 128, 1)">16</span> >> $key<span style="color: rgba(128, 0, 128, 1)">2</span>>&<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
export KUBECONFIG</span>=/etc/kubernetes/<span style="color: rgba(0, 0, 0, 1)">admin.conf<br>#kubectl 配置文件
mkdir </span>-p $HOME/<span style="color: rgba(0, 0, 0, 1)">.kube
sudo cp </span>-i /etc/kubernetes/admin.conf $HOME/.kube/<span style="color: rgba(0, 0, 0, 1)">config
sudo chown $(id </span>-u):$(id -g) $HOME/.kube/<span style="color: rgba(0, 0, 0, 1)">config
docker pull quay.io</span>/coreos/flannel:v0.<span style="color: rgba(128, 0, 128, 1)">12.0</span>-<span style="color: rgba(0, 0, 0, 1)">amd64<br>#安装flannel网络,节点之前通讯
kubectl apply </span>-<span style="color: rgba(0, 0, 0, 1)">f $flannel
echo</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">请手动查看$key文件的密钥将其他节点接入集群</span><span style="color: rgba(128, 0, 0, 1)">'</span></pre>
</div>
<p> </p>
<p>PS:如果v1.18版本,可以指定</p>
<pre>--image-repository registry.aliyuncs.com/google_containers </pre>
<p>如果报错的话,就去掉这个参数吧。</p>
<p>错误内容比如:</p>
<blockquote>
<p>: failed to pull image registry.aliyuncs.com/google_containers/coredns/coredns:v1.8.0: output: Error response from daemon: pull access denied for registry.aliyuncs.com/google_containers/coredns/coredns, repository does not exist or may require ‘docker login’: denied: requested access to the resource is denied</p>
</blockquote>
<p> </p>
<p> </p>
<h3>附录代码二:<strong>kube-flannel.yml</strong></h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">##############
##flannel网络##
##############
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: policy</span>/<span style="color: rgba(0, 0, 0, 1)">v1beta1
kind: PodSecurityPolicy
metadata:
name: psp.flannel.unprivileged
annotations:
seccomp.security.alpha.kubernetes.io</span>/allowedProfileNames: docker/<span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)">
seccomp.security.alpha.kubernetes.io</span>/defaultProfileName: docker/<span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)">
apparmor.security.beta.kubernetes.io</span>/allowedProfileNames: runtime/<span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)">
apparmor.security.beta.kubernetes.io</span>/defaultProfileName: runtime/<span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)">
spec:
privileged: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">
volumes:
</span>-<span style="color: rgba(0, 0, 0, 1)"> configMap
</span>-<span style="color: rgba(0, 0, 0, 1)"> secret
</span>-<span style="color: rgba(0, 0, 0, 1)"> emptyDir
</span>-<span style="color: rgba(0, 0, 0, 1)"> hostPath
allowedHostPaths:
</span>- pathPrefix: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/etc/cni/net.d</span><span style="color: rgba(128, 0, 0, 1)">"</span>
- pathPrefix: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/etc/kube-flannel</span><span style="color: rgba(128, 0, 0, 1)">"</span>
- pathPrefix: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/run/flannel</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
readOnlyRootFilesystem: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">
# Users and groups
runAsUser:
rule: RunAsAny
supplementalGroups:
rule: RunAsAny
fsGroup:
rule: RunAsAny
# Privilege Escalation
allowPrivilegeEscalation: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">
defaultAllowPrivilegeEscalation: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">
# Capabilities
allowedCapabilities: [</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">NET_ADMIN</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">]
defaultAddCapabilities: []
requiredDropCapabilities: []
# Host namespaces
hostPID: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">
hostIPC: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">
hostNetwork: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
hostPorts:
</span>- min: <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
max: </span><span style="color: rgba(128, 0, 128, 1)">65535</span><span style="color: rgba(0, 0, 0, 1)">
# SELinux
seLinux:
# SELinux </span><span style="color: rgba(0, 0, 255, 1)">is</span> unused <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> CaaSP
rule: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">RunAsAny</span><span style="color: rgba(128, 0, 0, 1)">'</span>
---<span style="color: rgba(0, 0, 0, 1)">
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io</span>/<span style="color: rgba(0, 0, 0, 1)">v1beta1
metadata:
name: flannel
rules:
</span>- apiGroups: [<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">extensions</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">]
resources: [</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">podsecuritypolicies</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">]
verbs: [</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">use</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">]
resourceNames: [</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">psp.flannel.unprivileged</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">]
</span>-<span style="color: rgba(0, 0, 0, 1)"> apiGroups:
</span>- <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
resources:
</span>-<span style="color: rgba(0, 0, 0, 1)"> pods
verbs:
</span>- <span style="color: rgba(0, 0, 255, 1)">get</span>
-<span style="color: rgba(0, 0, 0, 1)"> apiGroups:
</span>- <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
resources:
</span>-<span style="color: rgba(0, 0, 0, 1)"> nodes
verbs:
</span>-<span style="color: rgba(0, 0, 0, 1)"> list
</span>-<span style="color: rgba(0, 0, 0, 1)"> watch
</span>-<span style="color: rgba(0, 0, 0, 1)"> apiGroups:
</span>- <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
resources:
</span>- nodes/<span style="color: rgba(0, 0, 0, 1)">status
verbs:
</span>-<span style="color: rgba(0, 0, 0, 1)"> patch
</span>---<span style="color: rgba(0, 0, 0, 1)">
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io</span>/<span style="color: rgba(0, 0, 0, 1)">v1beta1
metadata:
name: flannel
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: flannel
subjects:
</span>-<span style="color: rgba(0, 0, 0, 1)"> kind: ServiceAccount
name: flannel
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kube-<span style="color: rgba(0, 0, 0, 1)">system
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: v1
kind: ServiceAccount
metadata:
name: flannel
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kube-<span style="color: rgba(0, 0, 0, 1)">system
</span>---<span style="color: rgba(0, 0, 0, 1)">
kind: ConfigMap
apiVersion: v1
metadata:
name: kube</span>-flannel-<span style="color: rgba(0, 0, 0, 1)">cfg
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kube-<span style="color: rgba(0, 0, 0, 1)">system
labels:
tier: node
app: flannel
data:
cni</span>-conf.json: |<span style="color: rgba(0, 0, 0, 1)">
{
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cbr0</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cniVersion</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">0.3.1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">plugins</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">: [
{
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">type</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">flannel</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">delegate</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">: {
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hairpinMode</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">isDefaultGateway</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
}
},
{
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">type</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">portmap</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">capabilities</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">: {
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">portMappings</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
}
}
]
}
net</span>-conf.json: |<span style="color: rgba(0, 0, 0, 1)">
{
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Network</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">10.244.0.0/16</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Backend</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">: {
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Type</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">vxlan</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
}
}
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: apps</span>/<span style="color: rgba(0, 0, 0, 1)">v1
kind: DaemonSet
metadata:
name: kube</span>-flannel-ds-<span style="color: rgba(0, 0, 0, 1)">amd64
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kube-<span style="color: rgba(0, 0, 0, 1)">system
labels:
tier: node
app: flannel
spec:
selector:
matchLabels:
app: flannel
template:
metadata:
labels:
tier: node
app: flannel
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
</span>-<span style="color: rgba(0, 0, 0, 1)"> matchExpressions:
</span>- key: kubernetes.io/<span style="color: rgba(0, 0, 0, 1)">os
</span><span style="color: rgba(0, 0, 255, 1)">operator</span><span style="color: rgba(0, 0, 0, 1)">: In
values:
</span>-<span style="color: rgba(0, 0, 0, 1)"> linux
</span>- key: kubernetes.io/<span style="color: rgba(0, 0, 0, 1)">arch
</span><span style="color: rgba(0, 0, 255, 1)">operator</span><span style="color: rgba(0, 0, 0, 1)">: In
values:
</span>-<span style="color: rgba(0, 0, 0, 1)"> amd64
hostNetwork: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
tolerations:
</span>- <span style="color: rgba(0, 0, 255, 1)">operator</span><span style="color: rgba(0, 0, 0, 1)">: Exists
effect: NoSchedule
serviceAccountName: flannel
initContainers:
</span>- name: install-<span style="color: rgba(0, 0, 0, 1)">cni
image: quay.io</span>/coreos/flannel:v0.<span style="color: rgba(128, 0, 128, 1)">12.0</span>-<span style="color: rgba(0, 0, 0, 1)">amd64
command:
</span>-<span style="color: rgba(0, 0, 0, 1)"> cp
args:
</span>- -<span style="color: rgba(0, 0, 0, 1)">f
</span>- /etc/kube-flannel/cni-<span style="color: rgba(0, 0, 0, 1)">conf.json
</span>- /etc/cni/net.d/<span style="color: rgba(128, 0, 128, 1)">10</span>-<span style="color: rgba(0, 0, 0, 1)">flannel.conflist
volumeMounts:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: cni
mountPath: </span>/etc/cni/<span style="color: rgba(0, 0, 0, 1)">net.d
</span>- name: flannel-<span style="color: rgba(0, 0, 0, 1)">cfg
mountPath: </span>/etc/kube-flannel/<span style="color: rgba(0, 0, 0, 1)">
containers:
</span>- name: kube-<span style="color: rgba(0, 0, 0, 1)">flannel
image: quay.io</span>/coreos/flannel:v0.<span style="color: rgba(128, 0, 128, 1)">12.0</span>-<span style="color: rgba(0, 0, 0, 1)">amd64
command:
</span>- /opt/bin/<span style="color: rgba(0, 0, 0, 1)">flanneld
args:
</span>- --ip-<span style="color: rgba(0, 0, 0, 1)">masq
</span>- --kube-subnet-<span style="color: rgba(0, 0, 0, 1)">mgr
resources:
requests:
cpu: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">100m</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
memory: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">50Mi</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
limits:
cpu: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">100m</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
memory: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">50Mi</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
securityContext:
privileged: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">
capabilities:
add: [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">NET_ADMIN</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
env:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.</span><span style="color: rgba(0, 0, 255, 1)">namespace</span><span style="color: rgba(0, 0, 0, 1)">
volumeMounts:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: run
mountPath: </span>/run/<span style="color: rgba(0, 0, 0, 1)">flannel
</span>- name: flannel-<span style="color: rgba(0, 0, 0, 1)">cfg
mountPath: </span>/etc/kube-flannel/<span style="color: rgba(0, 0, 0, 1)">
volumes:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: run
hostPath:
path: </span>/run/<span style="color: rgba(0, 0, 0, 1)">flannel
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: cni
hostPath:
path: </span>/etc/cni/<span style="color: rgba(0, 0, 0, 1)">net.d
</span>- name: flannel-<span style="color: rgba(0, 0, 0, 1)">cfg
configMap:
name: kube</span>-flannel-<span style="color: rgba(0, 0, 0, 1)">cfg
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: apps</span>/<span style="color: rgba(0, 0, 0, 1)">v1
kind: DaemonSet
metadata:
name: kube</span>-flannel-ds-<span style="color: rgba(0, 0, 0, 1)">arm64
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kube-<span style="color: rgba(0, 0, 0, 1)">system
labels:
tier: node
app: flannel
spec:
selector:
matchLabels:
app: flannel
template:
metadata:
labels:
tier: node
app: flannel
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
</span>-<span style="color: rgba(0, 0, 0, 1)"> matchExpressions:
</span>- key: kubernetes.io/<span style="color: rgba(0, 0, 0, 1)">os
</span><span style="color: rgba(0, 0, 255, 1)">operator</span><span style="color: rgba(0, 0, 0, 1)">: In
values:
</span>-<span style="color: rgba(0, 0, 0, 1)"> linux
</span>- key: kubernetes.io/<span style="color: rgba(0, 0, 0, 1)">arch
</span><span style="color: rgba(0, 0, 255, 1)">operator</span><span style="color: rgba(0, 0, 0, 1)">: In
values:
</span>-<span style="color: rgba(0, 0, 0, 1)"> arm64
hostNetwork: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
tolerations:
</span>- <span style="color: rgba(0, 0, 255, 1)">operator</span><span style="color: rgba(0, 0, 0, 1)">: Exists
effect: NoSchedule
serviceAccountName: flannel
initContainers:
</span>- name: install-<span style="color: rgba(0, 0, 0, 1)">cni
image: quay.io</span>/coreos/flannel:v0.<span style="color: rgba(128, 0, 128, 1)">12.0</span>-<span style="color: rgba(0, 0, 0, 1)">arm64
command:
</span>-<span style="color: rgba(0, 0, 0, 1)"> cp
args:
</span>- -<span style="color: rgba(0, 0, 0, 1)">f
</span>- /etc/kube-flannel/cni-<span style="color: rgba(0, 0, 0, 1)">conf.json
</span>- /etc/cni/net.d/<span style="color: rgba(128, 0, 128, 1)">10</span>-<span style="color: rgba(0, 0, 0, 1)">flannel.conflist
volumeMounts:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: cni
mountPath: </span>/etc/cni/<span style="color: rgba(0, 0, 0, 1)">net.d
</span>- name: flannel-<span style="color: rgba(0, 0, 0, 1)">cfg
mountPath: </span>/etc/kube-flannel/<span style="color: rgba(0, 0, 0, 1)">
containers:
</span>- name: kube-<span style="color: rgba(0, 0, 0, 1)">flannel
image: quay.io</span>/coreos/flannel:v0.<span style="color: rgba(128, 0, 128, 1)">12.0</span>-<span style="color: rgba(0, 0, 0, 1)">arm64
command:
</span>- /opt/bin/<span style="color: rgba(0, 0, 0, 1)">flanneld
args:
</span>- --ip-<span style="color: rgba(0, 0, 0, 1)">masq
</span>- --kube-subnet-<span style="color: rgba(0, 0, 0, 1)">mgr
resources:
requests:
cpu: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">100m</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
memory: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">50Mi</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
limits:
cpu: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">100m</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
memory: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">50Mi</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
securityContext:
privileged: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">
capabilities:
add: [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">NET_ADMIN</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
env:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.</span><span style="color: rgba(0, 0, 255, 1)">namespace</span><span style="color: rgba(0, 0, 0, 1)">
volumeMounts:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: run
mountPath: </span>/run/<span style="color: rgba(0, 0, 0, 1)">flannel
</span>- name: flannel-<span style="color: rgba(0, 0, 0, 1)">cfg
mountPath: </span>/etc/kube-flannel/<span style="color: rgba(0, 0, 0, 1)">
volumes:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: run
hostPath:
path: </span>/run/<span style="color: rgba(0, 0, 0, 1)">flannel
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: cni
hostPath:
path: </span>/etc/cni/<span style="color: rgba(0, 0, 0, 1)">net.d
</span>- name: flannel-<span style="color: rgba(0, 0, 0, 1)">cfg
configMap:
name: kube</span>-flannel-<span style="color: rgba(0, 0, 0, 1)">cfg
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: apps</span>/<span style="color: rgba(0, 0, 0, 1)">v1
kind: DaemonSet
metadata:
name: kube</span>-flannel-ds-<span style="color: rgba(0, 0, 0, 1)">arm
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kube-<span style="color: rgba(0, 0, 0, 1)">system
labels:
tier: node
app: flannel
spec:
selector:
matchLabels:
app: flannel
template:
metadata:
labels:
tier: node
app: flannel
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
</span>-<span style="color: rgba(0, 0, 0, 1)"> matchExpressions:
</span>- key: kubernetes.io/<span style="color: rgba(0, 0, 0, 1)">os
</span><span style="color: rgba(0, 0, 255, 1)">operator</span><span style="color: rgba(0, 0, 0, 1)">: In
values:
</span>-<span style="color: rgba(0, 0, 0, 1)"> linux
</span>- key: kubernetes.io/<span style="color: rgba(0, 0, 0, 1)">arch
</span><span style="color: rgba(0, 0, 255, 1)">operator</span><span style="color: rgba(0, 0, 0, 1)">: In
values:
</span>-<span style="color: rgba(0, 0, 0, 1)"> arm
hostNetwork: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
tolerations:
</span>- <span style="color: rgba(0, 0, 255, 1)">operator</span><span style="color: rgba(0, 0, 0, 1)">: Exists
effect: NoSchedule
serviceAccountName: flannel
initContainers:
</span>- name: install-<span style="color: rgba(0, 0, 0, 1)">cni
image: quay.io</span>/coreos/flannel:v0.<span style="color: rgba(128, 0, 128, 1)">12.0</span>-<span style="color: rgba(0, 0, 0, 1)">arm
command:
</span>-<span style="color: rgba(0, 0, 0, 1)"> cp
args:
</span>- -<span style="color: rgba(0, 0, 0, 1)">f
</span>- /etc/kube-flannel/cni-<span style="color: rgba(0, 0, 0, 1)">conf.json
</span>- /etc/cni/net.d/<span style="color: rgba(128, 0, 128, 1)">10</span>-<span style="color: rgba(0, 0, 0, 1)">flannel.conflist
volumeMounts:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: cni
mountPath: </span>/etc/cni/<span style="color: rgba(0, 0, 0, 1)">net.d
</span>- name: flannel-<span style="color: rgba(0, 0, 0, 1)">cfg
mountPath: </span>/etc/kube-flannel/<span style="color: rgba(0, 0, 0, 1)">
containers:
</span>- name: kube-<span style="color: rgba(0, 0, 0, 1)">flannel
image: quay.io</span>/coreos/flannel:v0.<span style="color: rgba(128, 0, 128, 1)">12.0</span>-<span style="color: rgba(0, 0, 0, 1)">arm
command:
</span>- /opt/bin/<span style="color: rgba(0, 0, 0, 1)">flanneld
args:
</span>- --ip-<span style="color: rgba(0, 0, 0, 1)">masq
</span>- --kube-subnet-<span style="color: rgba(0, 0, 0, 1)">mgr
resources:
requests:
cpu: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">100m</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
memory: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">50Mi</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
limits:
cpu: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">100m</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
memory: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">50Mi</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
securityContext:
privileged: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">
capabilities:
add: [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">NET_ADMIN</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
env:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.</span><span style="color: rgba(0, 0, 255, 1)">namespace</span><span style="color: rgba(0, 0, 0, 1)">
volumeMounts:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: run
mountPath: </span>/run/<span style="color: rgba(0, 0, 0, 1)">flannel
</span>- name: flannel-<span style="color: rgba(0, 0, 0, 1)">cfg
mountPath: </span>/etc/kube-flannel/<span style="color: rgba(0, 0, 0, 1)">
volumes:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: run
hostPath:
path: </span>/run/<span style="color: rgba(0, 0, 0, 1)">flannel
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: cni
hostPath:
path: </span>/etc/cni/<span style="color: rgba(0, 0, 0, 1)">net.d
</span>- name: flannel-<span style="color: rgba(0, 0, 0, 1)">cfg
configMap:
name: kube</span>-flannel-<span style="color: rgba(0, 0, 0, 1)">cfg
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: apps</span>/<span style="color: rgba(0, 0, 0, 1)">v1
kind: DaemonSet
metadata:
name: kube</span>-flannel-ds-<span style="color: rgba(0, 0, 0, 1)">ppc64le
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kube-<span style="color: rgba(0, 0, 0, 1)">system
labels:
tier: node
app: flannel
spec:
selector:
matchLabels:
app: flannel
template:
metadata:
labels:
tier: node
app: flannel
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
</span>-<span style="color: rgba(0, 0, 0, 1)"> matchExpressions:
</span>- key: kubernetes.io/<span style="color: rgba(0, 0, 0, 1)">os
</span><span style="color: rgba(0, 0, 255, 1)">operator</span><span style="color: rgba(0, 0, 0, 1)">: In
values:
</span>-<span style="color: rgba(0, 0, 0, 1)"> linux
</span>- key: kubernetes.io/<span style="color: rgba(0, 0, 0, 1)">arch
</span><span style="color: rgba(0, 0, 255, 1)">operator</span><span style="color: rgba(0, 0, 0, 1)">: In
values:
</span>-<span style="color: rgba(0, 0, 0, 1)"> ppc64le
hostNetwork: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
tolerations:
</span>- <span style="color: rgba(0, 0, 255, 1)">operator</span><span style="color: rgba(0, 0, 0, 1)">: Exists
effect: NoSchedule
serviceAccountName: flannel
initContainers:
</span>- name: install-<span style="color: rgba(0, 0, 0, 1)">cni
image: quay.io</span>/coreos/flannel:v0.<span style="color: rgba(128, 0, 128, 1)">12.0</span>-<span style="color: rgba(0, 0, 0, 1)">ppc64le
command:
</span>-<span style="color: rgba(0, 0, 0, 1)"> cp
args:
</span>- -<span style="color: rgba(0, 0, 0, 1)">f
</span>- /etc/kube-flannel/cni-<span style="color: rgba(0, 0, 0, 1)">conf.json
</span>- /etc/cni/net.d/<span style="color: rgba(128, 0, 128, 1)">10</span>-<span style="color: rgba(0, 0, 0, 1)">flannel.conflist
volumeMounts:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: cni
mountPath: </span>/etc/cni/<span style="color: rgba(0, 0, 0, 1)">net.d
</span>- name: flannel-<span style="color: rgba(0, 0, 0, 1)">cfg
mountPath: </span>/etc/kube-flannel/<span style="color: rgba(0, 0, 0, 1)">
containers:
</span>- name: kube-<span style="color: rgba(0, 0, 0, 1)">flannel
image: quay.io</span>/coreos/flannel:v0.<span style="color: rgba(128, 0, 128, 1)">12.0</span>-<span style="color: rgba(0, 0, 0, 1)">ppc64le
command:
</span>- /opt/bin/<span style="color: rgba(0, 0, 0, 1)">flanneld
args:
</span>- --ip-<span style="color: rgba(0, 0, 0, 1)">masq
</span>- --kube-subnet-<span style="color: rgba(0, 0, 0, 1)">mgr
resources:
requests:
cpu: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">100m</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
memory: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">50Mi</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
limits:
cpu: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">100m</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
memory: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">50Mi</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
securityContext:
privileged: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">
capabilities:
add: [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">NET_ADMIN</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
env:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.</span><span style="color: rgba(0, 0, 255, 1)">namespace</span><span style="color: rgba(0, 0, 0, 1)">
volumeMounts:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: run
mountPath: </span>/run/<span style="color: rgba(0, 0, 0, 1)">flannel
</span>- name: flannel-<span style="color: rgba(0, 0, 0, 1)">cfg
mountPath: </span>/etc/kube-flannel/<span style="color: rgba(0, 0, 0, 1)">
volumes:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: run
hostPath:
path: </span>/run/<span style="color: rgba(0, 0, 0, 1)">flannel
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: cni
hostPath:
path: </span>/etc/cni/<span style="color: rgba(0, 0, 0, 1)">net.d
</span>- name: flannel-<span style="color: rgba(0, 0, 0, 1)">cfg
configMap:
name: kube</span>-flannel-<span style="color: rgba(0, 0, 0, 1)">cfg
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: apps</span>/<span style="color: rgba(0, 0, 0, 1)">v1
kind: DaemonSet
metadata:
name: kube</span>-flannel-ds-<span style="color: rgba(0, 0, 0, 1)">s390x
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kube-<span style="color: rgba(0, 0, 0, 1)">system
labels:
tier: node
app: flannel
spec:
selector:
matchLabels:
app: flannel
template:
metadata:
labels:
tier: node
app: flannel
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
</span>-<span style="color: rgba(0, 0, 0, 1)"> matchExpressions:
</span>- key: kubernetes.io/<span style="color: rgba(0, 0, 0, 1)">os
</span><span style="color: rgba(0, 0, 255, 1)">operator</span><span style="color: rgba(0, 0, 0, 1)">: In
values:
</span>-<span style="color: rgba(0, 0, 0, 1)"> linux
</span>- key: kubernetes.io/<span style="color: rgba(0, 0, 0, 1)">arch
</span><span style="color: rgba(0, 0, 255, 1)">operator</span><span style="color: rgba(0, 0, 0, 1)">: In
values:
</span>-<span style="color: rgba(0, 0, 0, 1)"> s390x
hostNetwork: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
tolerations:
</span>- <span style="color: rgba(0, 0, 255, 1)">operator</span><span style="color: rgba(0, 0, 0, 1)">: Exists
effect: NoSchedule
serviceAccountName: flannel
initContainers:
</span>- name: install-<span style="color: rgba(0, 0, 0, 1)">cni
image: quay.io</span>/coreos/flannel:v0.<span style="color: rgba(128, 0, 128, 1)">12.0</span>-<span style="color: rgba(0, 0, 0, 1)">s390x
command:
</span>-<span style="color: rgba(0, 0, 0, 1)"> cp
args:
</span>- -<span style="color: rgba(0, 0, 0, 1)">f
</span>- /etc/kube-flannel/cni-<span style="color: rgba(0, 0, 0, 1)">conf.json
</span>- /etc/cni/net.d/<span style="color: rgba(128, 0, 128, 1)">10</span>-<span style="color: rgba(0, 0, 0, 1)">flannel.conflist
volumeMounts:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: cni
mountPath: </span>/etc/cni/<span style="color: rgba(0, 0, 0, 1)">net.d
</span>- name: flannel-<span style="color: rgba(0, 0, 0, 1)">cfg
mountPath: </span>/etc/kube-flannel/<span style="color: rgba(0, 0, 0, 1)">
containers:
</span>- name: kube-<span style="color: rgba(0, 0, 0, 1)">flannel
image: quay.io</span>/coreos/flannel:v0.<span style="color: rgba(128, 0, 128, 1)">12.0</span>-<span style="color: rgba(0, 0, 0, 1)">s390x
command:
</span>- /opt/bin/<span style="color: rgba(0, 0, 0, 1)">flanneld
args:
</span>- --ip-<span style="color: rgba(0, 0, 0, 1)">masq
</span>- --kube-subnet-<span style="color: rgba(0, 0, 0, 1)">mgr
resources:
requests:
cpu: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">100m</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
memory: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">50Mi</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
limits:
cpu: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">100m</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
memory: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">50Mi</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
securityContext:
privileged: </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">
capabilities:
add: [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">NET_ADMIN</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
env:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.</span><span style="color: rgba(0, 0, 255, 1)">namespace</span><span style="color: rgba(0, 0, 0, 1)">
volumeMounts:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: run
mountPath: </span>/run/<span style="color: rgba(0, 0, 0, 1)">flannel
</span>- name: flannel-<span style="color: rgba(0, 0, 0, 1)">cfg
mountPath: </span>/etc/kube-flannel/<span style="color: rgba(0, 0, 0, 1)">
volumes:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: run
hostPath:
path: </span>/run/<span style="color: rgba(0, 0, 0, 1)">flannel
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: cni
hostPath:
path: </span>/etc/cni/<span style="color: rgba(0, 0, 0, 1)">net.d
</span>- name: flannel-<span style="color: rgba(0, 0, 0, 1)">cfg
configMap:
name: kube</span>-flannel-cfg</pre>
</div>
<p> </p>
<h3>附录代码三:<strong>key.txt</strong></h3>
<div class="cnblogs_code">
<pre>W0526 <span style="color: rgba(128, 0, 128, 1)">16</span>:<span style="color: rgba(128, 0, 128, 1)">17</span>:<span style="color: rgba(128, 0, 128, 1)">20.680490</span> <span style="color: rgba(128, 0, 128, 1)">13760</span> configset.go:<span style="color: rgba(128, 0, 128, 1)">202</span>] WARNING: kubeadm cannot validate component configs <span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> API groups
Using Kubernetes version: v1.21</span><span style="color: rgba(128, 0, 128, 1)">.0</span><span style="color: rgba(0, 0, 0, 1)">
Running pre</span>-<span style="color: rgba(0, 0, 0, 1)">flight checks
: detected </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cgroupfs</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(0, 0, 255, 1)">as</span> the Docker cgroup driver. The recommended driver <span style="color: rgba(0, 0, 255, 1)">is</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">systemd</span><span style="color: rgba(128, 0, 0, 1)">"</span>. Please follow the guide at https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">kubernetes.io/docs/setup/cri/</span>
Pulling images required <span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> setting up a Kubernetes cluster
This might take a minute or two, depending on the speed of your internet connection
You can also perform </span><span style="color: rgba(0, 0, 255, 1)">this</span> action <span style="color: rgba(0, 0, 255, 1)">in</span> beforehand <span style="color: rgba(0, 0, 255, 1)">using</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">kubeadm config images pull</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
Writing kubelet environment file with flags to file <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/var/lib/kubelet/kubeadm-flags.env</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Writing kubelet configuration to file <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/var/lib/kubelet/config.yaml</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Starting the kubelet
Using certificateDir folder </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/etc/kubernetes/pki</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ca</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">apiserver</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
apiserver serving cert </span><span style="color: rgba(0, 0, 255, 1)">is</span> signed <span style="color: rgba(0, 0, 255, 1)">for</span> DNS names and IPs [<span style="color: rgba(128, 0, 128, 1)">10.96</span>.<span style="color: rgba(128, 0, 128, 1)">0.1</span> <span style="color: rgba(128, 0, 128, 1)">172.17</span>.<span style="color: rgba(128, 0, 128, 1)">10.4</span><span style="color: rgba(0, 0, 0, 1)">]
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">apiserver-kubelet-client</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">front-proxy-ca</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">front-proxy-client</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">etcd/ca</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">etcd/server</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
etcd</span>/server serving cert <span style="color: rgba(0, 0, 255, 1)">is</span> signed <span style="color: rgba(0, 0, 255, 1)">for</span> DNS names and IPs [<span style="color: rgba(128, 0, 128, 1)">172.17</span>.<span style="color: rgba(128, 0, 128, 1)">10.4</span> <span style="color: rgba(128, 0, 128, 1)">127.0</span>.<span style="color: rgba(128, 0, 128, 1)">0.1</span> ::<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">]
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">etcd/peer</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
etcd</span>/peer serving cert <span style="color: rgba(0, 0, 255, 1)">is</span> signed <span style="color: rgba(0, 0, 255, 1)">for</span> DNS names and IPs [<span style="color: rgba(128, 0, 128, 1)">172.17</span>.<span style="color: rgba(128, 0, 128, 1)">10.4</span> <span style="color: rgba(128, 0, 128, 1)">127.0</span>.<span style="color: rgba(128, 0, 128, 1)">0.1</span> ::<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">]
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">etcd/healthcheck-client</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">apiserver-etcd-client</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> certificate and key
Generating </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">sa</span><span style="color: rgba(128, 0, 0, 1)">"</span> key and <span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> key
Using kubeconfig folder </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/etc/kubernetes</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Writing </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">admin.conf</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> kubeconfig file
Writing </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubelet.conf</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> kubeconfig file
Writing </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">controller-manager.conf</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> kubeconfig file
Writing </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">scheduler.conf</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> kubeconfig file
Using manifest folder <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/etc/kubernetes/manifests</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Creating <span style="color: rgba(0, 0, 255, 1)">static</span> Pod manifest <span style="color: rgba(0, 0, 255, 1)">for</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kube-apiserver</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Creating <span style="color: rgba(0, 0, 255, 1)">static</span> Pod manifest <span style="color: rgba(0, 0, 255, 1)">for</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kube-controller-manager</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
W0526 </span><span style="color: rgba(128, 0, 128, 1)">16</span>:<span style="color: rgba(128, 0, 128, 1)">18</span>:<span style="color: rgba(128, 0, 128, 1)">02.560249</span> <span style="color: rgba(128, 0, 128, 1)">13760</span> manifests.go:<span style="color: rgba(128, 0, 128, 1)">225</span>] the <span style="color: rgba(0, 0, 255, 1)">default</span> kube-apiserver authorization-mode <span style="color: rgba(0, 0, 255, 1)">is</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Node,RBAC</span><span style="color: rgba(128, 0, 0, 1)">"</span>; <span style="color: rgba(0, 0, 255, 1)">using</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Node,RBAC</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Creating <span style="color: rgba(0, 0, 255, 1)">static</span> Pod manifest <span style="color: rgba(0, 0, 255, 1)">for</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kube-scheduler</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
W0526 </span><span style="color: rgba(128, 0, 128, 1)">16</span>:<span style="color: rgba(128, 0, 128, 1)">18</span>:<span style="color: rgba(128, 0, 128, 1)">02.561130</span> <span style="color: rgba(128, 0, 128, 1)">13760</span> manifests.go:<span style="color: rgba(128, 0, 128, 1)">225</span>] the <span style="color: rgba(0, 0, 255, 1)">default</span> kube-apiserver authorization-mode <span style="color: rgba(0, 0, 255, 1)">is</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Node,RBAC</span><span style="color: rgba(128, 0, 0, 1)">"</span>; <span style="color: rgba(0, 0, 255, 1)">using</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Node,RBAC</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Creating </span><span style="color: rgba(0, 0, 255, 1)">static</span> Pod manifest <span style="color: rgba(0, 0, 255, 1)">for</span> local etcd <span style="color: rgba(0, 0, 255, 1)">in</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/etc/kubernetes/manifests</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Waiting <span style="color: rgba(0, 0, 255, 1)">for</span> the kubelet to boot up the control plane <span style="color: rgba(0, 0, 255, 1)">as</span> <span style="color: rgba(0, 0, 255, 1)">static</span> Pods <span style="color: rgba(0, 0, 255, 1)">from</span> directory <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/etc/kubernetes/manifests</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">. This can take up to 4m0s
All control plane components are healthy after </span><span style="color: rgba(128, 0, 128, 1)">26.504466</span><span style="color: rgba(0, 0, 0, 1)"> seconds
Storing the configuration used <span style="color: rgba(0, 0, 255, 1)">in</span> ConfigMap <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubeadm-config</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(0, 0, 255, 1)">in</span> the <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kube-system</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> Namespace
Creating a ConfigMap </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubelet-config-1.21</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(0, 0, 255, 1)">in</span> <span style="color: rgba(0, 0, 255, 1)">namespace</span> kube-system with the configuration <span style="color: rgba(0, 0, 255, 1)">for</span> the kubelets <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> the cluster
Skipping phase. Please see --upload-<span style="color: rgba(0, 0, 0, 1)">certs
Marking the node node01 <span style="color: rgba(0, 0, 255, 1)">as</span> control-plane by adding the label <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">node-role.kubernetes.io/master=''</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
Marking the node node01 <span style="color: rgba(0, 0, 255, 1)">as</span> control-plane by adding the taints
Using token: q3uu1o.4rdfkcyzxjhawvk1
Configuring bootstrap tokens, cluster-<span style="color: rgba(0, 0, 0, 1)">info ConfigMap, RBAC Roles
configured RBAC rules to allow Node Bootstrap tokens to <span style="color: rgba(0, 0, 255, 1)">get</span><span style="color: rgba(0, 0, 0, 1)"> nodes
configured RBAC rules to allow Node Bootstrap tokens to post CSRs <span style="color: rgba(0, 0, 255, 1)">in</span> order <span style="color: rgba(0, 0, 255, 1)">for</span> nodes to <span style="color: rgba(0, 0, 255, 1)">get</span> <span style="color: rgba(0, 0, 255, 1)">long</span><span style="color: rgba(0, 0, 0, 1)"> term certificate credentials
configured RBAC rules to allow the csrapprover controller automatically approve CSRs <span style="color: rgba(0, 0, 255, 1)">from</span><span style="color: rgba(0, 0, 0, 1)"> a Node Bootstrap Token
configured RBAC rules to allow certificate rotation <span style="color: rgba(0, 0, 255, 1)">for</span> all node client certificates <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> the cluster
Creating the <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cluster-info</span><span style="color: rgba(128, 0, 0, 1)">"</span> ConfigMap <span style="color: rgba(0, 0, 255, 1)">in</span> the <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kube-public</span><span style="color: rgba(128, 0, 0, 1)">"</span> <span style="color: rgba(0, 0, 255, 1)">namespace</span><span style="color: rgba(0, 0, 0, 1)">
Updating <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/etc/kubernetes/kubelet.conf</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> to point to a rotatable kubelet client certificate and key
Applied essential addon: CoreDNS
Applied essential addon: kube</span>-<span style="color: rgba(0, 0, 0, 1)">proxy
Your Kubernetes control</span>-plane has initialized successfully!<span style="color: rgba(0, 0, 0, 1)">
To start </span><span style="color: rgba(0, 0, 255, 1)">using</span> your cluster, you need to run the following <span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> a regular user:
mkdir </span>-p $HOME/<span style="color: rgba(0, 0, 0, 1)">.kube
sudo cp </span>-i /etc/kubernetes/admin.conf $HOME/.kube/<span style="color: rgba(0, 0, 0, 1)">config
sudo chown $(id </span>-u):$(id -g) $HOME/.kube/<span style="color: rgba(0, 0, 0, 1)">config
You should now deploy a pod network to the cluster.
Run </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubectl apply -f .yaml</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> with one of the options listed at:
https:</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">kubernetes.io/docs/concepts/cluster-administration/addons/</span>
<span style="color: rgba(0, 0, 0, 1)">
Then you can join any number of worker nodes by running the following on each </span><span style="color: rgba(0, 0, 255, 1)">as</span><span style="color: rgba(0, 0, 0, 1)"> root:
kubeadm join </span><span style="color: rgba(128, 0, 128, 1)">172.17</span>.<span style="color: rgba(128, 0, 128, 1)">10.4</span>:<span style="color: rgba(128, 0, 128, 1)">6443</span> --<span style="color: rgba(0, 0, 0, 1)">token q3uu1o.4rdfkcyzxjhawvk1 \
</span>--discovery-token-ca-cert-hash sha256:a755d8f56733ba8f9d1951298b200202fce7b84389954bf7a38558fa6ce2a9c9 </pre>
</div>
<pre><br><br><br><br><br><br></pre>
<h3><br>附录代码四:recommended.yaml</h3>
<p> </p>
<div class="cnblogs_code">
<pre># Copyright <span style="color: rgba(128, 0, 128, 1)">2017</span><span style="color: rgba(0, 0, 0, 1)"> The Kubernetes Authors.
#
# Licensed under the Apache License, Version </span><span style="color: rgba(128, 0, 128, 1)">2.0</span> (the <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">License</span><span style="color: rgba(128, 0, 0, 1)">"</span><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><span style="color: rgba(0, 0, 0, 1)"> compliance with 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 </span><span style="color: rgba(0, 0, 255, 1)">is</span> distributed on an <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">AS IS</span><span style="color: rgba(128, 0, 0, 1)">"</span><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.
##############
##安装dashboard##
##############
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
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kubernetes-<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
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
spec:
ports:
</span>- port: <span style="color: rgba(128, 0, 128, 1)">443</span><span style="color: rgba(0, 0, 0, 1)">
targetPort: </span><span style="color: rgba(128, 0, 128, 1)">8443</span><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
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kubernetes-<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
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
type: Opaque
data:
csrf: </span><span style="color: rgba(128, 0, 0, 1)">""</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
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kubernetes-<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
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kubernetes-<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>/<span style="color: rgba(0, 0, 0, 1)">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
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
rules:
# Allow Dashboard to </span><span style="color: rgba(0, 0, 255, 1)">get</span><span style="color: rgba(0, 0, 0, 1)">, update and delete Dashboard exclusive secrets.
</span>- apiGroups: [<span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">]
resources: [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">secrets</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
resourceNames: [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubernetes-dashboard-key-holder</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubernetes-dashboard-certs</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubernetes-dashboard-csrf</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
verbs: [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">get</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">update</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">delete</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
# Allow Dashboard to </span><span style="color: rgba(0, 0, 255, 1)">get</span> and update <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">kubernetes-dashboard-settings</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)"> config map.
</span>- apiGroups: [<span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">]
resources: [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">configmaps</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
resourceNames: [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubernetes-dashboard-settings</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
verbs: [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">get</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">update</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
# Allow Dashboard to </span><span style="color: rgba(0, 0, 255, 1)">get</span><span style="color: rgba(0, 0, 0, 1)"> metrics.
</span>- apiGroups: [<span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">]
resources: [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">services</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
resourceNames: [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">heapster</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">dashboard-metrics-scraper</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
verbs: [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">proxy</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
</span>- apiGroups: [<span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">]
resources: [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">services/proxy</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
resourceNames: [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">heapster</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">http:heapster:</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">https:heapster:</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">dashboard-metrics-scraper</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">http:dashboard-metrics-scraper</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
verbs: [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">get</span><span style="color: rgba(128, 0, 0, 1)">"</span><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>/<span style="color: rgba(0, 0, 0, 1)">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
rules:
# Allow Metrics Scraper to </span><span style="color: rgba(0, 0, 255, 1)">get</span> metrics <span style="color: rgba(0, 0, 255, 1)">from</span><span style="color: rgba(0, 0, 0, 1)"> the Metrics server
</span>- apiGroups: [<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">metrics.k8s.io</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
resources: [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pods</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">nodes</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
verbs: [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">get</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">list</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">watch</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: rbac.authorization.k8s.io</span>/<span style="color: rgba(0, 0, 0, 1)">v1
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
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kubernetes-<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
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: rbac.authorization.k8s.io</span>/<span style="color: rgba(0, 0, 0, 1)">v1
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
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
</span>---<span style="color: rgba(0, 0, 0, 1)">
kind: Deployment
apiVersion: apps</span>/<span style="color: rgba(0, 0, 0, 1)">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
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
spec:
replicas: </span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
revisionHistoryLimit: </span><span style="color: rgba(128, 0, 128, 1)">10</span><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.<span style="color: rgba(128, 0, 128, 1)">2.0</span><span style="color: rgba(0, 0, 0, 1)">
imagePullPolicy: Always
ports:
</span>- containerPort: <span style="color: rgba(128, 0, 128, 1)">8443</span><span style="color: rgba(0, 0, 0, 1)">
protocol: TCP
args:
</span>- --auto-generate-<span style="color: rgba(0, 0, 0, 1)">certificates
</span>- --<span style="color: rgba(0, 0, 255, 1)">namespace</span>=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>/<span style="color: rgba(0, 0, 0, 1)">certs
# Create on</span>-<span style="color: rgba(0, 0, 0, 1)">disk volume to store exec logs
</span>- mountPath: /<span style="color: rgba(0, 0, 0, 1)">tmp
name: tmp</span>-<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><span style="color: rgba(128, 0, 128, 1)">8443</span><span style="color: rgba(0, 0, 0, 1)">
initialDelaySeconds: </span><span style="color: rgba(128, 0, 128, 1)">30</span><span style="color: rgba(0, 0, 0, 1)">
timeoutSeconds: </span><span style="color: rgba(128, 0, 128, 1)">30</span><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><span style="color: rgba(128, 0, 128, 1)">1001</span><span style="color: rgba(0, 0, 0, 1)">
runAsGroup: </span><span style="color: rgba(128, 0, 128, 1)">2001</span><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><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubernetes.io/os</span><span style="color: rgba(128, 0, 0, 1)">"</span><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/<span style="color: rgba(0, 0, 0, 1)">master
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
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
spec:
ports:
</span>- port: <span style="color: rgba(128, 0, 128, 1)">8000</span><span style="color: rgba(0, 0, 0, 1)">
targetPort: </span><span style="color: rgba(128, 0, 128, 1)">8000</span><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>/<span style="color: rgba(0, 0, 0, 1)">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
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kubernetes-<span style="color: rgba(0, 0, 0, 1)">dashboard
spec:
replicas: </span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
revisionHistoryLimit: </span><span style="color: rgba(128, 0, 128, 1)">10</span><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: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">runtime/default</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
spec:
containers:
</span>- name: dashboard-metrics-<span style="color: rgba(0, 0, 0, 1)">scraper
image: kubernetesui</span>/metrics-scraper:v1.<span style="color: rgba(128, 0, 128, 1)">0.6</span><span style="color: rgba(0, 0, 0, 1)">
ports:
</span>- containerPort: <span style="color: rgba(128, 0, 128, 1)">8000</span><span style="color: rgba(0, 0, 0, 1)">
protocol: TCP
livenessProbe:
httpGet:
scheme: HTTP
path: </span>/<span style="color: rgba(0, 0, 0, 1)">
port: </span><span style="color: rgba(128, 0, 128, 1)">8000</span><span style="color: rgba(0, 0, 0, 1)">
initialDelaySeconds: </span><span style="color: rgba(128, 0, 128, 1)">30</span><span style="color: rgba(0, 0, 0, 1)">
timeoutSeconds: </span><span style="color: rgba(128, 0, 128, 1)">30</span><span style="color: rgba(0, 0, 0, 1)">
volumeMounts:
</span>- mountPath: /<span style="color: rgba(0, 0, 0, 1)">tmp
name: tmp</span>-<span style="color: rgba(0, 0, 0, 1)">volume
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><span style="color: rgba(128, 0, 128, 1)">1001</span><span style="color: rgba(0, 0, 0, 1)">
runAsGroup: </span><span style="color: rgba(128, 0, 128, 1)">2001</span><span style="color: rgba(0, 0, 0, 1)">
serviceAccountName: kubernetes</span>-<span style="color: rgba(0, 0, 0, 1)">dashboard
nodeSelector:
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubernetes.io/os</span><span style="color: rgba(128, 0, 0, 1)">"</span><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/<span style="color: rgba(0, 0, 0, 1)">master
effect: NoSchedule
volumes:
</span>- name: tmp-<span style="color: rgba(0, 0, 0, 1)">volume
emptyDir: {}</span></pre>
</div>
<p> </p>
<p> </p>
<p> </p>
<h3><br>附录代码五:dashboard-svc-account.yaml</h3>
<p> </p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">##############
##配置dashboard管理员账号##
##############
apiVersion: v1
kind: ServiceAccount
metadata:
name: dashboard</span>-<span style="color: rgba(0, 0, 0, 1)">admin
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kube-<span style="color: rgba(0, 0, 0, 1)">system
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: rbac.authorization.k8s.io</span>/<span style="color: rgba(0, 0, 0, 1)">v1
kind: ClusterRoleBinding
metadata:
name: dashboard</span>-<span style="color: rgba(0, 0, 0, 1)">admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster</span>-<span style="color: rgba(0, 0, 0, 1)">admin
subjects:
</span>-<span style="color: rgba(0, 0, 0, 1)"> kind: ServiceAccount
name: dashboard</span>-<span style="color: rgba(0, 0, 0, 1)">admin
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: kube-system</pre>
</div>
<p> </p>
<p> </p>
<h3>附录代码六:kubernetes_node02.sh</h3>
<p> </p>
<div class="cnblogs_code">
<pre>#!/bin/<span style="color: rgba(0, 0, 0, 1)">bash
##############
##子节点##
##############
<span style="color: rgba(0, 128, 0, 1)">#### 第一部分,环境初始化 ####</span>
#k8s版本
version</span>=v1.21<span style="color: rgba(128, 0, 128, 1)">.0</span><span style="color: rgba(0, 0, 0, 1)">
kubelet</span>=kubelet-<span style="color: rgba(128, 0, 128, 1)">1.21</span>.<span style="color: rgba(128, 0, 128, 1)">0</span>-<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">.x86_64
kubeadm</span>=kubeadm-<span style="color: rgba(128, 0, 128, 1)">1.21</span>.<span style="color: rgba(128, 0, 128, 1)">0</span>-<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">.x86_64
kubectl</span>=kubectl-<span style="color: rgba(128, 0, 128, 1)">1.21</span>.<span style="color: rgba(128, 0, 128, 1)">0</span>-<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">.x86_64
#集群加入方式
key</span>=/root/<span style="color: rgba(0, 0, 0, 1)">key.txt
#部署flannel网络
flannel</span>=/root/kube-<span style="color: rgba(0, 0, 0, 1)">flannel.yml
#安装必要依赖
yum </span>-y install vim wget git cmake make gcc gcc-c++ net-<span style="color: rgba(0, 0, 0, 1)">tools lrzsz
<span style="color: rgba(0, 128, 0, 1)">#### 第二部分,节点配置 ####</span>
#配置节点,主机解析,免密登录
node01</span>=<span style="color: rgba(128, 0, 128, 1)">172.17</span>.<span style="color: rgba(128, 0, 128, 1)">10.4</span><span style="color: rgba(0, 0, 0, 1)">
node02</span>=<span style="color: rgba(128, 0, 128, 1)">172.17</span>.<span style="color: rgba(128, 0, 128, 1)">10.7</span><span style="color: rgba(0, 0, 0, 1)">
# node03</span>=<span style="color: rgba(128, 0, 128, 1)">192.168</span>.<span style="color: rgba(128, 0, 128, 1)">1.30</span><span style="color: rgba(0, 0, 0, 1)">
hostnamectl </span><span style="color: rgba(0, 0, 255, 1)">set</span>-<span style="color: rgba(0, 0, 0, 1)">hostname node02
echo</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">172.17.10.4 node01</span>
<span style="color: rgba(128, 0, 128, 1)">172.17</span>.<span style="color: rgba(128, 0, 128, 1)">10.7</span> node02<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)"> >> /etc/hosts</span>
ssh-<span style="color: rgba(0, 0, 0, 1)">keygen
ssh</span>-copy-id-<span style="color: rgba(0, 0, 0, 1)">i $node01
ssh</span>-copy-id-<span style="color: rgba(0, 0, 0, 1)">i $node02
# ssh</span>-copy-id-<span style="color: rgba(0, 0, 0, 1)">i $node03
scp </span>/etc/hosts node02:/etc/<span style="color: rgba(0, 0, 0, 1)">hosts
# scp </span>/etc/hosts node03:/etc/<span style="color: rgba(0, 0, 0, 1)">hosts
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#swap分区关闭
swapoff </span>-<span style="color: rgba(0, 0, 0, 1)">a
sed </span>-i <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">s/.*swap.*/#&/</span><span style="color: rgba(128, 0, 0, 1)">'</span> /etc/<span style="color: rgba(0, 0, 0, 1)">fstab
#关闭沙盒
setenforce</span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
sed </span>-i <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">s/^SELINUX=enforcing/SELINUX=disabled/g</span><span style="color: rgba(128, 0, 0, 1)">"</span> /etc/sysconfig/<span style="color: rgba(0, 0, 0, 1)">selinux
sed </span>-i <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">s/^SELINUX=enforcing/SELINUX=disabled/g</span><span style="color: rgba(128, 0, 0, 1)">"</span> /etc/selinux/<span style="color: rgba(0, 0, 0, 1)">config
sed </span>-i <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">s/^SELINUX=permissive/SELINUX=disabled/g</span><span style="color: rgba(128, 0, 0, 1)">"</span> /etc/sysconfig/<span style="color: rgba(0, 0, 0, 1)">selinux
sed </span>-i <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">s/^SELINUX=permissive/SELINUX=disabled/g</span><span style="color: rgba(128, 0, 0, 1)">"</span> /etc/selinux/<span style="color: rgba(0, 0, 0, 1)">config
#打开ipv6
modprobe br_netfilter
modprobeip_vs_rr
cat </span><<EOF >/etc/sysctl.d/<span style="color: rgba(0, 0, 0, 1)">k8s.conf
net.bridge.bridge</span>-nf-call-ip6tables = <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
net.bridge.bridge</span>-nf-call-iptables = <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
vm.swappiness </span>= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
EOF
sysctl </span>-p /etc/sysctl.d/<span style="color: rgba(0, 0, 0, 1)">k8s.conf
ls </span>/proc/sys/net/<span style="color: rgba(0, 0, 0, 1)">bridge
<span style="color: rgba(0, 128, 0, 1)">#### 第三部分,参数</span></span><span style="color: rgba(0, 128, 0, 1)">/</span><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(0, 128, 0, 1)">源处理 ####</span>
#安装epel源
yum install </span>-y epel-<span style="color: rgba(0, 0, 0, 1)">release
yum install </span>-y yum-utils device-mapper-persistent-data lvm2 net-tools conntrack-tools wget vimntpdate libseccomp libtool-<span style="color: rgba(0, 0, 0, 1)">ltdl
#时区校准
systemctl enable ntpdate.service
echo </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">*/30 * * * * /usr/sbin/ntpdate time7.aliyun.com >/dev/null 2>&1</span><span style="color: rgba(128, 0, 0, 1)">'</span> > /tmp/<span style="color: rgba(0, 0, 0, 1)">crontab2.tmp
crontab </span>/tmp/<span style="color: rgba(0, 0, 0, 1)">crontab2.tmp
systemctl start ntpdate.service
#添加参数
echo </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">* soft nofile 65536</span><span style="color: rgba(128, 0, 0, 1)">"</span> >> /etc/security/<span style="color: rgba(0, 0, 0, 1)">limits.conf
echo </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">* hard nofile 65536</span><span style="color: rgba(128, 0, 0, 1)">"</span> >> /etc/security/<span style="color: rgba(0, 0, 0, 1)">limits.conf
echo </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">* soft nproc 65536</span><span style="color: rgba(128, 0, 0, 1)">"</span>>> /etc/security/<span style="color: rgba(0, 0, 0, 1)">limits.conf
echo </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">* hard nproc 65536</span><span style="color: rgba(128, 0, 0, 1)">"</span>>> /etc/security/<span style="color: rgba(0, 0, 0, 1)">limits.conf
echo </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">* softmemlockunlimited</span><span style="color: rgba(128, 0, 0, 1)">"</span>>> /etc/security/<span style="color: rgba(0, 0, 0, 1)">limits.conf
echo </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">* hard memlockunlimited</span><span style="color: rgba(128, 0, 0, 1)">"</span>>> /etc/security/<span style="color: rgba(0, 0, 0, 1)">limits.conf
#添加kubernetes的epel源
echo </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)"></span>
name=<span style="color: rgba(0, 0, 0, 1)">Kubernetes
baseurl</span>=https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/</span>
enabled=<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
gpgcheck</span>=<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
repo_gpgcheck</span>=<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
gpgkey</span>=https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg </span><span style="color: rgba(0, 128, 0, 1); text-decoration: underline">https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg</span><span style="color: rgba(0, 128, 0, 1)">' > /etc/yum.repos.d/kubernetes.repo</span>
<span style="color: rgba(0, 0, 0, 1)">#下载
sudo yum</span>-config-<span style="color: rgba(0, 0, 0, 1)">manager \
</span>--add-<span style="color: rgba(0, 0, 0, 1)">repo \
https:</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo</span>
<span style="color: rgba(0, 0, 0, 1)">yum makecache fast
<span style="background-color: rgba(255, 255, 255, 1); color: rgba(0, 128, 0, 1)">#### 第四部分,开始安装 ####</span>
yum </span>-y install docker-<span style="color: rgba(0, 0, 0, 1)">ce
yum install </span>--enablerepo=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">kubernetes</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> $kubelet $kubeadm$kubectl
systemctl enable kubelet.service </span>&&<span style="color: rgba(0, 0, 0, 1)"> systemctl start kubelet.service
systemctl start docker.service </span>&&<span style="color: rgba(0, 0, 0, 1)">systemctl enable docker.service
#安装tab快捷键
yum </span>-yinstall bash-completion && source /usr/share/bash-completion/bash_completion && source <(kubectl completion bash) && echo <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">source <(kubectl completion bash)</span><span style="color: rgba(128, 0, 0, 1)">"</span> >> ~/<span style="color: rgba(0, 0, 0, 1)">.bashrc
#创建集群
docker pull quay.io</span>/coreos/flannel:v0.<span style="color: rgba(128, 0, 128, 1)">12.0</span>-<span style="color: rgba(0, 0, 0, 1)">amd64
echo</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">请手动查看主节点$key文件的密钥将其他节点接入集群</span><span style="color: rgba(128, 0, 0, 1)">'</span></pre>
</div>
<p> </p>
<p> </p>
<h3><br>附录代码七:mandatory.yaml</h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">##############
##配置ingress</span>-<span style="color: rgba(0, 0, 0, 1)">nginx服务##
##############
apiVersion: v1
kind: Namespace
metadata:
name: ingress</span>-<span style="color: rgba(0, 0, 0, 1)">nginx
labels:
app.kubernetes.io</span>/name: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
app.kubernetes.io</span>/part-of: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
</span>---<span style="color: rgba(0, 0, 0, 1)">
kind: ConfigMap
apiVersion: v1
metadata:
name: nginx</span>-<span style="color: rgba(0, 0, 0, 1)">configuration
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
labels:
app.kubernetes.io</span>/name: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
app.kubernetes.io</span>/part-of: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
</span>---<span style="color: rgba(0, 0, 0, 1)">
kind: ConfigMap
apiVersion: v1
metadata:
name: tcp</span>-<span style="color: rgba(0, 0, 0, 1)">services
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
labels:
app.kubernetes.io</span>/name: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
app.kubernetes.io</span>/part-of: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
</span>---<span style="color: rgba(0, 0, 0, 1)">
kind: ConfigMap
apiVersion: v1
metadata:
name: udp</span>-<span style="color: rgba(0, 0, 0, 1)">services
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
labels:
app.kubernetes.io</span>/name: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
app.kubernetes.io</span>/part-of: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: v1
kind: ServiceAccount
metadata:
name: nginx</span>-ingress-<span style="color: rgba(0, 0, 0, 1)">serviceaccount
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
labels:
app.kubernetes.io</span>/name: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
app.kubernetes.io</span>/part-of: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: rbac.authorization.k8s.io</span>/<span style="color: rgba(0, 0, 0, 1)">v1beta1
kind: ClusterRole
metadata:
name: nginx</span>-ingress-<span style="color: rgba(0, 0, 0, 1)">clusterrole
labels:
app.kubernetes.io</span>/name: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
app.kubernetes.io</span>/part-of: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
rules:
</span>-<span style="color: rgba(0, 0, 0, 1)"> apiGroups:
</span>- <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
resources:
</span>-<span style="color: rgba(0, 0, 0, 1)"> configmaps
</span>-<span style="color: rgba(0, 0, 0, 1)"> endpoints
</span>-<span style="color: rgba(0, 0, 0, 1)"> nodes
</span>-<span style="color: rgba(0, 0, 0, 1)"> pods
</span>-<span style="color: rgba(0, 0, 0, 1)"> secrets
verbs:
</span>-<span style="color: rgba(0, 0, 0, 1)"> list
</span>-<span style="color: rgba(0, 0, 0, 1)"> watch
</span>-<span style="color: rgba(0, 0, 0, 1)"> apiGroups:
</span>- <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
resources:
</span>-<span style="color: rgba(0, 0, 0, 1)"> nodes
verbs:
</span>- <span style="color: rgba(0, 0, 255, 1)">get</span>
-<span style="color: rgba(0, 0, 0, 1)"> apiGroups:
</span>- <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
resources:
</span>-<span style="color: rgba(0, 0, 0, 1)"> services
verbs:
</span>- <span style="color: rgba(0, 0, 255, 1)">get</span>
-<span style="color: rgba(0, 0, 0, 1)"> list
</span>-<span style="color: rgba(0, 0, 0, 1)"> watch
</span>-<span style="color: rgba(0, 0, 0, 1)"> apiGroups:
</span>- <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
resources:
</span>-<span style="color: rgba(0, 0, 0, 1)"> events
verbs:
</span>-<span style="color: rgba(0, 0, 0, 1)"> create
</span>-<span style="color: rgba(0, 0, 0, 1)"> patch
</span>-<span style="color: rgba(0, 0, 0, 1)"> apiGroups:
</span>- <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">extensions</span><span style="color: rgba(128, 0, 0, 1)">"</span>
- <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">networking.k8s.io</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
resources:
</span>-<span style="color: rgba(0, 0, 0, 1)"> ingresses
verbs:
</span>- <span style="color: rgba(0, 0, 255, 1)">get</span>
-<span style="color: rgba(0, 0, 0, 1)"> list
</span>-<span style="color: rgba(0, 0, 0, 1)"> watch
</span>-<span style="color: rgba(0, 0, 0, 1)"> apiGroups:
</span>- <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">extensions</span><span style="color: rgba(128, 0, 0, 1)">"</span>
- <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">networking.k8s.io</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
resources:
</span>- ingresses/<span style="color: rgba(0, 0, 0, 1)">status
verbs:
</span>-<span style="color: rgba(0, 0, 0, 1)"> update
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: rbac.authorization.k8s.io</span>/<span style="color: rgba(0, 0, 0, 1)">v1beta1
kind: Role
metadata:
name: nginx</span>-ingress-<span style="color: rgba(0, 0, 0, 1)">role
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
labels:
app.kubernetes.io</span>/name: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
app.kubernetes.io</span>/part-of: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
rules:
</span>-<span style="color: rgba(0, 0, 0, 1)"> apiGroups:
</span>- <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
resources:
</span>-<span style="color: rgba(0, 0, 0, 1)"> configmaps
</span>-<span style="color: rgba(0, 0, 0, 1)"> pods
</span>-<span style="color: rgba(0, 0, 0, 1)"> secrets
</span>-<span style="color: rgba(0, 0, 0, 1)"> namespaces
verbs:
</span>- <span style="color: rgba(0, 0, 255, 1)">get</span>
-<span style="color: rgba(0, 0, 0, 1)"> apiGroups:
</span>- <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
resources:
</span>-<span style="color: rgba(0, 0, 0, 1)"> configmaps
resourceNames:
# Defaults to </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)"><election-id>-<ingress-class></span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
# Here: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)"><ingress-controller-leader>-<nginx></span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
# This has to be adapted </span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> you change either parameter
# when launching the nginx</span>-ingress-<span style="color: rgba(0, 0, 0, 1)">controller.
</span>- <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ingress-controller-leader-nginx</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
verbs:
</span>- <span style="color: rgba(0, 0, 255, 1)">get</span>
-<span style="color: rgba(0, 0, 0, 1)"> update
</span>-<span style="color: rgba(0, 0, 0, 1)"> apiGroups:
</span>- <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
resources:
</span>-<span style="color: rgba(0, 0, 0, 1)"> configmaps
verbs:
</span>-<span style="color: rgba(0, 0, 0, 1)"> create
</span>-<span style="color: rgba(0, 0, 0, 1)"> apiGroups:
</span>- <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
resources:
</span>-<span style="color: rgba(0, 0, 0, 1)"> endpoints
verbs:
</span>- <span style="color: rgba(0, 0, 255, 1)">get</span>
---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: rbac.authorization.k8s.io</span>/<span style="color: rgba(0, 0, 0, 1)">v1beta1
kind: RoleBinding
metadata:
name: nginx</span>-ingress-role-nisa-<span style="color: rgba(0, 0, 0, 1)">binding
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
labels:
app.kubernetes.io</span>/name: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
app.kubernetes.io</span>/part-of: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: nginx</span>-ingress-<span style="color: rgba(0, 0, 0, 1)">role
subjects:
</span>-<span style="color: rgba(0, 0, 0, 1)"> kind: ServiceAccount
name: nginx</span>-ingress-<span style="color: rgba(0, 0, 0, 1)">serviceaccount
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: rbac.authorization.k8s.io</span>/<span style="color: rgba(0, 0, 0, 1)">v1beta1
kind: ClusterRoleBinding
metadata:
name: nginx</span>-ingress-clusterrole-nisa-<span style="color: rgba(0, 0, 0, 1)">binding
labels:
app.kubernetes.io</span>/name: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
app.kubernetes.io</span>/part-of: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: nginx</span>-ingress-<span style="color: rgba(0, 0, 0, 1)">clusterrole
subjects:
</span>-<span style="color: rgba(0, 0, 0, 1)"> kind: ServiceAccount
name: nginx</span>-ingress-<span style="color: rgba(0, 0, 0, 1)">serviceaccount
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: apps</span>/<span style="color: rgba(0, 0, 0, 1)">v1
kind: Deployment
metadata:
name: nginx</span>-ingress-<span style="color: rgba(0, 0, 0, 1)">controller
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
labels:
app.kubernetes.io</span>/name: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
app.kubernetes.io</span>/part-of: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
spec:
replicas: </span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
selector:
matchLabels:
app.kubernetes.io</span>/name: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
app.kubernetes.io</span>/part-of: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
template:
metadata:
labels:
app.kubernetes.io</span>/name: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
app.kubernetes.io</span>/part-of: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
annotations:
prometheus.io</span>/port: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">10254</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
prometheus.io</span>/scrape: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">true</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
spec:
<span style="color: rgba(255, 0, 0, 1)">hostNetwork: </span></span><span style="color: rgba(255, 0, 0, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
# wait up to five minutes </span><span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> the drain of connections
terminationGracePeriodSeconds: </span><span style="color: rgba(128, 0, 128, 1)">300</span><span style="color: rgba(0, 0, 0, 1)">
serviceAccountName: nginx</span>-ingress-<span style="color: rgba(0, 0, 0, 1)">serviceaccount
nodeSelector:
Ingress: nginx
kubernetes.io</span>/<span style="color: rgba(0, 0, 0, 1)">os: linux
containers:
</span>- name: nginx-ingress-<span style="color: rgba(0, 0, 0, 1)">controller
image: quay.io</span>/kubernetes-ingress-controller/nginx-ingress-controller:<span style="color: rgba(128, 0, 128, 1)">0.29</span>.<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
args:
</span>- /nginx-ingress-<span style="color: rgba(0, 0, 0, 1)">controller
</span>- --configmap=$(POD_NAMESPACE)/nginx-<span style="color: rgba(0, 0, 0, 1)">configuration
</span>- --tcp-services-configmap=$(POD_NAMESPACE)/tcp-<span style="color: rgba(0, 0, 0, 1)">services
</span>- --udp-services-configmap=$(POD_NAMESPACE)/udp-<span style="color: rgba(0, 0, 0, 1)">services
</span>- --publish-service=$(POD_NAMESPACE)/ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
</span>- --annotations-prefix=<span style="color: rgba(0, 0, 0, 1)">nginx.ingress.kubernetes.io
</span><span style="color: rgba(255, 0, 0, 1)">- --http-port=8080 # 如果你的master服务器已经安装了nginx,这里需要修改下,否则无法启动ingress-nginx服务
- --https-port=8443</span><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(255, 0, 0, 1)"> # 同上</span>
securityContext:
allowPrivilegeEscalation: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
capabilities:
drop:
</span>-<span style="color: rgba(0, 0, 0, 1)"> ALL
add:
</span>-<span style="color: rgba(0, 0, 0, 1)"> NET_BIND_SERVICE
# www</span>-data -> <span style="color: rgba(128, 0, 128, 1)">101</span><span style="color: rgba(0, 0, 0, 1)">
runAsUser: </span><span style="color: rgba(128, 0, 128, 1)">101</span><span style="color: rgba(0, 0, 0, 1)">
env:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.</span><span style="color: rgba(0, 0, 255, 1)">namespace</span><span style="color: rgba(0, 0, 0, 1)">
ports:
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: http
containerPort: </span><span style="color: rgba(128, 0, 128, 1)">80</span><span style="color: rgba(0, 0, 0, 1)">
protocol: TCP
</span>-<span style="color: rgba(0, 0, 0, 1)"> name: https
containerPort: </span><span style="color: rgba(128, 0, 128, 1)">443</span><span style="color: rgba(0, 0, 0, 1)">
protocol: TCP
livenessProbe:
failureThreshold: </span><span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">
httpGet:
path: </span>/<span style="color: rgba(0, 0, 0, 1)">healthz
port: </span><span style="color: rgba(128, 0, 128, 1)">10254</span><span style="color: rgba(0, 0, 0, 1)">
scheme: HTTP
initialDelaySeconds: </span><span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(0, 0, 0, 1)">
periodSeconds: </span><span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(0, 0, 0, 1)">
successThreshold: </span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
timeoutSeconds: </span><span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(0, 0, 0, 1)">
readinessProbe:
failureThreshold: </span><span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">
httpGet:
path: </span>/<span style="color: rgba(0, 0, 0, 1)">healthz
port: </span><span style="color: rgba(128, 0, 128, 1)">10254</span><span style="color: rgba(0, 0, 0, 1)">
scheme: HTTP
periodSeconds: </span><span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(0, 0, 0, 1)">
successThreshold: </span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
timeoutSeconds: </span><span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(0, 0, 0, 1)">
lifecycle:
preStop:
exec:
command:
</span>- /wait-<span style="color: rgba(0, 0, 0, 1)">shutdown
</span>---<span style="color: rgba(0, 0, 0, 1)">
apiVersion: v1
kind: LimitRange
metadata:
name: ingress</span>-<span style="color: rgba(0, 0, 0, 1)">nginx
</span><span style="color: rgba(0, 0, 255, 1)">namespace</span>: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
labels:
app.kubernetes.io</span>/name: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
app.kubernetes.io</span>/part-of: ingress-<span style="color: rgba(0, 0, 0, 1)">nginx
spec:
limits:
</span>-<span style="color: rgba(0, 0, 0, 1)"> min:
memory: 90Mi
cpu: 100m
type: Container</span></pre>
</div>
<p> </p>
<p> </p>
<h3>参考文献:</h3>
<p>https://blog.csdn.net/qq_37746855/article/details/116173976</p>
<p>https://blog.csdn.net/weixin_46152207/article/details/111355788</p>
<p>https://blog.csdn.net/catcher92/article/details/116207040</p>
<p>https://blog.51cto.com/u_14306186/2523096</p>
<p> </p>
<pre><br><br></pre><br><br>
来源:https://www.cnblogs.com/laozhang-is-phi/p/14819009.html
頁:
[1]