k8s集羣搭建-新-以及k8s相關命令詳情

修改主機名
hostnamectl set-hostname master00 node

hostnamectl set-hostname node1 python

hostnamectl set-hostname node2 全部集羣主機都改好,主機名自定義mysql

修改/etc/hosts文件,全部主機都修改
192.168.5.100 master00
192.168.5.101 node01
192.168.5.102 node02linux

swapoff -a 

sed -i 's/.*swap.*/#&/' /etc/fstab

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl -p /etc/sysctl.conf

systemctl stop firewalld

systemctl disable firewalld

setenforce  0 

sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux 

sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

cat <<EOF >  /etc/yum.repos.d/kubernetes.repo 
[kubernetes]
name=kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
enable=1
EOF

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum install docker-ce -y

systemctl enable docker

systemctl start docker

yum -y install kubelet kubeadm  kubectl kubernetes-cni

systemctl enable kubelet.service

systemctl start kubelet

kubeadm config print init-defaults > kubeadm.conf

#注:sed這一步操做可自行進入 kubeadm.conf中修改自定義版本,個人是v1.18.2
sed -i s/v1.14.0/v1.14.3/ kubeadm.confnginx

kubeadm config images pull --config kubeadm.conf

kubeadm init --kubernetes-version=v1.18.0 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.111.128

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml
完了以後記住下面兩行內容,由於node加入集羣須要用到
kubeadm join 192.168.5.100:6443 --token j2tngs.y5fzfd9ph5ppdien \
    --discovery-token-ca-cert-hash sha256:b2a2b249a16aaf2f1784ab6206fb6abd279e8c70cf0b470c7fd004f1b8fdb481
查看集羣狀態
kubectl get cs

NAME                 STATUS         MESSAGE             ERROR
controller-manager   Healthy      ok                  
scheduler                  Healthy      ok                  
etcd-0                       Healthy      {"health":"true"}   成功
kubectl get pods --all-namespaces

NAMESPACE     NAME                               READY   STATUS    RESTARTS   AGE
kube-system   coredns-fb8b8dccf-khsgh            1/1     Running   0          2m2s
kube-system   coredns-fb8b8dccf-rrxgb             1/1     Running   0          2m2s
kube-system   etcd-master00                             1/1     Running   0          78s
kube-system   kube-apiserver-master00            1/1     Running   0          73s
kube-system   kube-controller-manager-master 00   1/1     Running   0          79s
kube-system   kube-flannel-ds-amd64-xpr74     1/1     Running   0          2m2s
kube-system   kube-proxy-dhvcr                         1/1     Running   0          2m2s
kube-system   kube-scheduler-master00            1/1     Running   0          57s

若是STATUS不是Running 請等幾分鐘再查看,仍是沒有,查看報錯日誌 cat /var/log/messages,而後找失敗緣由git

master部署完了,下面是node部署sql

swapoff -a 

sed -i 's/.*swap.*/#&/' /etc/fstab

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl -p /etc/sysctl.conf

systemctl stop firewalld

systemctl disable firewalld

setenforce  0 

sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux 

sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

cat <<EOF >  /etc/yum.repos.d/kubernetes.repo 
[kubernetes]
name=kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
enable=1
EOF

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum install docker-ce -y

systemctl enable docker

systemctl start docker

yum -y install kubelet kubeadm  kubectl kubernetes-cni

systemctl enable kubelet.service

systemctl start kubelet

kubeadm config print init-defaults > kubeadm.conf
#注:sed這一步操做可自行進入 kubeadm.conf中修改自定義版本,個人是v1.18.2
sed -i s/v1.14.0/v1.14.3/  kubeadm.conf

kubeadm config images pull --config kubeadm.conf
部署k8s控制檯rancher(在加入Node 節點前部署rancher)
docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:latest

在rancher中導入現有k8s集羣
k8s集羣搭建-新-以及k8s相關命令詳情docker

k8s集羣搭建-新-以及k8s相關命令詳情

