國(guó)內(nèi)好的網(wǎng)站設(shè)計(jì)自己動(dòng)手建立個(gè)人網(wǎng)站
Kubernetes定位在Saas層,重點(diǎn)解決了微服務(wù)大規(guī)模部署時(shí)的服務(wù)編排問(wèn)題
1、關(guān)閉防火墻并設(shè)置開(kāi)機(jī)禁用
systemctl stop firewalld
systemctl disable firewalld
2、配置repo
cd /etc/yum.repos.d/
下載Docker repo
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
配置kubernetes repo
vim kubernetes.repo
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
enabled=1
查看是否配置成功yum repolist
3、配置gpg
wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
wget https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
rpm --import rpm-package-key.gpg
rpm --import yum-key.gpg
4、安裝docker-ce kubernetes
yum install docker-ce kubelet kubeadm kubectl -y
5、配置docker初始化
vi /usr/lib/systemd/system/docker.service
添加初始化環(huán)境變量
Environment="HTTPS_PROXY=http://www.ik8s.io:10080"
Environment="NO_PROXY=127.0.0.1/8,172.20.0.0/16"
6、啟動(dòng)docker設(shè)置開(kāi)機(jī)自啟動(dòng)
systemctl start docker
systemctl enable docker
7、忽略swap警報(bào),啟動(dòng)kubelet
vi /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
systemctl enable kubelet.service
systemctl start kubelet
8、下載k8s鏡像
1)、在github上創(chuàng)建庫(kù)
2)、克隆到本地然后創(chuàng)建Dockerfile
每個(gè)內(nèi)容如下
然后推送
3)、在docker hub上創(chuàng)建關(guān)聯(lián)github
4)、下載鏡像,執(zhí)行下列腳本
5)、初始化,
kubeadm init --kubernetes-version=v1.12.1 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=Swap
6)、等初始化完成后,配置用戶權(quán)限
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
然后添加node,在node機(jī)上執(zhí)行
kubeadm join 192.168.137.200:6443 --token cl60h7.y4o6vpizk64j5cz6 --discovery-token-ca-cert-hash sha256:1fda5b34ecd3abb044ff137e5e74afbeea95cfdb881038ed78961b8d2ef00017
7)、查看狀態(tài)
kubectl get cs
8)、查看nodes
kubectl get nodes
9)、安裝flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
等待一段時(shí)間使用kubectl get nodes查看節(jié)點(diǎn)的狀態(tài)為Ready,表示安裝成功
啟動(dòng)一個(gè)服務(wù)
加入node時(shí)如果報(bào)錯(cuò)dial tcp 10.96.0.1:443: getsockopt: no route to host --- kubernetes(k8s)DNS 服務(wù)反復(fù)重啟iptables規(guī)則亂了,通過(guò)下面命令糾正:
systemctl stop kubelet
systemctl stop docker
iptables --flush
iptables -tnat --flush
systemctl start kubelet
systemctl start docker
kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 --replicas=1
將服務(wù)暴露在集群外
kubectl expose deployment nginx-deploy --name=nginx --port=80 --target-port=80 --protocol=TCP
10)、查看pod
kubectl get pods
查看pod起在哪個(gè)節(jié)點(diǎn)上
kubectl get pods -o wide
查看pod有哪些標(biāo)簽
kubectl get pods --show-labels
查看命名空間中的pod
kubectl get pods --all-namespaces
如果Error、Pending、ImagePullBackOff、CrashLoopBackOff都屬于啟動(dòng)失敗,排查:
a、查看 /var/log/messages系統(tǒng)日志
b、kubectl describe pod kube-flannel-ds-amd64-bq6fp --namespace=kube-system 看出node1上flannel鏡像下載失敗,去node1上手動(dòng)下載鏡像
c、kubectl logs -f kube-flannel-ds-amd64-bq6fp -n kube-system kubedns
11)、刪除pod
kubectl delete pods <pod NAME>
(刪除后會(huì)自動(dòng)重新創(chuàng)建pod)
12)、查看services
kubectl get svc
查看services都有選擇哪些pod,根據(jù)標(biāo)簽
kubectl get svc -o wide
13)、創(chuàng)建一個(gè)容器并運(yùn)行,名字為nginx-deploy,鏡像,端口,使用一個(gè)pod
kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 --replicas=1
14)、進(jìn)入運(yùn)行中的pod
kubectl exec nginx-deploy-86bf78c77-kxtch -it sh
15)、查看deployment
kubectl get deployment
16)、查看容器運(yùn)行在那個(gè)node
kebuctl get node -o wide
17)、創(chuàng)建service,使用nginx-deploy容器,名稱,端口,暴露端口
kubectl expose deployment nginx-deploy --name=nginx --port=80 --target-port=80
18)、修改運(yùn)行實(shí)例的個(gè)數(shù)
kubectl scale --replicas=3 deployment myapp
19)、對(duì)實(shí)例進(jìn)行升級(jí)
kubectl set image deployment nginx-deploy nginx-deploy=nginx:1.17
20)、回滾升級(jí)
kubectl rollout undo deployment nginx-deploy
21)、修改svc
kubectl edit svc nginx-deploy
spec:type: NodePort 將type改為 NodePort
可是在集群外訪問(wèn)node IP