網站首頁 編程語言 正文
預設網絡
Calico(https://github.com/projectcalico/calico) 是針對容器、虛擬機和裸機工作負載的開源網絡和安全解決方案,它提供了 pod 之間的網絡連接和網絡安全策略實施。
讀者可參考?https://kubernetes.io/zh/docs/concepts/cluster-administration/networking/?這里不做過多的說明。
執行?ip addr
?命令,找到?ens4
,把里面提到的 ip 記錄下來。
ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP group default qlen 1000 link/ether 42:01:0a:aa:00:02 brd ff:ff:ff:ff:ff:ff inet 10.170.0.2/32 scope global dynamic ens4 valid_lft 2645sec preferred_lft 2645sec inet6 fe80::4001:aff:feaa:2/64 scope link valid_lft forever preferred_lft forever
則 ip 是 10.170.0.2。
然后修改?/etc/hosts
?文件,加上一行(替換這個ip為你的):
10.170.0.2 k8smaster
后面我們訪問集群,使用 k8smaster,而且不是使用 ip 直接訪問。
kubeadm 安裝 k8s
執行?kubectl version
?查看 k8s 版本,GitVersion:"v1.21.0"
?表示的即為 k8s 版本,因為工具版本跟 k8s 版本一致。
創建一個 kubeadm-config.yaml 文件,我們使用?kubeadm init
?時,通過此配置文件出初始化 k8s master。
文件內容為:
apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration kubenetesVersion: 1.21.0 controlPlaneEndpoint: "k8smaster:6443" networking: podSubnet: 192.168.0.0/16
注意,:
?后面必須帶一個空格。表示key: value
。
例如?image: nginx:letest
?,不帶空格的?:
?會連在一起。
然后初始化 master:
kubeadm init --config=kubeadm-config.yaml --upload-certs --v=5 | tee kubeadm-init.out
這個語句可以省略為?kubeadm init --config=kubeadm-config.yaml --upload-certs
。
--v=5
?可以輸出更多信息信息,tee xxx
?可以讓信息輸出到一個文件中,方便收集日志或者后續檢查。
執行初始化命令后,終端或查看?kubeadm-init.out
?文件,有以下內容:
To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config Alternatively, if you are the root user, you can run: export KUBECONFIG=/etc/kubernetes/admin.conf You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/ You can now join any number of the control-plane node running the following command on each as root: kubeadm join k8smaster:6443 --token 45td1j.xqdscm4k06a4edi2 \ --discovery-token-ca-cert-hash sha256:aeb772c57a35a283716b65d16744a71250bcc25d624010ccb89090021ca0f428 \ --control-plane --certificate-key d76287ccc4701db9d34e0c9302fa285be2e9241fc43c94217d6beb419cdf3c52 Please note that the certificate-key gives access to cluster sensitive data, keep it secret! As a safeguard, uploaded-certs will be deleted in two hours; If necessary, you can use "kubeadm init phase upload-certs --upload-certs" to reload certs afterward. Then you can join any number of worker nodes by running the following on each as root: kubeadm join k8smaster:6443 --token 45td1j.xqdscm4k06a4edi2 \ --discovery-token-ca-cert-hash sha256:aeb772c57a35a283716b65d16744a71250bcc25d624010ccb89090021ca0f428
按照提示,我們執行:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
然后:
export KUBECONFIG=/etc/kubernetes/admin.conf
筆者注:KUBECONFIG
?環境變量在下次登錄或新建終端窗口會失效,打開 用戶目錄的.bashrc
?文件,在最后面加上?export KUBECONFIG=/etc/kubernetes/admin.conf
?,可保證下次登錄或切換終端,依然可用。
筆者注:因為涉及到多用戶,所以如果切換用戶,就不能使用?kubeadm/kubectl/kubelet
?命令了,如果讀者切換了用戶,則可以執行上面?make -p $HOME/.kube
到?export xxx
?這兩部分的命令,這樣別的用戶也可以執行命令操作節點。
輸入?kubeadm config print init-default
?可以查看到 master 是初始化的配置。
配置 calico
然后下下載 calico 的 yaml 文件。
wget https://docs.projectcalico.org/manifests/calico.yaml
然后我們需要留意 yaml 文件中的?CALICO_IPV4POOL_CIDR
?的值,讀者直接打開?https://docs.projectcalico.org/manifests/calico.yaml?或者使用?less calico.yaml
?在終端上閱讀文件。
找到?CALICO_IPV4POOL_CIDR
?例如:
# - name: CALICO_IPV4POOL_CIDR # value: "192.168.0.0/16"
這個表示 ip4 池,如果 ip 不存在,則會自動創建,創建 的 pod 的網絡 ip 會在這個范圍。默認是?192.168.0.0
?我們不需要改,如果你需要定制,則可以刪除?#
?,然后改動 ip。
然后我們啟用 calico 網絡插件:
kubectl apply -f calico.yaml
自動補全工具
kubectl
?命令和可選參數非常多,每次都要敲長長的命令,任意出錯,我們可以利用?bash-completion
?為我們快速完成命令的輸入。
sudo apt-get install bash-completion -y
source <(kubectl completion bash) echo "source <(kubectl completion bash)" >> $HOME/.bash
我們可以測試一下。
輸入?kubectl des
?,然后按一下?TAB
?鍵,會發現內容自動補全。
輸入完整的?kubectl descibe nodes
?可以查到 node 狀態,后面的小節再聊聊?descibe nodes
?的含義。
狀態描述
執行?kubectl descibe nodes
?命令,我們可以看到節點詳細的信息,其中有個?Conitions
?字段,描述了所有正在運行中(Running) 的節點的狀態,它有 5 個類型:
-
Ready
Node 是否能夠接收 pod ,如果可以則?
Status
?為 True;如果節點不健康,不能接收 pod,則 為 False。正常情況下為 True。 -
DiskPressure
表示節點的空閑空間不足以用于添加新 Pod,如果為 True則說明不正常。
-
MemoryPressure
表示節點存在內存壓力,即節點內存可用量低,如果為 True 則說明不正常。
-
PIDPressure
表示節點存在進程壓力,即節點上進程過多;如果為 True 則說明不正常。
-
NetworkUnavailable
表示節點網絡配置不正確;如果為 True,則說明不正常。
使用 json 表示:
"conditions": [ { "type": "Ready", "status": "True", "reason": "KubeletReady", "message": "kubelet is posting ready status", "lastHeartbeatTime": "2019-06-05T18:38:35Z", "lastTransitionTime": "2019-06-05T11:41:27Z" } ]
原文鏈接:https://www.cnblogs.com/whuanle/p/14679922.html
相關推薦
- 2022-04-09 C++實現簡單的計算器功能_C 語言
- 2022-10-20 react實現動態表單_React
- 2022-02-10 Error: Cannot find module ‘webpack/lib/RuleSet‘ 解決
- 2022-08-10 .Net通過TaskFactory.FromAsync簡化APM_實用技巧
- 2022-06-27 python結合shell自動創建kafka的連接器實戰教程_python
- 2022-08-27 .Net實現延遲隊列_實用技巧
- 2022-04-20 Python設計模式中的結構型橋接模式_python
- 2022-08-28 點在多邊形內判定模板(射線法,凹凸多邊形均可)
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支