移動(dòng)端網(wǎng)站模板怎么做友情鏈接交換的作用在于
文章目錄
- 測(cè)試環(huán)境
- kubernetes安裝
- 環(huán)境配置
- 安裝程序
- 下載鏡像
- 初始化
- reset環(huán)境
- init構(gòu)建kubernetes
- 配置授權(quán)信息
- 配置網(wǎng)絡(luò)插件
- 查看狀態(tài)
- 簡(jiǎn)單實(shí)例測(cè)試
測(cè)試環(huán)境
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
kubernetes安裝
參考kuberneter文檔
加入節(jié)點(diǎn)到當(dāng)前kubernetes集群可根據(jù)上述文檔加入
環(huán)境配置
swapoff -a
setenforce 0
rm -rf $HOME/.kube #已安裝過(guò)
安裝程序
#安裝docker
yum install docker -y#安裝kubeadm、kubectl
#添加下載源:
cat << EOF >/etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF# 安裝指定版本的kubeadm kubectl kubelet
# 查詢所有版本:yum list available kubeadm --showduplicates
# 比如此處安裝1.23.0的kubernetes, 需要安裝對(duì)應(yīng)的版本
# 否則會(huì)報(bào)錯(cuò), 如:
# this version of kubeadm only supports deploying clusters with the control plane version >= 1.27.0. Current version: v1.23.0
yum install kubeadm-1.23.0-0 kubectl-1.23.0-0 kubelet-1.23.0-0 -y
下載鏡像
#使用kubeadm初始化Master節(jié)點(diǎn)
#執(zhí)行命令下列命令查看需要下載的docker鏡像及相應(yīng)版本,這里的名字必須與后面的docker images中顯示的名字一樣,否則初始化時(shí)會(huì)失敗:
kubeadm config images list#生成腳本,并將其中的版本信息填入到下列腳本:
cat << EOF >download.sh
#!/bin/bash
set -eKUBE_VERSION=v1.23.0
KUBE_PAUSE_VERSION=3.6
ETCD_VERSION=3.5.1-0
CORE_DNS_VERSION=v1.8.6GCR_URL=k8s.gcr.io
ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containersimages=(kube-proxy:${KUBE_VERSION}kube-scheduler:${KUBE_VERSION}kube-controller-manager:${KUBE_VERSION}kube-apiserver:${KUBE_VERSION}pause:${KUBE_PAUSE_VERSION}etcd:${ETCD_VERSION}coredns:${CORE_DNS_VERSION}
)for imageName in ${images[@]} ; dodocker pull ${ALIYUN_URL}/$imageNamedocker tag ${ALIYUN_URL}/$imageName ${GCR_URL}/$imageNamedocker rmi ${ALIYUN_URL}/$imageName
done
# 額外tag一下
docker tag ${GCR_URL}/coredns:v1.8.6 ${GCR_URL}/coredns/coredns:v1.8.6
EOF
初始化
reset環(huán)境
# 如果安裝過(guò)則進(jìn)行reset
kubeadm reset
init構(gòu)建kubernetes
#使用如下命令查看初始化時(shí)的默認(rèn)配置:
kubeadm config print init-defaults >init.yaml
#初始化,#可根據(jù)需要修改上一步獲取到的配置,如修改kubernetes版本,以及其它ip等配置
kubeadm init --config=init.yaml# 建議直接使用此命令
kubeadm init --kubernetes-version=1.23.0 --node-name=master
異常分析:
這一步驟容易出現(xiàn)錯(cuò)誤,可以根據(jù)提示進(jìn)行分析,kubeadm init增加參數(shù)–v=5可以查看詳細(xì)信息,如果這里還沒(méi)有找到問(wèn)題原因,則通過(guò)journalctl -xeu kubelet查找問(wèn)題
cgroup driver報(bào)錯(cuò):
# error: Failed to run kubelet" err="failed to run Kubelet: misconfiguration: kubelet cgroup driver: \"systemd\" is different from docker cgroup driver: \"cgroupfs\""# 創(chuàng)建配置文件 kubeadm-config.yaml, 并配置version和cgroupDriver
kind: ClusterConfiguration
apiVersion: kubeadm.k8s.io/v1beta3
kubernetesVersion: v1.23.0
---
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: cgroupfs# kubeadm reset后重新kubeadm init
kubeadm init --config=kubeadm-config.yaml
配置授權(quán)信息
上一步完成后,會(huì)有提示,可根據(jù)提示配置授權(quán)信息
也可加入worker節(jié)點(diǎn)到集群
提示信息:
Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.confYou should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/Then you can join any number of worker nodes by running the following on each as root:kubeadm join 172.20.20.114:6443 --token s8qj24.jken8zoqh8hqhneq \--discovery-token-ca-cert-hash sha256:dd5f58c9ad1113daf894c79a61cadd67ded2c89ee99611ebd4f7e50dc3d89658
如果忘記token和sha256可通過(guò)命令查詢
# 查詢token
kubeadm token list
# sha256
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
配置網(wǎng)絡(luò)插件
參考kuberneter文檔
# 下載,也可以用wget https://raw.githubusercontent.com/projectcalico/calico/v3.27.3/manifests/calico.yaml
curl https://raw.githubusercontent.com/projectcalico/calico/v3.27.3/manifests/calico.yaml -O
# apply
kubectl apply -f calico.yaml
查看狀態(tài)
上一步會(huì)去拉鏡像等操作,可能需要一些時(shí)間
#查看是否安裝成功,默認(rèn)生成namespace kube-system
[root@localhost kubernetes]# kubectl get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-5bd579bf9c-9j8nx 1/1 Running 0 3m3s
kube-system calico-node-7b2cv 1/1 Running 0 3m3s
kube-system coredns-64897985d-lrsg4 1/1 Running 0 15m
kube-system coredns-64897985d-qkjdz 1/1 Running 0 15m
kube-system etcd-master 1/1 Running 0 15m
kube-system kube-apiserver-master 1/1 Running 0 15m
kube-system kube-controller-manager-master 1/1 Running 0 15m
kube-system kube-proxy-hgktb 1/1 Running 0 15m
kube-system kube-scheduler-master 1/1 Running 0 15m
# node ready
[root@localhost kubernetes]# kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 26m v1.23.0
簡(jiǎn)單實(shí)例測(cè)試
由于上一步只是創(chuàng)建了一個(gè)節(jié)點(diǎn),即只有一個(gè)主節(jié)點(diǎn),kubernetes默認(rèn)時(shí)不再master上運(yùn)行pod的,所以需要先配置一下,允許在master上運(yùn)行pod
#單節(jié)點(diǎn),設(shè)置master節(jié)點(diǎn)也可以運(yùn)行Pod,kubernetes官方默認(rèn)策略是worker節(jié)點(diǎn)運(yùn)行Pod,master節(jié)點(diǎn)不運(yùn)行Pod。如果只是為了開(kāi)發(fā)或者其他目的而需要部署單節(jié)點(diǎn)集群,可以通過(guò)以下的命令設(shè)置:
kubectl taint nodes --all node-role.kubernetes.io/master-
#kubectl taint node master node-role.kubernetes.io/master="":NoSchedule #將 Master 恢復(fù)成 Master Only 狀態(tài)
創(chuàng)建nginx-deployment控制器yaml文件
cat << EOF >nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentlabels:app: nginx
spec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.15.4ports:- containerPort: 80
EOF
創(chuàng)建nginx-service服務(wù)yaml文件
cat << EOF >nginx-service.yaml
apiVersion: v1
kind: Service
metadata:name: nginx-servicelabels:app: nginx
spec:type: NodePortports:- port: 80targetPort: 80nodePort: 30949selector:app: nginx
EOF
根據(jù)已創(chuàng)建的yaml文件生成deployment、service,這里由于未指定命名空間,所有都在default命名空間創(chuàng)建,若在其他空間創(chuàng)建的,可以增加參數(shù)-n
kubectl apply -f nginx-deployment.yaml
kubectl apply -f nginx-service.yaml
查看是否成功
kubectl get svc -n default
kubectl get deploy
kubectl get pod
結(jié)果示例
[root@localhost ~]# kubectl get svc -n default
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d3h
nginx-service NodePort 10.97.200.51 <none> 80:30949/TCP 101s
[root@localhost ~]# kubectl get deploy -n default
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 1/1 1 1 2m11s
[root@localhost ~]# kubectl get pod -n default
NAME READY STATUS RESTARTS AGE
nginx-deployment-746ccc65d8-pwcqb 1/1 Running 0 2m13s
可根據(jù)上述生成的nginx-service.yaml中的nodePort得到服務(wù)開(kāi)放端口30949,然后通過(guò)如下命令訪問(wèn):
[root@localhost ~]# curl localhost:30949
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>
查看pod日志,根據(jù)命令kubectl get pod -n default查看pod名字,然后使用 kubectl -n default logs -f 查看日志
[root@localhost ~]# kubectl get pod -n default
NAME READY STATUS RESTARTS AGE
nginx-deployment-746ccc65d8-pwcqb 1/1 Running 0 8m12s
[root@localhost ~]# kubectl -n default logs -f nginx-deployment-746ccc65d8-pwcqb