zoukankan      html  css  js  c++  java
  • k8s系列---kubectl基础

    kubectl get pods  查看所有pods

    kubectl  get  services  查看services

    kubectl replace --filename=myweb-rc.yaml  根据该yaml更新pod可以修改副本数为0,删除pod

    docker ps -a   查看所有docker容器

    docker  attach 容器名     进入容器内

    kubectl  describe pod pod名字   查看该pod的详细信息

     http://blog.itpub.net/28916011/viewspace-2213957/

    k8s
    master/node
    	master : API Server ,Scheduler,Controller-Manager
    	node : kubelet,docker,kube-proxy
    
    Pod:
    	自主式Pod
    	控制器管理的Pod
    		ReplicationController(RC)
    		ReplicaSet
    		Deployment
    		StatefulSet
    		DaemonSet
    		Job,CronJob
    
    环境
    	master,etcd:172.18.0.67
    	node1:172.18.0.68
    	node2:172.18.0.69
    前提;
    	1:基于主机名通信:/etc/hosts
    	2:时间同步
    	3:关闭firewall和iptables.service
    	OS:Centos7.3 1611
    		   yum -y install ntp
    		   systemctl start ntpd
    		   systemctl enable ntpd
    		   systemctl stop firewalld
    		   systemctl disable firewalld
    		   
    		   vim /etc/hosts
    				172.16.100.64   master
    				172.16.100.65   node1
    				172.16.100.66   node2
    				
    		   wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    		   [root@master yum.repos.d]# cat kubernets.repo 
    				[kubernetes]
    				name=Kubernetes Repo
    				baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    				gpgcheck=0
    			scp kubernets.repo  docker-ce.repo  node1:/etc/yum.repos.d
    			scp kubernets.repo  docker-ce.repo  node2:/etc/yum.repos.d
    			yum install docker-ce kubelet kubeadm  kubectl
    
    	
    	
    	
    	
    		   vim /usr/lib/systemd/system/docker.service 
    				[service]增加
    				Environment="HTTPS_PROXY=http://www.ik8s.io:10080"
    				Environment="NO_PROXY=127.0.0.0/8,172.16.0.0/16"
    		   systemctl daemon-reload
    		   systemctl restart docker
    		   systemctl status docker
    		   docker info
    		   确保下面两个为1
    		   [root@master ~]# cat /proc/sys/net/bridge/bridge-nf-call-ip6tables 
    			1
    		   [root@master ~]# cat /proc/sys/net/bridge/bridge-nf-call-iptables 
    			1
    	
    	
    		systemctl status kubelet有出错信息,需要停掉kubelet,然后设置开机启动,docker也设成开机启动,出不出错都要操作,后面初始化出错了
    		然后初始化
    		初始化的时候出错。因为swap选项
    		kubeadm  init --help 查看帮助信息, --kubernetes-version string 指定版本,默认为当前稳定版
    		kubeadm  init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12
    		如果出错有swap,不支持。需要的操作:
    		vim /etc/sysconfig/kubelet
    		KUBELET_EXTRA_ARGS="--fail-swap-on=false"
    		然后重新初始化,添加忽略参数
    	    kubeadm  init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap
    		妈逼的代理不成功,总下载失败,最后搜到可以这么干--image-repository registry.aliyuncs.com/google_containers 配置文件取消掉代理,重新reload,重启docker
    		kubeadm  init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.13.1  --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap
    		安装完成结尾会有token和哈希码,一定要保存下来。不然以后就麻烦了,就是类似下面这串。
    		kubeadm join 172.16.100.64:6443 --token yqzclr.ztxgcumdlqzjbpl4 --discovery-token-ca-cert-hash sha256:b5119e9530e8bd01b0317e19f3ca14835ad457f3d33a5de963e7a8fa33f3a541
    		
    		
    		接下来等master安装完回到master操作
    		[root@master ~]#  mkdir -p $HOME/.kube
    	    [root@master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    		
    		[root@master ~]# kubectl get cs     查询组件状态健康信息
    		
    		二:部署网络插件flannel   https://github.com/coreos/flannel
    		kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    		部署完成后稍等一分钟
    		kubectl get nodes  可以发现master状态Ready了。
    		kubectl get pods -n kube-system   会发现flannel的pod
    		
    		客户端node操作
    		yum -y install docker-ce kubelet kubeadm
    		
    		master执行 拷贝配置文件到两台node上
            scp /usr/lib/systemd/system/docker.service node1:/usr/lib/systemd/system/docker.service
            scp /etc/sysconfig/kubelet node1:/etc/sysconfig/kubelet
    		
    		客户端node操作
    		yum -y install docker-ce kubelet kubeadm
    	    systemctl enable docker kubelet
    		systemctl daemon-reload
    	    systemctl start docker 
    	    docker info
    		加入到master,就是之前复制的那一串,然后加上忽略Swap
    	    kubeadm join 172.16.100.64:6443 --token yqzclr.ztxgcumdlqzjbpl4 --discovery-token-ca-cert-hash sha256:b5119e9530e8bd01b0317e19f3ca14835ad457f3d33a5de963e7a8fa33f3a541 --ignore-preflight-errors=Swap
    		
    		以上安装全部完成
    		
    		
    		
    		
    安装配置
    	1:etcd cluster 仅master节点
    	2:flannel 集群的所有节点
    	3:配置k8s的master 仅master节点
    		kubernets-master
    		启动的服务:
    			kube-apiserver kube-scheduler kube-controller-manager
    	4:配置k8s的各Node节点
    		kubernets-node
    		
    		先设定启动docker服务
    		启动k8s的服务:
    			kube-proxy,kubelte
    			
    kubeadm
    	1:master,node:安装kubelet kubeadm docker
    	2:master:kubeadm init
    

      

     day2      http://blog.itpub.net/28916011/viewspace-2213957/

    k8s相关介绍
    
    资源:对象
    	workload:Pod,ReplicaSet,Deployment,StatefulSet,Job,Cronjob...
    	服务发现及均衡:Service,Ingress...
    	配置与存储:Volume,CSI,
    	    ConfigMap,Secret
    	集群级资源:
    		NameSpace,Node,Role,ClusterRole,RoleBind,ClusterRoleBind
    	元数据型资源
    		HPA,PodTemplate,LimitRange,
    	
    		
    创建资源的配置清单
    	apiVersion: group/version
    		$ kubectl api-version
    	kind:资源类别
    	metadata:元数据
    		name
    		namespace
    		labels
    		annotations
    		每个资源的引用PATH
    			/api/GROUP/VERSION/namespace/NAMESPACE/TYPE/NAME
    			
    	spec: 期望状态 disired state
    	status:当前状态  current state,本字段由k8s集群维护
    	
    		
    	Pod 资源
    		spec.containers <[]object>
    		
    		- name <string>
    		  image <string>   //如果是latest标签,就会一直下载,但是下面如果改成ifnotpresent 那就不会一直下不会使用默认的aways
    		  imagePullPolicy <string>
    		    Always,Never,IfNotPresent    //always总是下载,Never不下载,ifnotpresent 如果不存在就下载
    		  
    		  
    		  
    标签操作
    	查询某个pod,node标签,
    	[root@master k8syaml]# kubectl get pods pod-demo --show-labels
    	查询app标签的pod
    	kubectl get pods -l app --show-labels  
    	添加标签为某个pod
    	kubectl label pods pod-demo relase=beata
    	修改某个标签的值
    	kubectl label pods pod-demo relase=stable --overwrite
    	
    	标签选择器
    		等值关系:=,==,!=
    		集合关系:key in (value1,value2);key notin (value1,value2)
    		
    	查询relase等于stable,并且app=myapp标签的pod
    	[root@master k8syaml]# kubectl get pods -l relase=stable,app=myapp	
    	基于集合的查询,relase如果等于stable或者beta的pod
    	[root@master k8syaml]# kubectl get pods -l "relase in (stable,beta)"
    	
    	基于节点的
    	[root@master k8syaml]# kubectl get nodes  --show-labels
    	NAME     STATUS   ROLES    AGE     VERSION   LABELS
    	master   Ready    master   2d22h   v1.13.1   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=master,node-role.kubernetes.io/master=
    	node1    Ready    <none>   2d20h   v1.13.1   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=node1
    	node2    Ready    <none>   2d20h   v1.13.1   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=node2
    	[root@master k8syaml]# kubectl label nodes node1 disktype=ssd
    	node/node1 labeled
    	[root@master k8syaml]# kubectl get nodes  --show-labels
    	NAME     STATUS   ROLES    AGE     VERSION   LABELS
    	master   Ready    master   2d22h   v1.13.1   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=master,node-role.kubernetes.io/master=
    	node1    Ready    <none>   2d20h   v1.13.1   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,disktype=ssd,kubernetes.io/hostname=node1
    	node2    Ready    <none>   2d20h   v1.13.1   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=node2
    
    
    	
    	nodeSelector: 指定pod运行在标签哪个节点,下面是运行在标签为disktype: ssd的nod上
    	[root@master k8syaml]# cat demo.yaml 
    	apiVersion: v1
    	kind: Pod
    	metadata:
    		name: pod-demo
    		namespace: default
    		labels:
    			app: myapp
    			tier: forntend
    	spec:
    		containers:
    		- name: myapp
    		  image: ikubernetes/myapp:v1
    		- name: busybox
    		  image: busybox:latest
    		  command: 
    		  - "/bin/sh"
    		  - "-c"
    		  - "sleep 3600"
    		nodeSelector:
    			disktype: ssd
    			
    			
    	
    	nodeName:运行在指定的节点上
    	annotations:与label不同的地方在于,它不能用于挑选资源对象,仅用于为对象提供“元数据”
    	[root@master k8syaml]# vim demo.yaml 
    	apiVersion: v1
    	kind: Pod
    	metadata:
    		name: pod-demo
    		namespace: default
    		labels:
    			app: myapp
    			tier: forntend
    		annotations:
    			lihongxing.com/created-by: cluster admin
    	spec:
    		containers:
    		- name: myapp
    		  image: ikubernetes/myapp:v1
    		- name: busybox
    		  image: busybox:latest
    		  command:
    		  - "/bin/sh"
    		  - "-c"
    		  - "sleep 3600"
    
    		nodeSelector:
    			disktype: ssd
    			
    	以上会添加lihongxing.com/created-by: cluster admin的annotations资源注解,用describe可以查看到
    	[root@master k8syaml]# kubectl describe pods pod-demo
    
    		  
    Pod生命周期:http://blog.itpub.net/28916011/viewspace-2213957/
    	状态:Pending/Running/Failed/Succeeded/Unknown
    	Pod生命周期的重要行为:
    		初始化容器
    		容器探测:
    			liveness 存活性探针
    			readiness  就绪性探针
    	restartpolicy 重启策略:
    		Always,OnFailure,Never,Default to Always
    	探针类型三种:
    		ExecAction,TcpSocketAction,HttpGetAction
    		
    	[root@master k8syaml]# vim liveness.yaml
    	apiVersion: v1
    	kind: Pod
    	metadata:
    		name: liveness-exec.pod
    		namespace: default
    	spec:
    		containers:
    		- name: liveness-exec-container
    		  image: busybox:latest
    		  imagePullPolicy: IfNotPresent
    		  command: ["/bin/sh","-c","toch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 3600"]
    		  livenessProbe:
    			  exec:
    				  command: ["test","-e","/tmp/healthy"]
    			  initialDelaySeconds: 1
    			  periodSeconds: 3	
    		
    

      

     

  • 相关阅读:
    Play Framework + ReactiveMongo 环境搭建
    阿里前端二面(笔试/机试)总结
    ES 6 新特性整理
    Javascript Dom 相关知识整理
    Ajax、CORS、Comet和WebSocket
    XHTML 1.0 标签语义
    Javascript知识整理
    Javascript性能优化(一)
    CSS知识整理
    绘制标准的d3图表
  • 原文地址:https://www.cnblogs.com/dribs/p/9082458.html
Copyright © 2011-2022 走看看