kubeadm 的引入極大的簡化了 kubernetes 集群的安裝步驟钠龙。以下步驟已在騰訊云上進(jìn)行驗(yàn)證悴灵,希望能對(duì)大家有所幫助。
環(huán)境準(zhǔn)備
centos7.2
切換 k8s yum 源
vim /etc/yum.repos.d/kubernetes.repo
# 寫入以下內(nèi)容
[kuberneten]
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
緩存生效:
yum makecache
安裝 kubeadm 和相關(guān)工具
yum install -y docker kubelet kubeadm kubectl kubernetes-cni
以下是我的安裝版本:
查看安裝的版本:
kubectl version
啟動(dòng) docker 和 kubelet 服務(wù):
systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet
下載相關(guān)鏡像
kubeadm 默認(rèn)下載的鏡像都是在 gcr.io 上的,國內(nèi)的網(wǎng)絡(luò)環(huán)境不能訪問塘秦,我們可以先下下來建蹄,然后自己打tag碌更。
# 查看 kubeadm 會(huì)用到的鏡像(以 1.11.3 為例)
kubeadm config images list
使用如下命令拉取鏡像,并打tag洞慎。
docker pull docker.io/mirrorgooglecontainers/kube-apiserver-amd64:v1.11.3
docker tag docker.io/mirrorgooglecontainers/kube-apiserver-amd64:v1.11.3 k8s.gcr.io/kube-apiserver-amd64:v1.11.3
docker pull docker.io/mirrorgooglecontainers/kube-controller-manager-amd64:v1.11.3
docker tag docker.io/mirrorgooglecontainers/kube-controller-manager-amd64:v1.11.3 k8s.gcr.io/kube-controller-manager-amd64:v1.11.3
docker pull docker.io/mirrorgooglecontainers/kube-scheduler-amd64:v1.11.3
docker tag docker.io/mirrorgooglecontainers/kube-scheduler-amd64:v1.11.3 k8s.gcr.io/kube-scheduler-amd64:v1.11.3
docker pull docker.io/mirrorgooglecontainers/kube-proxy-amd64:v1.11.3
docker tag docker.io/mirrorgooglecontainers/kube-proxy-amd64:v1.11.3 k8s.gcr.io/kube-proxy-amd64:v1.11.3
docker pull docker.io/mirrorgooglecontainers/pause-amd64:3.1
docker tag docker.io/mirrorgooglecontainers/pause-amd64:3.1 k8s.gcr.io/pause:3.1
docker pull docker.io/mirrorgooglecontainers/etcd-amd64:3.2.18
docker tag docker.io/mirrorgooglecontainers/etcd-amd64:3.2.18 k8s.gcr.io/etcd-amd64:3.2.18
docker pull docker.io/coredns/coredns:1.1.3
docker tag docker.io/coredns/coredns:1.1.3 k8s.gcr.io/coredns:1.1.3
初始化
kubeadm init --kubernetes-version=1.11.3 --pod-network-cidr=10.244.0.0/16
看到如下信息痛单,表明已經(jīng)安裝成功。
執(zhí)行下面的命令進(jìn)行配置:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
安裝網(wǎng)絡(luò)插件
執(zhí)行 kubectl get node 命令劲腿,發(fā)現(xiàn) master 節(jié)點(diǎn)的狀態(tài)為 NotReady旭绒。我們需要安裝 cni 網(wǎng)絡(luò)插件。
# 請(qǐng)注意 flannel 的版本問題
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/c5d10c8/Documentation/kube-flannel.yml
其他的網(wǎng)絡(luò)插件安裝方法可以參見 k8s 官網(wǎng) 或者 這篇文章
安裝 Node焦人,加入集群
新節(jié)點(diǎn)的環(huán)境安裝挥吵,可以參見本文的 安裝 kubeadm 和相關(guān)工具 一節(jié)。
在節(jié)點(diǎn)上執(zhí)行花椭,以加入集群:
# 注意把 YOURIP忽匈、YOURTOKEN、YOURHASH 替換成自己的
# 具體命令可以參見 kubeadm init 之后最后一行的輸出
kubeadm join YOURIP --token YOURTOKEN --discovery-token-ca-cert-hash YOURHASH
Master 節(jié)點(diǎn)默認(rèn)不參與工作負(fù)載矿辽,可以執(zhí)行下面的命令來搭建一個(gè) all-in-one 的 kubernetes 環(huán)境丹允。
kubectl taint nodes --all node-role.kubernetes.io/master-
執(zhí)行 kubectl get nodes 可以查看節(jié)點(diǎn)狀態(tài)。
可能遇到的問題
1. hostname
在執(zhí)行 kubeadm config images list 或者 kubeadm init 的時(shí)候可能會(huì)遇見下面的錯(cuò)誤:
name: Invalid value: "vm_0_8_centos": a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')
原因是 hostname 和 DNS 的解析規(guī)則不匹配袋倔,改掉自己的hostname就好了雕蔽。
2. kubeadm init
在 執(zhí)行 kubeadm init 的時(shí)候可能會(huì)遇到下面的問題:
No internet connection is available so the kubelet cannot pull or find the following control plane images:
原因是不能從 k8s.gcr.io 上拉取到鏡像,可以參見前面拉取鏡像的命令宾娜。
如果本地已經(jīng)有需要的鏡像批狐,并且已經(jīng)打好正確的 tag,仍然出現(xiàn)上面的問題碳默。一個(gè)可能的原因是:在宿主機(jī)上開啟了代理(ss 等)贾陷,關(guān)掉就好了。
3. kube-flannel
可能會(huì)出現(xiàn) kube-flannel CrashLoopBackOff 的錯(cuò)誤嘱根,筆者遇到的情況是 flannel 的版本不對(duì)髓废,修正后就好了。
參考文章
- 《kubernetes 權(quán)威指南》
- https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/