kubernetes單機部署

簡介

本篇文章,筆者會講述kubernetes單機部署過程和碰到的一些坑點兒。

相關文檔:
Kubernetes從零開始搭建自定義集羣

安裝kubectl、kubeadm、kubelet

(以下兩種方法二取一)

  1. 配置國內的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
  1. 按照官方文檔,下載並解壓 最新的發行版
 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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章