1. 核心組件node
2. kubernetes 經常使用命令nginx
kubectl cluster-info
kubectl run nginx-test --replicas=3 --labels='app=nginx' --image=nginx:latest --port=80 #使用kubectl run命令啓動一個pod,自定義名稱爲nginx-test,啓動了3個pod副本,並給pod打上標籤app=nginx,這個pod拉取docker鏡像nginx:latest,開放端口80
kubectl get po kubectl get pod kubectl get pods
kubectl get pods -l app kubectl get pods -l app=nginx
kubectl get pods -l app=nginx -o wide
kubectl describe pods <podname>
kubectl get deploy
kubectl get replicaset kubectl get rs
kubectl expose deploy nginx-test --port=8080 --target-port=80 --name=nginx-service #k8s集羣經過deploy來管理,導出名爲nginx-test的deploy,爲其建立名爲nginx-service的服務開放給外界,使外界能經過nginx-service來和nginx-test交互,外部端口爲8080,內部端口爲80
kubectl get svc
kubectl log <podname> #查看指定pod內容器的日誌 kubectl log -l app=nginx #查看標籤lable爲app=nginx下的pod的容器日誌
kubectl scale deploy nginx-test --replicas10 #經過kubectl scale將名爲nginx-test的deploy從新定義有10個副本pod
kubectl rollout status deploy nginx-test
pod和rs不能直接被刪除,其被deploy控制,即便刪除了某一pod,也會建立新的pod來對應配置pod副本數量,要想刪除pod,只能用刪除其deploy來刪除,或者變動pod副本配置縮容(如上)git
kubectl delete deploy nginx-test #刪除部署的deploy(刪除其對於的pod和rs) kubectl delete svc nginx-service #刪除建立的service
3. 應用建立部署yaml文件 github
tomsun28以後的k8s應用部署修改,都肯定使用apply形式部署更新,使用git版本控制建立資源,好處多多docker
kubectl apply -f nginx.yaml ##更新式建立資源,若是不存在此資源則建立,如存在改動則調整資源(推薦) kubectl delete -f nginx.yaml #資源(pod,deployment,service,replicaset...)刪除銷燬
nginx.yaml :
數據庫
# ----------------------nginx--------------------- # # ------nginx deployment------ # kind: Deployment apiVersion: apps/v1beta2 metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: 192.167.2.144:5000/nginx:latest ports: - containerPort: 80 --- # -------nginx-service--------- # apiVersion: v1 kind: Service metadata: name: nginx-service spec: type: NodePort ports: - port: 80 targetPort: 80 nodePort: 30001 selector: app: nginx
kubectl apply -f nginx.yaml
ubuntu
ubantu下用kubeadm搭建kubernetes集羣 api
官方安裝教程服務器
# apt-get update && apt-get install -y apt-transport-https
app
# curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
# cat << EOF >/etc/apt/sources.list.d/kubernetes.list deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF
# apt-get update && apt-get install -y kubelet kubeadm kubectl
指定版本爲:
# apt-get update && apt-get install -y kubelet=1.11.1-00 kubeadm=1.11.1-00 kubectl=1.11.1-00
sudo swapoff -a
# kubeadm config images list ##查詢當前kubeadm版本所需images # kubeadm config images pull ##拉取這些images k8s=v1.11.1所對應鏡像及版本: k8s.gcr.io/coredns:1.1.3 k8s.gcr.io/etcd-amd64:3.2.18 k8s.gcr.io/kube-apiserver-amd64:v1.11.1 k8s.gcr.io/kube-controller-manager-amd64:v1.11.1 k8s.gcr.io/kube-proxy-amd64:v1.11.1 k8s.gcr.io/kube-scheduler-amd64:v1.11.1 k8s.gcr.io/pause:3.1
kubeadm init --kubernetes-version=v1.11.1 --apiserver-advertise-address=116.196.81.106 --pod-network-cidr=10.244.0.0/16
--apiserver-advertise-address=<ip> 指定apiserver的訪問ip,ip默認爲當前虛擬機的默認網卡ip. 當ip爲內網地址時,k8s集羣只能搭建在網段內部,若是有需求經過外網ip來操做apiserver,須要在啓動集羣時添加可信參數 --apiserver-cert-extra-sans=116.196.81.106 將外網的ip添加進去. 當ip爲外網地址時,能夠實現不一樣網段的虛擬機組成k8s集羣(目前我就是這個須要,一個京東雲一個阿里雲),暫時還沒測這種跨公網的集羣性能咋樣,畢竟考慮到網速帶寬等不如內網,但有一個優點就是能夠整合不一樣的資源,不被同一雲商所束縛,jd掛了ali還能夠用.
kubeadm join 192.168.0.3:6443 --token q6gmgt.3dakenwttapw4n2o --discovery-token-ca-cert-hash sha256:dbf69119e962456c239c5f7821ee9a0db46fb643fc40da8776d4e032de072085
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
或者(root user): export KUBECONFIG=/etc/kubernetes/admin.conf
/proc/sys/net/bridge/bridge-nf-call-iptables
爲1sysctl net.bridge.bridge-nf-call-iptables=1
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/c5d10c8/Documentation/kube-flannel.yml
kubeadm init --pod-network-cidr=10.244.0.0/16
kubectl taint nodes --all node-role.kubernetes.io/master-
kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>
kubectl get nodes
kubeadm reset
參考來自
kubernetes官方部署文檔
轉載請註明 from tomsun28