kubernetes 部署

安裝

# 使得 apt 支持 ssl 傳輸
apt-get update && apt-get install -y apt-transport-https

# 下載 gpg 密鑰
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

# 添加 k8s 鏡像源
cat << EOF >/etc/apt/sources.list.d/kubernetes.list
> deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
> EOF

# 安裝kubelet, kubectl
apt-get update && apt-get install -y kubelet kubectl

# 關掉swap
swapoff -a

  • 關掉swap的原因
    • swap就是當內存不足時將部分內存數據存放到磁盤中,防止OOM
      • 這樣會使性能下降,而且不易發覺原因
    • 對於集羣化的服務(比如etcd)來說,掛掉一個實例比整個集羣都出毛病(etcd沒掛,但是服務質量很差)要好

kind單機版部署

# 部署
GO111MODULE="on" go get sigs.k8s.io/kind && kind create cluster

# 卸載
kind delete cluseter

kubeadm部署

  • 官方對kubeadmin的解釋是不適用於大規模集羣,僅用於快速搭建測試集羣
  • 如果在初始化過程中出現了任何Error導致初始化終止了,使用kubeadm reset重置之後再重新進行初始化
  • master節點部署
apt-get install -y kubeadm

# 初始化master節點
kubeadm init \
--apiserver-advertise-address=<your host address> \ #apiserver的部署地址
--image-repository registry.aliyuncs.com/google_containers \ #從國內的鏡像源拉取
--pod-network-cidr=10.244.0.0/16 # 使用flannel網絡方案必須這樣設定
# --ignore-preflight-errors=<錯誤名> 忽律初始化錯誤,例如NumCPU

# 根據提示執行以下命令
# 將剛剛部署生成的集羣安全配置文件,保存到當前用戶的.kube 目錄下,kubectl會使用這個目錄下的授權信息訪問集羣
export KUBECONFIG=/etc/kubernetes/admin.conf
cp -i /etc/kubernetes/admin.conf ~/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

# 部署網絡
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# 檢查健康性
kubectl get pod --all-namespaces
kubectl get nodes
  • nodes節點部署
# 在master初始化時會生成token,如果不記得了可以通過下面的命令獲取
kubeadm token create --print-join-command
# nodes節點加入master集羣
kubeadm join xxxx --token xxxx --discovery-token-ca-cert-hash sha256:xxxx

# kubeadm搭建完環境之後會刪除nodes節點上的admin.conf的認證配置文件,如果需要在nodes節點上使用kubectl查詢資源,需要將master節點的admin.conf 拷貝到nodes節點
scp /etc/kubernetes/admin.conf <node>:/etc/kubernetes
export KUBECONFIG=/etc/kubernetes/admin.conf

# 如果加入後狀態保持not ready,用以下命令查錯
kubectl describe node <node name>
# 一般錯誤是因爲node節點沒安裝網絡
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

debug工具部署

  • 原理類似docker exec和sidecar,優點在於提供了大量debug工具(如curl, netstat, tcpdump等)
    • 業務容器可以保持最小化, 不需要預裝任何額外的排障工具
  • README
# 安裝
export PLUGIN_VERSION=0.1.1
# linux x86_64
curl -Lo kubectl-debug.tar.gz https://github.com/aylei/kubectl-debug/releases/download/v${PLUGIN_VERSION}/kubectl-debug_${PLUGIN_VERSION}_linux_amd64.tar.gz
tar -zxvf kubectl-debug.tar.gz kubectl-debug
sudo mv kubectl-debug /usr/local/bin/

# 使用
kubectl debug <target pod> --agentless --port-forward

命令行補全

# bash
echo "source <(kubectl completion bash)" >> ~/.bashrc
source ~/.bashrc
# zsh
echo "source <(kubectl completion zsh)" >> ~/.zshrc
source ~/.zshrc
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章