阿里雲 Ubuntu 伺服器安裝 k8s 全記錄
-
前期準備
-
一臺伺服器, 開放了 80 / 443 埠 (可以多準備幾臺節點伺服器, 內網互通的那種)
-
一個域名, 與之相對應的 ssl 證照 (kubernetes-dashboard 需要 https 才能登陸, http 會出問題, 具體問題請自己踩坑)
-
-
參考文件
-
注意
-
以下會安裝
asciinema
這個東西, 可以記錄下你在命令列操作的所有步驟, 可以用來查錯, 如果不需要, 可以不用裝 -
設定
PS1
環境變數, 只是看起來舒服一點, 跟 k8s 沒一毛錢關係 -
本文所使用的伺服器配置為
1c2G
配置, 環境為ubuntu
, 新裝的系統 乾淨的不要不要的, 如果你不是乾淨的系統, 自己掂量著辦吧
-
準備工作
# vim 設定行號
cat <<EOF > ~/.vimrc
set nu
EOF
# 設定預設 PS1
echo 'export PS1="\[\033[33m\]\u\[\033[0m\]@\[\033[36m\]k8s\[\033[0m\]:\[\033[32m\]\W \[\033[0m\]$ "' >> ~/.bashrc
source ~/.bashrc
# 基礎依賴包
apt update && apt -y install apt-transport-https ca-certificates curl software-properties-common
# asciinema 映象源
# apt-add-repository ppa:zanchey/asciinema
# docker 和 k8s 映象源
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/docker-k8s.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable
EOF
# 安裝基礎軟體
apt update && apt install -y docker-ce kubelet kubeadm kubectl # && apt install -y asciinema
# 關閉 swap, 不關閉的話, k8s 會報錯
swapoff -a
vim /etc/fstab # 註釋掉 # /swapfile none swap sw 0 0
初始化
# 如果你可以科學上網, 可以不用設定 --image-repository
# 如果你伺服器的 CPU >= 2 可以不用設定 --ignore-preflight-errors=NumCPU
kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers
kubeadm init --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=NumCPU --image-repository=registry.aliyuncs.com/google_containers
# 設定環境變數並使其生效
echo 'export KUBECONFIG=/etc/kubernetes/admin.conf' >> ~/.bashrc
source ~/.bashrc
# 主節點不允許部署node, 如果有多臺伺服器, 請忽略這個命令
kubectl taint nodes --all node-role.kubernetes.io/master-
# 檢視相關狀態 # --all-namespaces 可以替換為 -n <namespaces>
kubectl get nodes -A # 等價於 kubectl get nodes --all-namespaces
kubectl get pods -A # 等價於 kubectl get pods --all-namespaces
kubectl get svc -A # 等價於 kubectl get services --all-namespaces
kubectl get deploy -A # 等價於 kubectl get deployments --all-namespaces
對外訪問
# 安裝網路外掛, 網路外掛有好多種, 這裡使用的是 kube-flannel
# 官方配置: https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 直接複製過來的
kubectl apply -f kube-flannel.yml
# 安裝 nginx-ingress, ingress 有好多個, 這裡使用 nginx-ingress
# 官方配置: https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
# 直接複製過來的, 加了一個 hostNetwork: true 配置, 不加這個配置, 不會監聽主機的 80/443 埠
kubectl apply -f nginx-ingress-controller.yml
# 安裝 dashboard, 並使用 ingress 轉發 dashboard
# 官方配置: https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta6/aio/deploy/recommended.yaml
# dashboard-deployment.yaml 是上面連結直接複製過來的, 改了一個許可權, 162 行
# ingress 自己寫的, 修改域名
kubectl apply -f dashboard/
# 配置 ssl 證照
kubectl -n kubernetes-dashboard create secret tls dashboard-tls \
--key /certs/k8s.nfangxu.cn.key \
--cert /certs/k8s.nfangxu.cn.pem
# 獲取登入 Token
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep kubernetes-dashboard | awk '{print $1}')
# 檢視賬戶狀態
kubectl get serviceaccounts kubernetes-dashboard -o yaml -n kubernetes-dashboard
本作品採用《CC 協議》,轉載必須註明作者和本文連結