k8s集羣搭建-新-以及k8s相關命令詳情

在K8S集羣執行
kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user admin
curl --insecure -sfL https://192.168.235.129/v3/import/2422pk4x5fk9pv8rznqj9mr8r2mvphdxsbqxjpmgc4qsml7hdtzgsc.yaml | kubectl apply -f -

而後加入集羣:經過剛剛master的記錄加入

kubeadm join 192.168.5.100:6443 --token j2tngs.y5fzfd9ph5ppdien \
    --discovery-token-ca-cert-hash sha256:b2a2b249a16aaf2f1784ab6206fb6abd279e8c70cf0b470c7fd004f1b8fdb481

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the control-plane to see this node join the cluster  成功加入集羣

而後全部的node依次加入集羣shell

查看集羣狀態
kubectl get csjson

查看集羣節點
kubectl get nodes

新生成加入集羣密鑰

kubeadm token create
kubeadm token list
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
kubeadm join 192.168.5.100:6443 --token j2tngs.y5fzfd9ph5ppdien \
    --discovery-token-ca-cert-hash sha256:b2a2b249a16aaf2f1784ab6206fb6abd279e8c70cf0b470c7fd004f1b8fdb481

k8s一些相關命令:
#查看全部namespace的pods運行狀況
#kubectl get pods --all-namespaces
#查看具體pods,記得後邊跟namespace名字哦
kubectl get pods kubernetes-dashboard-76479d66bb-nj8wr --namespace=kube-system
查看pods具體信息
kubectl get pods -o wide kubernetes-dashboard-76479d66bb-nj8wr --namespace=kube-system
查看集羣健康狀態
kubectl get cs
獲取全部deployment
kubectl get deployment --all-namespaces
列出該 namespace 中的全部 pod 包括未初始化的
kubectl get pods --include-uninitialized
查看deployment()
kubectl get deployment nginx-app
查看rc和servers
kubectl get rc,services
查看pods結構信息(重點,經過這個看日誌分析錯誤)
對控制器和服務,node一樣有效
kubectl describe pods xxxxpodsname --namespace=xxxnamespace
其餘控制器相似吧,就是kubectl get 控制器 控制器具體名稱
查看pod日誌
kubectl logs $POD_NAME
查看pod變量
kubectl exec my-nginx-5j8ok -- printenv | grep SERVICE
集羣
kubectl get cs # 集羣健康狀況
kubectl cluster-info # 集羣核心組件運行狀況
kubectl get namespaces # 表空間名
kubectl version # 版本
kubectl api-versions # API
kubectl get events # 查看事件
kubectl get nodes //獲取所有節點
kubectl delete node k8s2 //刪除節點
kubectl rollout status deploy nginx-test


建立
kubectl create -f ./nginx.yaml # 建立資源
kubectl create -f . # 建立當前目錄下的全部yaml資源
kubectl create -f ./nginx1.yaml -f ./mysql2.yaml # 使用多個文件建立資源
kubectl create -f ./dir # 使用目錄下的全部清單文件來建立資源
kubectl create -f https://git.io/vPieo # 使用 url 來建立資源
kubectl run -i --tty busybox --image=busybox ----建立帶有終端的pod
kubectl run nginx --image=nginx # 啓動一個 nginx 實例
kubectl run mybusybox --image=busybox --replicas=5 ----啓動多個pod
kubectl explain pods,svc # 獲取 pod 和 svc 的文檔


更新
kubectl rolling-update python-v1 -f python-v2.json # 滾動更新 pod frontend-v1
kubectl rolling-update python-v1 python-v2 --image=image:v2 # 更新資源名稱並更新鏡像
kubectl rolling-update python --image=image:v2 # 更新 frontend pod 中的鏡像
kubectl rolling-update python-v1 python-v2 --rollback # 退出已存在的進行中的滾動更新
cat pod.json | kubectl replace -f - # 基於 stdin 輸入的 JSON 替換 pod
強制替換,刪除後從新建立資源。會致使服務中斷。
kubectl replace --force -f ./pod.json
爲 nginx RC 建立服務,啓用本地 80 端口鏈接到容器上的 8000 端口
kubectl expose rc nginx --port=80 --target-port=8000


