簡介
本篇文章,筆者會講述kubernetes單機部署過程和碰到的一些坑點兒。
相關文檔:
Kubernetes從零開始搭建自定義集羣
安裝kubectl、kubeadm、kubelet
(以下兩種方法二取一)
- 配置國內的k8s的yum源
cat << EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
# yum源更新
yum update
# 安裝
yum install -y kubelet kubeadm kubectl
- 按照官方文檔,下載並解壓 最新的發行版
wget -c https://github.com/kubernetes/kubernetes/releases/download/v1.16.11/kubernetes.tar.gz
tar -zxvf kubernetes.tar.gz
找到並運行./kubernetes/cluster/get-kube-binaries.sh
來下載客戶端和服務器的二進制文件.
然後找到 ./kubernetes/server/kubernetes-server-linux-amd64.tar.gz 並解壓縮。接着在被解壓開的目錄 ./kubernetes/server/bin 中找到所有必要的二進制文件。(最好放入環境變量中)
開機啓動 && 啓動服務
systemctl enable kubelet && systemctl start kubelet
使用kubeadm創建master節點
我們先來通過kubeadm config images list
查看一下要下載的鏡像。
[root@instance-w0wvnuy1 /] kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.14.2
k8s.gcr.io/kube-controller-manager:v1.14.2
k8s.gcr.io/kube-scheduler:v1.14.2
k8s.gcr.io/kube-proxy:v1.14.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1
這些鏡像的下載都是需要翻牆的,強行下載肯定會超時失敗,除非你有國外的VPN。不過我們有我們的辦法。下載國內鏡像並重新打tag
# 拉下來
docker pull mirrorgooglecontainers/kube-proxy:v1.14.2
# 打tag
docker tag mirrorgooglecontainers/kube-proxy:v1.14.2 k8s.gcr.io/kube-proxy:v1.14.2
docker pull mirrorgooglecontainers/kube-apiserver:v1.14.2
docker tag mirrorgooglecontainers/kube-apiserver:v1.14.2 k8s.gcr.io/kube-apiserver:v1.14.2
docker pull mirrorgooglecontainers/kube-controller-manager:v1.14.2
docker tag mirrorgooglecontainers/kube-controller-manager:v1.14.2 k8s.gcr.io/kube-controller-manager:v1.14.2
docker pull mirrorgooglecontainers/kube-scheduler:v1.14.2
docker tag mirrorgooglecontainers/kube-scheduler:v1.14.2 k8s.gcr.io/kube-scheduler:v1.14.2
# 注意,這裏coredns和其他的不一樣
docker pull coredns/coredns:1.3.1
docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
docker pull mirrorgooglecontainers/etcd:3.3.10
docker tag mirrorgooglecontainers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
docker pull mirrorgooglecontainers/pause:3.1
docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
上面執行完後,我們通過docker images
看一下結果
[root@instance-w0wvnuy1 ~] docker images
# 如果是下面這樣,那麼就OK了。
mirrorgooglecontainers/kube-proxy v1.14.2 5c24210246bb 13 months ago 82.1MB
k8s.gcr.io/kube-proxy v1.14.2 5c24210246bb 13 months ago 82.1MB
mirrorgooglecontainers/kube-apiserver v1.14.2 5eeff402b659 13 months ago 210MB
k8s.gcr.io/kube-apiserver v1.14.2 5eeff402b659 13 months ago 210MB
mirrorgooglecontainers/kube-controller-manager v1.14.2 8be94bdae139 13 months ago 158MB
k8s.gcr.io/kube-controller-manager v1.14.2 8be94bdae139 13 months ago 158MB
mirrorgooglecontainers/kube-scheduler v1.14.2 ee18f350636d 13 months ago 81.6MB
k8s.gcr.io/kube-scheduler v1.14.2 ee18f350636d 13 months ago 81.6MB
coredns/coredns 1.3.1 eb516548c180 17 months ago 40.3MB
k8s.gcr.io/coredns 1.3.1 eb516548c180 17 months ago 40.3MB
mirrorgooglecontainers/etcd 3.3.10 2c4adeb21b4f 18 months ago 258MB
k8s.gcr.io/etcd 3.3.10 2c4adeb21b4f 18 months ago 258MB
mirrorgooglecontainers/pause 3.1 da86e6ba6ca1 2 years ago 742kB
k8s.gcr.io/pause 3.1 da86e6ba6ca1 2 years ago 742kB
集羣初始化
# 在開始之前,我們先開通必要端口號 防止不必要的問題出現
# 6443
firewall-cmd --zone=public --add-port=6443/tcp --permanent && firewall-cmd --reload
# 10250
firewall-cmd --zone=public --add-port=10250/tcp --permanent && firewall-cmd --reload
# 安裝命令
kubeadm init
# 開啓單機模式
kubectl taint nodes --all node-role.kubernetes.io/master
查看結果
[root@docker001 ~] kubectl get nodes
NAME STATUS ROLES AGE VERSION
instance-w0wvnuy1 NotReady master 12h v1.14.2
結尾
到這裏,我們已經完成了kubernetes單機部署。NotReady不要慌,安裝網卡插件後,查詢即可變爲Ready。