ubuntu k8s 單節點快速安裝
很早以前記錄過 ubuntu 上 k8s 的單節點安裝,現在更新一下 ubuntu 18.04 上 k8s 單節點的快速安裝,方便參考。
安裝過程
安裝 docker
curl -fsSL https://get.docker.com | sudo sh
使用 ubuntu 18.04,先使用 aliyun 的 k8s 源安裝 kubeadm 和相關命令行工具
apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list
apt-get update
apt-get install -y kubelet kubeadm kubectl
systemctl enable kubelet
對於 ubuntu ,需要修改 docker 的 cgroup driver 選項為 systemd,與 k8s 保持一致,並修改 registry-mirror 加速下載,可以用 aliyun 提供的鏡像服務,以下內容加入到 /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://registry.docker-cn.com", "https://docker.mirrors.ustc.edu.cn"]
}
重啟 docker
systemctl restart docker
直接使用阿里雲上提供的 k8s 鏡像 (這里指定的網絡與后續使用的網絡插件的配置保持一致)
kubeadm init --image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
按照提示把 k8s 配置復制到用戶目錄下
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
查看當前節點狀態,為 notready
kubectl get nodes
需要安裝 pod 網絡插件 flannel(可用 wget 把 github 把文件下載到本地)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
(安裝時需要下載鏡像 quay.io/coreos/flannel:v0.11.0-amd64
,具體的鏡像見 kube-flannel.yml 文件,如果下載失敗則到 quay-mirror.qiniu.com 下載,並重新打回 tag)
查看節點狀態,為 ready,查看集群狀態,各服務正常
kubectl get cs
允許 master 部署 pod
kubectl taint nodes --all node-role.kubernetes.io/master-
查看系統狀態
kubectl get pods -n kube-system
部署 nginx 測試
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=8080 --type=NodePort
kubectl get pods,svc
kubectl 命令補全(bash)
安裝 bash-completion
apt install bash-completion
然后寫入到 bashrc
echo "source <(kubectl completion bash)" >> ~/.bashrc
注意,在 root 下的命令補全可能被注釋了,需要打開,在 ~/.bashrc
,確保以下內容沒被注釋
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
重置
直接使用 kubeadm reset
重置環境,可看到所有容器已清理 docker ps -a
加入 worker 節點
worker 節點安裝 k8s 組件
apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list
apt-get update
apt-get install -y kubelet kubeadm kubectl
加入當前節點作為 worker,需要到 k8s 的token 和證書的 sha256 ,在 kubeadm init
后提示的輸出里面有對應的 token 和證書的 sha256 ,但是 token 有效期為 24 小時,超時需要重新創建
kubeadm token list # 查看 token
kubeadm token create --print-join-command # 創建 token 並打印 join 命令
或通過 openssl 獲得證書的 sha256
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
加入到集群
kubeadm join 172.21.0.9:6443 --token <token> \
--discovery-token-ca-cert-hash sha256:<證書sha256>
重裝后 kubectl
命令的 x509 錯誤
由用戶目錄下的配置文件引起的,需要刪除 ~/.kube/config
后,重新把配置復制到用戶目錄下即可。