更新單容器 pod 的鏡像版本(tag)到 v4
kubectl get pod nginx-pod -o yaml | sed 's/(image: myimage):.*$/\1:v4/' | kubectl replace -f -
kubectl label pods nginx-pod new-label=awesome # 添加標籤
kubectl annotate pods nginx-pod icon-url=http://goo.gl/XXBTWq # 添加註解
kubectl autoscale deployment foo --min=2 --max=10 # 自動擴展 deployment 「foo」


編輯資源
kubectl edit svc/docker-registry # 編輯名爲 docker-registry 的 service
KUBE_EDITOR="nano" kubectl edit svc/docker-registry # 使用其它編輯器


動態伸縮pod
kubectl scale --replicas=3 rs/foo # 將foo副本集變成3個
kubectl scale --replicas=3 -f foo.yaml # 縮放「foo」中指定的資源。
kubectl scale --current-replicas=2 --replicas=3 deployment/mysql # 將deployment/mysql從2個變成3個
kubectl scale --replicas=5 rc/foo rc/bar rc/baz # 變動多個控制器的數量
kubectl rollout status deploy deployment/mysql # 查看變動進度


刪除
kubectl delete -f ./pod.json # 刪除 pod.json 文件中定義的類型和名稱的 pod
kubectl delete pod,service baz foo # 刪除名爲「baz」的 pod 和名爲「foo」的 service
kubectl delete pods,services -l name=myLabel # 刪除具備 name=myLabel 標籤的 pod 和 serivce
kubectl delete pods,services -l name=myLabel --include-uninitialized # 刪除具備 name=myLabel 標籤的 pod 和 service,包括還沒有初始化的
kubectl -n my-ns delete po,svc --all # 刪除 my-ns namespace下的全部 pod 和 serivce,包括還沒有初始化的
kubectl delete pods prometheus-7fcfcb9f89-qkkf7 --grace-period=0 --force 強制刪除


交互
kubectl logs nginx-pod # dump 輸出 pod 的日誌(stdout)
kubectl logs nginx-pod -c my-container # dump 輸出 pod 中容器的日誌(stdout,pod 中有多個容器的狀況下使用)
kubectl logs -f nginx-pod # 流式輸出 pod 的日誌(stdout)
kubectl logs -f nginx-pod -c my-container # 流式輸出 pod 中容器的日誌(stdout,pod 中有多個容器的狀況下使用)
kubectl run -i --tty busybox --image=busybox -- sh # 交互式 shell 的方式運行 pod
kubectl attach nginx-pod -i # 鏈接到運行中的容器
kubectl port-forward nginx-pod 5000:6000 # 轉發 pod 中的 6000 端口到本地的 5000 端口
kubectl exec nginx-pod -- ls / # 在已存在的容器中執行命令(只有一個容器的狀況下)
kubectl exec nginx-pod -c my-container -- ls / # 在已存在的容器中執行命令(pod 中有多個容器的狀況下)
kubectl top pod POD_NAME --containers # 顯示指定 pod和容器的指標度量


調度配置$ kubectl cordon k8s-node # 標記 my-node 不可調度$ kubectl drain k8s-node # 清空 my-node 以待維護$ kubectl uncordon k8s-node # 標記 my-node 可調度$ kubectl top node k8s-node # 顯示 my-node 的指標度量$ kubectl cluster-info dump # 將當前集羣狀態輸出到 stdout $ kubectl cluster-info dump --output-directory=/path/to/cluster-state # 將當前集羣狀態輸出到 /path/to/cluster-state#若是該鍵和影響的污點(taint)已存在,則使用指定的值替換$ kubectl taint nodes foo dedicated=special-user:NoSchedule

相關文章
相關標籤/搜索